Exalted quests rework.
Contributed by Sero.
This commit is contained in:
@@ -23,6 +23,7 @@ import org.l2jmobius.gameserver.enums.QuestType;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||
@@ -51,6 +52,7 @@ public class Q10589_WhereFatesIntersect extends Quest
|
||||
};
|
||||
// Item
|
||||
private static final int MONSTER_DROP = 80853; // Undead Blood
|
||||
private static final ItemHolder SOE_HERPHAH = new ItemHolder(80857, 1); // Scroll of Escape: Herphah
|
||||
// Misc
|
||||
private static final int REQUIRED_DROP_COUNT = 200;
|
||||
private static final int KILLING_NPCSTRING_ID1 = NpcStringId.LV_85_WHERE_FATES_INTERSECT_IN_PROGRESS.getId();
|
||||
@@ -90,13 +92,13 @@ public class Q10589_WhereFatesIntersect extends Quest
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
{
|
||||
case "34505-01.htm": // TARTI
|
||||
case "34505-01.htm":
|
||||
case "34505-02.htm":
|
||||
case "34505-04.html":
|
||||
case "34362-02.html": // HERPHAH
|
||||
case "34362-02.html":
|
||||
case "34362-05.html":
|
||||
case "30137-02.html": // VOLLODOS
|
||||
case "34513-02.html": // JOACHIM
|
||||
case "30137-02.html":
|
||||
case "34513-02.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
@@ -252,6 +254,7 @@ public class Q10589_WhereFatesIntersect extends Quest
|
||||
giveItemRandomly(player, npc, MONSTER_DROP, 1, REQUIRED_DROP_COUNT, 1, true);
|
||||
if ((getQuestItemsCount(player, MONSTER_DROP) >= REQUIRED_DROP_COUNT) && (player.getLevel() >= 95))
|
||||
{
|
||||
giveItems(killer, SOE_HERPHAH);
|
||||
qs.setCond(FINISH_COND, true);
|
||||
}
|
||||
|
||||
|
@@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.enums.QuestSound;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||
@@ -56,6 +57,7 @@ public class Q10590_ReawakenedFate extends Quest
|
||||
};
|
||||
// Item
|
||||
private static final int VAMPIRE_ICHOR = 80854; // Vampire Ichor - monster drop
|
||||
private static final ItemHolder SOE_JOACHIM = new ItemHolder(80858, 1);
|
||||
// Rewards
|
||||
private static final int ACHIEVEMENT_BOX = 80909;
|
||||
private static final int RUBIN_LV2 = 38856;
|
||||
@@ -293,6 +295,7 @@ public class Q10590_ReawakenedFate extends Quest
|
||||
if ((getQuestItemsCount(player, VAMPIRE_ICHOR) >= 500) && (player.getLevel() >= 99))
|
||||
{
|
||||
qs.setCond(3, true);
|
||||
giveItems(player, SOE_JOACHIM);
|
||||
}
|
||||
sendNpcLogList(player);
|
||||
}
|
||||
|
@@ -21,10 +21,10 @@ import org.l2jmobius.gameserver.enums.QuestSound;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||
import org.l2jmobius.gameserver.model.quest.State;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
@@ -101,7 +101,7 @@ public class Q10591_NobleMaterial extends Quest
|
||||
{
|
||||
case "34513-02.htm":
|
||||
case "34513-07.html":
|
||||
case "34513-04.html":
|
||||
case "34513-04.htm":
|
||||
case "34014-03.html":
|
||||
case "34362-03.html":
|
||||
case "33907-03.html":
|
||||
|
@@ -16,7 +16,12 @@
|
||||
*/
|
||||
package quests.Q10811_ExaltedOneWhoFacesTheLimit;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.data.xml.CategoryData;
|
||||
import org.l2jmobius.gameserver.enums.CategoryType;
|
||||
import org.l2jmobius.gameserver.enums.ClassId;
|
||||
import org.l2jmobius.gameserver.enums.Movie;
|
||||
import org.l2jmobius.gameserver.enums.Race;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
@@ -34,30 +39,71 @@ import org.l2jmobius.gameserver.model.quest.State;
|
||||
*/
|
||||
public class Q10811_ExaltedOneWhoFacesTheLimit extends Quest
|
||||
{
|
||||
// Npc
|
||||
// NPC
|
||||
private static final int LIONEL = 33907;
|
||||
// Items
|
||||
private static final int LIONEL_HUNTER_MISSING_LIST = 45627;
|
||||
private static final int ELIKIA_CERTIFICATE = 45623;
|
||||
private static final int MYSTERIOUS_BUTLER_CERTIFICATE = 45624;
|
||||
private static final int SIR_ERIC_RODEMAI_CERTIFICATE = 45626;
|
||||
private static final int GALLADUCI_RODEMAI_CERTIFICATE = 45625;
|
||||
private static final int SPELLBOOK_DIGNITY_OF_THE_EXALTED = 45922;
|
||||
private static final int SLAYERS_PROOF = 45871;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 99;
|
||||
private static final int MIN_LEVEL = 100;
|
||||
private static final int MIN_COMPLETE_LEVEL = 101;
|
||||
private static final int SLAYERS_PROOF_NEEDED = 40000;
|
||||
// Reward
|
||||
private static final int SPELLBOOK_DIGNITY_OF_THE_EXALTED = 45922;
|
||||
private static final int EXATLED_HEAVY_ARMOR_PACK = 81203;
|
||||
private static final int EXATLED_LIGHT_ARMOR_PACK = 81204;
|
||||
private static final int EXATLED_ROBE_PACK = 81205;
|
||||
private static final int FIRST_EXALTED_QUEST_REWARD_PHYSICAL = 81207;
|
||||
private static final int FIRST_EXALTED_QUEST_REWARD_MAGIC = 81208;
|
||||
private static final int EXALTED_CUTTER = 81157;
|
||||
private static final int EXALTED_SLASHER = 81158;
|
||||
private static final int EXALTED_AVENGER = 81159;
|
||||
private static final int EXALTED_FIGHTER = 81160;
|
||||
private static final int EXALTED_STROMER = 81161;
|
||||
private static final int EXALTED_THROWER = 81162;
|
||||
private static final int EXALTED_SHOOTER = 81163;
|
||||
private static final int EXALTED_BUSTER = 81164;
|
||||
private static final int EXALTED_CASTER = 81165;
|
||||
// private static final int EXALTED_RETIBUTER = 81166;
|
||||
private static final int EXALTED_DUAL_SWORDS = 81167;
|
||||
private static final int EXALTED_DUAL_DAGGERS = 81168;
|
||||
// Monsters
|
||||
private static final int[] MONSTERS =
|
||||
{
|
||||
// Hellbound monsters
|
||||
23811, // Cantera Tanya
|
||||
23812, // Cantera Deathmoz
|
||||
23813, // Cantera Floxis
|
||||
23814, // Cantera Belika
|
||||
23815, // Cantera Bridget
|
||||
23354, // Decay Hannibal
|
||||
23355, // Armor Beast
|
||||
23356, // Klein Soldier
|
||||
23357, // Disorder Warrior
|
||||
23360, // Bizuard
|
||||
23361, // Mutated Fly
|
||||
24511, // Lunatikan
|
||||
24515, // Kandiloth
|
||||
24512, // Garion Neti
|
||||
24513, // Desert Wendigo
|
||||
24514, // Koraza
|
||||
};
|
||||
|
||||
public Q10811_ExaltedOneWhoFacesTheLimit()
|
||||
{
|
||||
super(10811);
|
||||
addStartNpc(LIONEL);
|
||||
addTalkId(LIONEL);
|
||||
addKillId(MONSTERS);
|
||||
addCondMinLevel(MIN_LEVEL, "33907-07.html");
|
||||
registerQuestItems(LIONEL_HUNTER_MISSING_LIST, ELIKIA_CERTIFICATE, MYSTERIOUS_BUTLER_CERTIFICATE, SIR_ERIC_RODEMAI_CERTIFICATE, GALLADUCI_RODEMAI_CERTIFICATE);
|
||||
registerQuestItems(LIONEL_HUNTER_MISSING_LIST, SLAYERS_PROOF);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Race race = player.getRace();
|
||||
final ClassId classId = player.getClassId();
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
@@ -91,18 +137,138 @@ public class Q10811_ExaltedOneWhoFacesTheLimit extends Quest
|
||||
if (qs.isCond(3))
|
||||
{
|
||||
giveItems(player, SPELLBOOK_DIGNITY_OF_THE_EXALTED, 1);
|
||||
switch (race)
|
||||
{
|
||||
case HUMAN:
|
||||
case ELF:
|
||||
case DARK_ELF:
|
||||
{
|
||||
if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_FEOH_GROUP, classId.getId()) || (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_WYNN_GROUP, classId.getId())))
|
||||
{
|
||||
giveItems(player, EXALTED_BUSTER, 1);
|
||||
giveItems(player, EXATLED_ROBE_PACK, 1);
|
||||
giveItems(player, FIRST_EXALTED_QUEST_REWARD_MAGIC, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_EOLH_GROUP, classId.getId()))
|
||||
{
|
||||
giveItems(player, EXALTED_CASTER, 1);
|
||||
giveItems(player, EXATLED_ROBE_PACK, 1);
|
||||
giveItems(player, FIRST_EXALTED_QUEST_REWARD_MAGIC, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_OTHEL_GROUP, classId.getId()))
|
||||
{
|
||||
giveItems(player, EXALTED_DUAL_DAGGERS, 1);
|
||||
giveItems(player, EXATLED_LIGHT_ARMOR_PACK, 1);
|
||||
giveItems(player, FIRST_EXALTED_QUEST_REWARD_PHYSICAL, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_YR_GROUP, classId.getId()))
|
||||
{
|
||||
giveItems(player, EXALTED_THROWER, 1);
|
||||
giveItems(player, EXATLED_LIGHT_ARMOR_PACK, 1);
|
||||
giveItems(player, FIRST_EXALTED_QUEST_REWARD_PHYSICAL, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_IS_GROUP, classId.getId()) || (player.getClassId() == ClassId.TYRR_DUELIST))
|
||||
{
|
||||
giveItems(player, EXALTED_DUAL_SWORDS, 1);
|
||||
giveItems(player, EXATLED_HEAVY_ARMOR_PACK, 1);
|
||||
giveItems(player, FIRST_EXALTED_QUEST_REWARD_PHYSICAL, 1);
|
||||
}
|
||||
else if (player.getClassId() == ClassId.TYRR_DREADNOUGHT)
|
||||
{
|
||||
giveItems(player, EXALTED_STROMER, 1);
|
||||
giveItems(player, EXATLED_HEAVY_ARMOR_PACK, 1);
|
||||
giveItems(player, FIRST_EXALTED_QUEST_REWARD_PHYSICAL, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_SIGEL_GROUP, classId.getId()))
|
||||
{
|
||||
giveItems(player, EXALTED_CUTTER, 1);
|
||||
giveItems(player, EXATLED_HEAVY_ARMOR_PACK, 1);
|
||||
giveItems(player, FIRST_EXALTED_QUEST_REWARD_PHYSICAL, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DWARF:
|
||||
{
|
||||
if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_OTHEL_GROUP, classId.getId()))
|
||||
{
|
||||
giveItems(player, EXALTED_DUAL_DAGGERS, 1);
|
||||
giveItems(player, EXATLED_LIGHT_ARMOR_PACK, 1);
|
||||
giveItems(player, FIRST_EXALTED_QUEST_REWARD_PHYSICAL, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
giveItems(player, EXALTED_AVENGER, 1);
|
||||
giveItems(player, EXATLED_HEAVY_ARMOR_PACK, 1);
|
||||
giveItems(player, FIRST_EXALTED_QUEST_REWARD_PHYSICAL, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ORC:
|
||||
{
|
||||
if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_IS_GROUP, classId.getId()))
|
||||
{
|
||||
giveItems(player, EXALTED_DUAL_SWORDS, 1);
|
||||
giveItems(player, EXATLED_LIGHT_ARMOR_PACK, 1);
|
||||
giveItems(player, FIRST_EXALTED_QUEST_REWARD_PHYSICAL, 1);
|
||||
}
|
||||
else if (player.getClassId() == ClassId.TYRR_GRAND_KHAVATARI)
|
||||
{
|
||||
giveItems(player, EXALTED_FIGHTER, 1);
|
||||
giveItems(player, EXATLED_LIGHT_ARMOR_PACK, 1);
|
||||
giveItems(player, FIRST_EXALTED_QUEST_REWARD_PHYSICAL, 1);
|
||||
}
|
||||
else if (player.getClassId() == ClassId.TYRR_TITAN)
|
||||
{
|
||||
giveItems(player, EXALTED_SLASHER, 1);
|
||||
giveItems(player, EXATLED_HEAVY_ARMOR_PACK, 1);
|
||||
giveItems(player, FIRST_EXALTED_QUEST_REWARD_PHYSICAL, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case KAMAEL:
|
||||
{
|
||||
if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_FEOH_GROUP, classId.getId()))
|
||||
{
|
||||
giveItems(player, EXALTED_BUSTER, 1);
|
||||
giveItems(player, EXATLED_ROBE_PACK, 1);
|
||||
giveItems(player, FIRST_EXALTED_QUEST_REWARD_MAGIC, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_YR_GROUP, classId.getId()))
|
||||
{
|
||||
giveItems(player, EXALTED_SHOOTER, 1);
|
||||
giveItems(player, EXATLED_LIGHT_ARMOR_PACK, 1);
|
||||
giveItems(player, FIRST_EXALTED_QUEST_REWARD_PHYSICAL, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
giveItems(player, EXATLED_LIGHT_ARMOR_PACK, 1);
|
||||
giveItems(player, FIRST_EXALTED_QUEST_REWARD_PHYSICAL, 1);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ERTHEIA:
|
||||
{
|
||||
if (player.isMageClass())
|
||||
{
|
||||
giveItems(player, EXATLED_ROBE_PACK, 1);
|
||||
giveItems(player, FIRST_EXALTED_QUEST_REWARD_MAGIC, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
giveItems(player, EXALTED_SLASHER, 1);
|
||||
giveItems(player, EXATLED_LIGHT_ARMOR_PACK, 1);
|
||||
giveItems(player, FIRST_EXALTED_QUEST_REWARD_PHYSICAL, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
qs.exitQuest(false, true);
|
||||
htmltext = event;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "SUBQUEST_FINISHED_NOTIFY":
|
||||
{
|
||||
if (hasQuestItems(player, ELIKIA_CERTIFICATE, MYSTERIOUS_BUTLER_CERTIFICATE, SIR_ERIC_RODEMAI_CERTIFICATE, GALLADUCI_RODEMAI_CERTIFICATE) && (player.getAbilityPointsUsed() >= 16))
|
||||
{
|
||||
qs.setCond(3, true);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
@@ -144,6 +310,30 @@ public class Q10811_ExaltedOneWhoFacesTheLimit extends Quest
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
|
||||
{
|
||||
executeForEachPlayer(player, npc, isSummon, true, false);
|
||||
return super.onKill(npc, player, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if ((qs != null) && qs.isCond(2) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
|
||||
{
|
||||
if (getQuestItemsCount(player, SLAYERS_PROOF) < SLAYERS_PROOF_NEEDED)
|
||||
{
|
||||
giveItemRandomly(player, SLAYERS_PROOF, 1, SLAYERS_PROOF_NEEDED, 1, true);
|
||||
}
|
||||
if ((getQuestItemsCount(player, SLAYERS_PROOF) >= SLAYERS_PROOF_NEEDED) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
{
|
||||
qs.setCond(3, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@RegisterEvent(EventType.ON_PLAYER_ABILITY_POINTS_CHANGED)
|
||||
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
|
||||
private void OnPlayerAbilityPointsChanged(OnPlayerAbilityPointsChanged event)
|
||||
|
@@ -16,6 +16,11 @@
|
||||
*/
|
||||
package quests.Q10817_ExaltedOneWhoOvercomesTheLimit;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.data.xml.CategoryData;
|
||||
import org.l2jmobius.gameserver.enums.CategoryType;
|
||||
import org.l2jmobius.gameserver.enums.ClassId;
|
||||
import org.l2jmobius.gameserver.enums.Race;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
@@ -34,32 +39,58 @@ public class Q10817_ExaltedOneWhoOvercomesTheLimit extends Quest
|
||||
// NPC
|
||||
private static final int LIONEL = 33907;
|
||||
// Items
|
||||
private static final int DAICHIR_SERTIFICATE = 45628;
|
||||
private static final int OLYMPIAD_MANAGER_CERTIFICATE = 45629;
|
||||
private static final int ISHUMA_CERTIFICATE = 45630;
|
||||
private static final int SIR_KRISTOF_RODEMAI_CERTIFICATE = 45631;
|
||||
private static final int PROOF_OF_RESISTANCE = 80823;
|
||||
private static final int LIONEL_MISSION_LIST_2 = 45632;
|
||||
// Rewards
|
||||
private static final int SPELLBOOK_DIGNITY_OF_THE_EXALTED = 45923;
|
||||
private static final int SPELLBOOK_BELIEF_OF_THE_EXALTED = 45925;
|
||||
private static final int SPELLBOOK_FAVOR_OF_THE_EXALTED = 45928;
|
||||
private static final int EXALSTED_WEAPON_UPGRADE_STONE = 81200;
|
||||
private static final int SECOND_EXALTED_QUEST_REWARD_P = 81209;
|
||||
private static final int SECOND_EXALTED_QUEST_REWARD_M = 81210;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 99;
|
||||
private static final int MIN_COMPLETE_LEVEL = 100;
|
||||
private static final int MIN_LEVEL = 101;
|
||||
private static final int MIN_COMPLETE_LEVEL = 102;
|
||||
private static final int PROOF_OF_RESISTANCE_NEEDED = 40000;
|
||||
// Monsters
|
||||
private static final int[] MONSTERS =
|
||||
{
|
||||
// Hellbound monsters
|
||||
23811, // Cantera Tanya
|
||||
23812, // Cantera Deathmoz
|
||||
23813, // Cantera Floxis
|
||||
23814, // Cantera Belika
|
||||
23815, // Cantera Bridget
|
||||
23354, // Decay Hannibal
|
||||
23355, // Armor Beast
|
||||
23356, // Klein Soldier
|
||||
23357, // Disorder Warrior
|
||||
23360, // Bizuard
|
||||
23361, // Mutated Fly
|
||||
24511, // Lunatikan
|
||||
24515, // Kandiloth
|
||||
24512, // Garion Neti
|
||||
24513, // Desert Wendigo
|
||||
24514, // Koraza
|
||||
};
|
||||
|
||||
public Q10817_ExaltedOneWhoOvercomesTheLimit()
|
||||
{
|
||||
super(10817);
|
||||
addStartNpc(LIONEL);
|
||||
addTalkId(LIONEL);
|
||||
addKillId(MONSTERS);
|
||||
addCondMinLevel(MIN_LEVEL, "33907-07.html");
|
||||
addCondCompletedQuest(Q10811_ExaltedOneWhoFacesTheLimit.class.getSimpleName(), "33907-02.html");
|
||||
registerQuestItems(LIONEL_MISSION_LIST_2, DAICHIR_SERTIFICATE, OLYMPIAD_MANAGER_CERTIFICATE, ISHUMA_CERTIFICATE, SIR_KRISTOF_RODEMAI_CERTIFICATE);
|
||||
registerQuestItems(LIONEL_MISSION_LIST_2, PROOF_OF_RESISTANCE_NEEDED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
String htmltext = null;
|
||||
final Race race = player.getRace();
|
||||
final ClassId classId = player.getClassId();
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if (qs == null)
|
||||
{
|
||||
@@ -86,10 +117,168 @@ public class Q10817_ExaltedOneWhoOvercomesTheLimit extends Quest
|
||||
}
|
||||
case "33907-09.html":
|
||||
{
|
||||
if (hasQuestItems(player, DAICHIR_SERTIFICATE, OLYMPIAD_MANAGER_CERTIFICATE, ISHUMA_CERTIFICATE, SIR_KRISTOF_RODEMAI_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
if (qs.isCond(2) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
{
|
||||
giveItems(player, SPELLBOOK_DIGNITY_OF_THE_EXALTED, 1);
|
||||
giveItems(player, SPELLBOOK_BELIEF_OF_THE_EXALTED, 1);
|
||||
giveItems(player, SPELLBOOK_FAVOR_OF_THE_EXALTED, 1);
|
||||
giveItems(player, EXALSTED_WEAPON_UPGRADE_STONE, 1);
|
||||
|
||||
switch (race)
|
||||
{
|
||||
case HUMAN:
|
||||
case ELF:
|
||||
case DARK_ELF:
|
||||
{
|
||||
if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_FEOH_GROUP, classId.getId()) || (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_WYNN_GROUP, classId.getId())))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_M, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_EOLH_GROUP, classId.getId()))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_M, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_OTHEL_GROUP, classId.getId()))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_YR_GROUP, classId.getId()))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_IS_GROUP, classId.getId()) || (player.getClassId() == ClassId.TYRR_DUELIST))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else if (player.getClassId() == ClassId.TYRR_DREADNOUGHT)
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_SIGEL_GROUP, classId.getId()))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.DIVISION_WIZARD, classId.getId()))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_M, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.SUBJOB_GROUP_BOW, classId.getId()))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.SUBJOB_GROUP_DAGGER, classId.getId()))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.SUBJOB_GROUP_DANCE, classId.getId()) || (player.getClassId() == ClassId.GLADIATOR))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else if (player.getClassId() == ClassId.WARLORD)
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else if (player.getClassId() == ClassId.DUELIST)
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.TANKER_GROUP, classId.getId()))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.RECOM_WARRIOR_GROUP, classId.getId()))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DWARF:
|
||||
{
|
||||
if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_OTHEL_GROUP, classId.getId()))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.DWARF_BOUNTY_CLASS, classId.getId()))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ORC:
|
||||
{
|
||||
if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_IS_GROUP, classId.getId()))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else if (player.getClassId() == ClassId.TYRR_GRAND_KHAVATARI)
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else if (player.getClassId() == ClassId.TYRR_TITAN)
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else if (player.isMageClass())
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.LIGHT_ARMOR_CLASS, classId.getId()))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case KAMAEL:
|
||||
{
|
||||
if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_FEOH_GROUP, classId.getId()))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_M, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.SIXTH_YR_GROUP, classId.getId()))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.DIVISION_WIZARD, classId.getId()))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_M, 1);
|
||||
}
|
||||
else if (CategoryData.getInstance().isInCategory(CategoryType.DIVISION_ARCHER, classId.getId()))
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ERTHEIA:
|
||||
{
|
||||
if (player.isMageClass())
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_M, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
giveItems(player, SECOND_EXALTED_QUEST_REWARD_P, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
qs.exitQuest(false, true);
|
||||
htmltext = event;
|
||||
}
|
||||
@@ -114,7 +303,7 @@ public class Q10817_ExaltedOneWhoOvercomesTheLimit extends Quest
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (hasQuestItems(player, DAICHIR_SERTIFICATE, OLYMPIAD_MANAGER_CERTIFICATE, ISHUMA_CERTIFICATE, SIR_KRISTOF_RODEMAI_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
if (qs.isCond(2) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
{
|
||||
htmltext = "33907-08.html";
|
||||
}
|
||||
@@ -132,4 +321,29 @@ public class Q10817_ExaltedOneWhoOvercomesTheLimit extends Quest
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
|
||||
{
|
||||
executeForEachPlayer(player, npc, isSummon, true, false);
|
||||
return super.onKill(npc, player, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if ((qs != null) && qs.isCond(1) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
|
||||
{
|
||||
if (getQuestItemsCount(player, PROOF_OF_RESISTANCE) < PROOF_OF_RESISTANCE_NEEDED)
|
||||
{
|
||||
giveItemRandomly(player, PROOF_OF_RESISTANCE, 1, PROOF_OF_RESISTANCE_NEEDED, 1, true);
|
||||
}
|
||||
if ((getQuestItemsCount(player, PROOF_OF_RESISTANCE) >= PROOF_OF_RESISTANCE_NEEDED) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package quests.Q10823_ExaltedOneWhoShattersTheLimit;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
@@ -34,28 +35,51 @@ public class Q10823_ExaltedOneWhoShattersTheLimit extends Quest
|
||||
// NPC
|
||||
private static final int LIONEL = 33907;
|
||||
// Items
|
||||
private static final int MERLOT_CERTIFICATE = 46056;
|
||||
private static final int KURTIZ_CERTIFICATE = 46057;
|
||||
private static final int MAMMON_CERTIFICATE = 45635;
|
||||
private static final int GUSTAV_CERTIFICATE = 45636;
|
||||
private static final int PROOF_OF_PREPARATION = 80824;
|
||||
private static final int LIONEL_MISSION_LIST_3 = 45637;
|
||||
// Rewards
|
||||
private static final int EXALTED_CLOAK = 37763;
|
||||
private static final int OBTAIN_EXALTED_STATUS = 45638;
|
||||
private static final int EXALTED_TIARA = 45644;
|
||||
private static final int DIGNITY_OF_THE_EXALTED = 45924;
|
||||
private static final int BLESSING_OF_THE_EXALTED = 45926;
|
||||
private static final int SUMMON_BATTLE_POTION = 45927;
|
||||
private static final int FATE_OF_THE_EXALTED = 46036;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 100;
|
||||
private static final int MIN_DUALCLASS_LEVEL = 100;
|
||||
private static final int MIN_LEVEL = 102;
|
||||
private static final int MIN_COMPLETE_LEVEL = 103;
|
||||
private static final int PROOF_OF_PREPARATION_NEEDED = 40000;
|
||||
// Monsters
|
||||
private static final int[] MONSTERS =
|
||||
{
|
||||
// Hellbound monsters
|
||||
23811, // Cantera Tanya
|
||||
23812, // Cantera Deathmoz
|
||||
23813, // Cantera Floxis
|
||||
23814, // Cantera Belika
|
||||
23815, // Cantera Bridget
|
||||
23354, // Decay Hannibal
|
||||
23355, // Armor Beast
|
||||
23356, // Klein Soldier
|
||||
23357, // Disorder Warrior
|
||||
23360, // Bizuard
|
||||
23361, // Mutated Fly
|
||||
24511, // Lunatikan
|
||||
24515, // Kandiloth
|
||||
24512, // Garion Neti
|
||||
24513, // Desert Wendigo
|
||||
24514, // Koraza
|
||||
};
|
||||
|
||||
public Q10823_ExaltedOneWhoShattersTheLimit()
|
||||
{
|
||||
super(10823);
|
||||
addStartNpc(LIONEL);
|
||||
addTalkId(LIONEL);
|
||||
addKillId(MONSTERS);
|
||||
addCondMinLevel(MIN_LEVEL, "33907-07.html");
|
||||
addCondCompletedQuest(Q10817_ExaltedOneWhoOvercomesTheLimit.class.getSimpleName(), "33907-02.html");
|
||||
registerQuestItems(LIONEL_MISSION_LIST_3, MERLOT_CERTIFICATE, KURTIZ_CERTIFICATE, MAMMON_CERTIFICATE, GUSTAV_CERTIFICATE);
|
||||
registerQuestItems(LIONEL_MISSION_LIST_3, PROOF_OF_PREPARATION);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -88,12 +112,15 @@ public class Q10823_ExaltedOneWhoShattersTheLimit extends Quest
|
||||
}
|
||||
case "33907-09.html":
|
||||
{
|
||||
if (hasQuestItems(player, MERLOT_CERTIFICATE, KURTIZ_CERTIFICATE, MAMMON_CERTIFICATE, GUSTAV_CERTIFICATE) && ((player.getDualClass() != null) && (player.getDualClass().getLevel() >= MIN_DUALCLASS_LEVEL)))
|
||||
if (qs.isCond(2) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
{
|
||||
giveItems(player, EXALTED_CLOAK, 1);
|
||||
giveItems(player, OBTAIN_EXALTED_STATUS, 1);
|
||||
giveItems(player, EXALTED_TIARA, 1);
|
||||
giveItems(player, DIGNITY_OF_THE_EXALTED, 1);
|
||||
giveItems(player, BLESSING_OF_THE_EXALTED, 1);
|
||||
giveItems(player, SUMMON_BATTLE_POTION, 1);
|
||||
giveItems(player, FATE_OF_THE_EXALTED, 1);
|
||||
// Give Exalted status here?
|
||||
// https://l2wiki.com/Noblesse
|
||||
player.setNobleLevel(2);
|
||||
@@ -122,7 +149,7 @@ public class Q10823_ExaltedOneWhoShattersTheLimit extends Quest
|
||||
}
|
||||
case State.STARTED:
|
||||
{
|
||||
if (hasQuestItems(player, MERLOT_CERTIFICATE, KURTIZ_CERTIFICATE, MAMMON_CERTIFICATE, GUSTAV_CERTIFICATE) && ((player.getDualClass() != null) && (player.getDualClass().getLevel() >= MIN_DUALCLASS_LEVEL)))
|
||||
if (qs.isCond(2) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
{
|
||||
htmltext = "33907-08.html";
|
||||
}
|
||||
@@ -140,4 +167,28 @@ public class Q10823_ExaltedOneWhoShattersTheLimit extends Quest
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
|
||||
{
|
||||
executeForEachPlayer(player, npc, isSummon, true, false);
|
||||
return super.onKill(npc, player, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if ((qs != null) && qs.isCond(1) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
|
||||
{
|
||||
if (getQuestItemsCount(player, PROOF_OF_PREPARATION) < PROOF_OF_PREPARATION_NEEDED)
|
||||
{
|
||||
giveItemRandomly(player, PROOF_OF_PREPARATION, 1, PROOF_OF_PREPARATION_NEEDED, 1, true);
|
||||
}
|
||||
if ((getQuestItemsCount(player, PROOF_OF_PREPARATION) >= PROOF_OF_PREPARATION_NEEDED) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,8 +2,5 @@
|
||||
I'll tell you about the fourth test.<br>
|
||||
First, you must reach <font color="LEVEL">Lv. 104</font> to prove you are qualified to advance to the new stage. You must also pass the tests of the following people and receive their certificates.<br>
|
||||
Your testers include <font color="LEVEL">Commando Captain Sporcha</font> in the <font color="LEVEL">Hellbound Refugee Camp</font>, <font color="LEVEL">Giant Tracker Leader Krenaht</font> in the <font color="LEVEL">Giant's Cave</font>, <font color="LEVEL">Fishing Guild Leader Santiago</font> in <font color="LEVEL">Heine</font>, and <font color="LEVEL">Hunter's Guild President Arcturus</font> in the <font color="LEVEL">Hunter's Village</font>.<br><br><br>
|
||||
Only they know what they'll test you on, so go talk to them. If you forget who you must go to, refer to the guide I'll be giving you<br><br>
|
||||
All this can be substituted by completing a mission from <font color="LEVEL">High Priest Sylvain</font> in the <font color="LEVEL">Einhasad Temple</font> in the <font color="LEVEL">Town of Dion</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10873_ExaltedReachingAnotherLevel 33907-05a.html">"I'll do that."</Button>
|
||||
</body></html>
|
||||
Only they know what they'll test you on, so go talk to them. If you forget who you must go to, refer to the guide I'll be giving you.
|
||||
</body></html>
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package quests.Q10873_ExaltedReachingAnotherLevel;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
@@ -34,26 +35,46 @@ public class Q10873_ExaltedReachingAnotherLevel extends Quest
|
||||
// NPC
|
||||
private static final int LIONEL = 33907;
|
||||
// Items
|
||||
private static final int SPORCHA_CERTIFICATE = 47830;
|
||||
private static final int KEKROPUS_CERTIFICATE = 47831;
|
||||
private static final int SANTIAGO_CERTIFICATE = 47832;
|
||||
private static final int ARCTURUS_CERTIFICATE = 47833;
|
||||
private static final int SYLVAIN_CERTIFICATE = 80828;
|
||||
private static final int PROOF_OF_REPUTATION = 80826;
|
||||
private static final int LIONEL_MISSION_LIST_4 = 47829;
|
||||
// Rewards
|
||||
private static final int DIGNITY_OF_THE_EXALTED = 47852;
|
||||
private static final int VITALITY_OF_THE_EXALTED = 47854;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 103;
|
||||
private static final int MIN_COMPLETE_LEVEL = 104;
|
||||
private static final int MIN_COMPLETE_LEVEL = 105;
|
||||
private static final int PROOF_OF_REPUTATION_NEEDED = 80000;
|
||||
// Monsters
|
||||
private static final int[] MONSTERS =
|
||||
{
|
||||
// Hellbound monsters
|
||||
23811, // Cantera Tanya
|
||||
23812, // Cantera Deathmoz
|
||||
23813, // Cantera Floxis
|
||||
23814, // Cantera Belika
|
||||
23815, // Cantera Bridget
|
||||
23354, // Decay Hannibal
|
||||
23355, // Armor Beast
|
||||
23356, // Klein Soldier
|
||||
23357, // Disorder Warrior
|
||||
23360, // Bizuard
|
||||
23361, // Mutated Fly
|
||||
24511, // Lunatikan
|
||||
24515, // Kandiloth
|
||||
24512, // Garion Neti
|
||||
24513, // Desert Wendigo
|
||||
24514, // Koraza
|
||||
};
|
||||
|
||||
public Q10873_ExaltedReachingAnotherLevel()
|
||||
{
|
||||
super(10873);
|
||||
addStartNpc(LIONEL);
|
||||
addTalkId(LIONEL);
|
||||
addKillId(MONSTERS);
|
||||
addCondMinLevel(MIN_LEVEL, "33907-00.htm");
|
||||
addCondCompletedQuest(Q10823_ExaltedOneWhoShattersTheLimit.class.getSimpleName(), "33907-00.htm");
|
||||
registerQuestItems(LIONEL_MISSION_LIST_4, SPORCHA_CERTIFICATE, KEKROPUS_CERTIFICATE, SANTIAGO_CERTIFICATE, ARCTURUS_CERTIFICATE, SYLVAIN_CERTIFICATE);
|
||||
registerQuestItems(LIONEL_MISSION_LIST_4, PROOF_OF_REPUTATION);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -92,10 +113,10 @@ public class Q10873_ExaltedReachingAnotherLevel extends Quest
|
||||
}
|
||||
case "33907-08.html":
|
||||
{
|
||||
if ((hasQuestItems(player, SYLVAIN_CERTIFICATE) || hasQuestItems(player, SPORCHA_CERTIFICATE, KEKROPUS_CERTIFICATE, SANTIAGO_CERTIFICATE, ARCTURUS_CERTIFICATE)) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
if (qs.isCond(2) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
{
|
||||
giveItems(player, DIGNITY_OF_THE_EXALTED, 1);
|
||||
addExpAndSp(player, 1178303740714L, 1178303740);
|
||||
giveItems(player, VITALITY_OF_THE_EXALTED, 1);
|
||||
qs.exitQuest(false, true);
|
||||
htmltext = event;
|
||||
}
|
||||
@@ -123,7 +144,7 @@ public class Q10873_ExaltedReachingAnotherLevel extends Quest
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
if (hasQuestItems(player, SPORCHA_CERTIFICATE, KEKROPUS_CERTIFICATE, SANTIAGO_CERTIFICATE, ARCTURUS_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
if (qs.isCond(2) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
{
|
||||
htmltext = "33907-07.html";
|
||||
}
|
||||
@@ -133,18 +154,6 @@ public class Q10873_ExaltedReachingAnotherLevel extends Quest
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
if (hasQuestItems(player, SYLVAIN_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
{
|
||||
htmltext = "33907-07a.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "33907-06a.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -156,4 +165,28 @@ public class Q10873_ExaltedReachingAnotherLevel extends Quest
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
|
||||
{
|
||||
executeForEachPlayer(player, npc, isSummon, true, false);
|
||||
return super.onKill(npc, player, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if ((qs != null) && qs.isCond(1) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
|
||||
{
|
||||
if (getQuestItemsCount(player, PROOF_OF_REPUTATION) < PROOF_OF_REPUTATION_NEEDED)
|
||||
{
|
||||
giveItemRandomly(player, PROOF_OF_REPUTATION, 1, PROOF_OF_REPUTATION_NEEDED, 1, true);
|
||||
}
|
||||
if ((getQuestItemsCount(player, PROOF_OF_REPUTATION) >= PROOF_OF_REPUTATION_NEEDED) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,7 +2,5 @@
|
||||
I'll tell you about the fifth test.<br>
|
||||
First, you must reach <font color="LEVEL">Lv.105</font> to prove that you're qualified to be Guide of Power. You must also pass the tests of the following people and receive their certificates.<br>
|
||||
The testers include <font color="LEVEL">Master Cyphona</font> and <font color="LEVEL">Quartermaster Dinford</font> in the <font color="LEVEL">Blackbird Campsite</font>, <font color="LEVEL">Owner Settlen</font> of <font color="LEVEL">Underground Gainak Mystic Tavern</font>, and <font color="LEVEL">Admiral Keucereus</font> in the <font color="LEVEL">Keucereus Alliance Base</font>.<br><br><br>
|
||||
Only they know what they'll test you on, so go talk to them. If you forget who you must go to, refer to the guide I'll be giving you.<br><br>
|
||||
All this can be substituted by completing a mission from <font color="LEVEL">Cardinal Seresin</font> in the <font color="LEVEL">Town of Oren</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10879_ExaltedGuideToPower 33907-05a.html">"I'll do that."</Button>
|
||||
Only they know what they'll test you on, so go talk to them. If you forget who you must go to, refer to the guide I'll be giving you.
|
||||
</body></html>
|
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package quests.Q10879_ExaltedGuideToPower;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
@@ -34,26 +35,46 @@ public class Q10879_ExaltedGuideToPower extends Quest
|
||||
// NPC
|
||||
private static final int LIONEL = 33907;
|
||||
// Items
|
||||
private static final int MASTER_CYPHONA_CERTIFICATE = 47835;
|
||||
private static final int DINFORD_CERTIFICATE = 47836;
|
||||
private static final int SETTLEN_SERTIFICATE = 47837;
|
||||
private static final int ADMIRAL_KEUCEREUS_CERTIFICATE = 47838;
|
||||
private static final int SERESIN_CERTIFICATE = 80829;
|
||||
private static final int PROOF_OF_PRIDE = 80827;
|
||||
private static final int LIONEL_MISSION_LIST_5 = 47834;
|
||||
// Rewards
|
||||
private static final int DIGNITY_OF_THE_EXALTED = 47853;
|
||||
private static final int VITALITY_OF_THE_EXALTED = 47855;
|
||||
// Misc
|
||||
private static final int MIN_LEVEL = 104;
|
||||
private static final int MIN_COMPLETE_LEVEL = 105;
|
||||
private static final int MIN_LEVEL = 105;
|
||||
private static final int MIN_COMPLETE_LEVEL = 107;
|
||||
private static final int PROOF_OF_PRIDE_NEEDED = 80000;
|
||||
// Monsters
|
||||
private static final int[] MONSTERS =
|
||||
{
|
||||
// Hellbound monsters
|
||||
23811, // Cantera Tanya
|
||||
23812, // Cantera Deathmoz
|
||||
23813, // Cantera Floxis
|
||||
23814, // Cantera Belika
|
||||
23815, // Cantera Bridget
|
||||
23354, // Decay Hannibal
|
||||
23355, // Armor Beast
|
||||
23356, // Klein Soldier
|
||||
23357, // Disorder Warrior
|
||||
23360, // Bizuard
|
||||
23361, // Mutated Fly
|
||||
24511, // Lunatikan
|
||||
24515, // Kandiloth
|
||||
24512, // Garion Neti
|
||||
24513, // Desert Wendigo
|
||||
24514, // Koraza
|
||||
};
|
||||
|
||||
public Q10879_ExaltedGuideToPower()
|
||||
{
|
||||
super(10879);
|
||||
addStartNpc(LIONEL);
|
||||
addTalkId(LIONEL);
|
||||
addKillId(MONSTERS);
|
||||
addCondMinLevel(MIN_LEVEL, "33907-00.html");
|
||||
addCondCompletedQuest(Q10873_ExaltedReachingAnotherLevel.class.getSimpleName(), "33907-00.html");
|
||||
registerQuestItems(LIONEL_MISSION_LIST_5, MASTER_CYPHONA_CERTIFICATE, DINFORD_CERTIFICATE, SETTLEN_SERTIFICATE, ADMIRAL_KEUCEREUS_CERTIFICATE, SERESIN_CERTIFICATE);
|
||||
registerQuestItems(LIONEL_MISSION_LIST_5, PROOF_OF_PRIDE);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -92,10 +113,10 @@ public class Q10879_ExaltedGuideToPower extends Quest
|
||||
}
|
||||
case "33907-08.html":
|
||||
{
|
||||
if ((hasQuestItems(player, SERESIN_CERTIFICATE) || (hasQuestItems(player, MASTER_CYPHONA_CERTIFICATE, DINFORD_CERTIFICATE, SETTLEN_SERTIFICATE, ADMIRAL_KEUCEREUS_CERTIFICATE))) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
if (qs.isCond(2) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
{
|
||||
giveItems(player, DIGNITY_OF_THE_EXALTED, 1);
|
||||
addExpAndSp(player, 2217691008000L, (int) 2217691008L);
|
||||
giveItems(player, VITALITY_OF_THE_EXALTED, 1);
|
||||
qs.exitQuest(false, true);
|
||||
htmltext = event;
|
||||
}
|
||||
@@ -123,7 +144,7 @@ public class Q10879_ExaltedGuideToPower extends Quest
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
if (hasQuestItems(player, MASTER_CYPHONA_CERTIFICATE, DINFORD_CERTIFICATE, SETTLEN_SERTIFICATE, ADMIRAL_KEUCEREUS_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
if (qs.isCond(2) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
{
|
||||
htmltext = "33907-07.html";
|
||||
}
|
||||
@@ -133,18 +154,6 @@ public class Q10879_ExaltedGuideToPower extends Quest
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
if (hasQuestItems(player, SERESIN_CERTIFICATE) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
{
|
||||
htmltext = "33907-07a.html";
|
||||
}
|
||||
else
|
||||
{
|
||||
htmltext = "33907-06a.html";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -156,4 +165,28 @@ public class Q10879_ExaltedGuideToPower extends Quest
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
|
||||
{
|
||||
executeForEachPlayer(player, npc, isSummon, true, false);
|
||||
return super.onKill(npc, player, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon)
|
||||
{
|
||||
final QuestState qs = getQuestState(player, false);
|
||||
if ((qs != null) && qs.isCond(1) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
|
||||
{
|
||||
if (getQuestItemsCount(player, PROOF_OF_PRIDE) < PROOF_OF_PRIDE_NEEDED)
|
||||
{
|
||||
giveItemRandomly(player, PROOF_OF_PRIDE, 1, PROOF_OF_PRIDE_NEEDED, 1, true);
|
||||
}
|
||||
if ((getQuestItemsCount(player, PROOF_OF_PRIDE) >= PROOF_OF_PRIDE_NEEDED) && (player.getLevel() >= MIN_COMPLETE_LEVEL))
|
||||
{
|
||||
qs.setCond(2, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user