diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10589_WhereFatesIntersect/Q10589_WhereFatesIntersect.java b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10589_WhereFatesIntersect/Q10589_WhereFatesIntersect.java index a5cb85172a..a2830a08ce 100644 --- a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10589_WhereFatesIntersect/Q10589_WhereFatesIntersect.java +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10589_WhereFatesIntersect/Q10589_WhereFatesIntersect.java @@ -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); } diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10590_ReawakenedFate/Q10590_ReawakenedFate.java b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10590_ReawakenedFate/Q10590_ReawakenedFate.java index 7482aa0152..c43dcea598 100644 --- a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10590_ReawakenedFate/Q10590_ReawakenedFate.java +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10590_ReawakenedFate/Q10590_ReawakenedFate.java @@ -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); } diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10591_NobleMaterial/Q10591_NobleMaterial.java b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10591_NobleMaterial/Q10591_NobleMaterial.java index b2f96f1243..56ccc2077b 100644 --- a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10591_NobleMaterial/Q10591_NobleMaterial.java +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10591_NobleMaterial/Q10591_NobleMaterial.java @@ -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": diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10811_ExaltedOneWhoFacesTheLimit/Q10811_ExaltedOneWhoFacesTheLimit.java b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10811_ExaltedOneWhoFacesTheLimit/Q10811_ExaltedOneWhoFacesTheLimit.java index 33f37378cc..e03648561b 100644 --- a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10811_ExaltedOneWhoFacesTheLimit/Q10811_ExaltedOneWhoFacesTheLimit.java +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10811_ExaltedOneWhoFacesTheLimit/Q10811_ExaltedOneWhoFacesTheLimit.java @@ -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) diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/Q10817_ExaltedOneWhoOvercomesTheLimit.java b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/Q10817_ExaltedOneWhoOvercomesTheLimit.java index eed68ea481..2fc9f70f35 100644 --- a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/Q10817_ExaltedOneWhoOvercomesTheLimit.java +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10817_ExaltedOneWhoOvercomesTheLimit/Q10817_ExaltedOneWhoOvercomesTheLimit.java @@ -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); + } + } + } + } diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10823_ExaltedOneWhoShattersTheLimit/Q10823_ExaltedOneWhoShattersTheLimit.java b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10823_ExaltedOneWhoShattersTheLimit/Q10823_ExaltedOneWhoShattersTheLimit.java index d1abe995af..8c09a60d41 100644 --- a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10823_ExaltedOneWhoShattersTheLimit/Q10823_ExaltedOneWhoShattersTheLimit.java +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10823_ExaltedOneWhoShattersTheLimit/Q10823_ExaltedOneWhoShattersTheLimit.java @@ -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); + } + } + } } diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-05.html b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-05.html index b7f7d1593b..b8e328f3f0 100644 --- a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-05.html +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/33907-05.html @@ -2,8 +2,5 @@ I'll tell you about the fourth test.
First, you must reach Lv. 104 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.
Your testers include Commando Captain Sporcha in the Hellbound Refugee Camp, Giant Tracker Leader Krenaht in the Giant's Cave, Fishing Guild Leader Santiago in Heine, and Hunter's Guild President Arcturus in the Hunter's Village.


-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

-All this can be substituted by completing a mission from High Priest Sylvain in the Einhasad Temple in the Town of Dion.
- - +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. \ No newline at end of file diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/Q10873_ExaltedReachingAnotherLevel.java b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/Q10873_ExaltedReachingAnotherLevel.java index 57b2b2823d..d1df117b86 100644 --- a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/Q10873_ExaltedReachingAnotherLevel.java +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10873_ExaltedReachingAnotherLevel/Q10873_ExaltedReachingAnotherLevel.java @@ -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); + } + } + } } diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-05.html b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-05.html index 8e1cd5cc11..118b2b0e83 100644 --- a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-05.html +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/33907-05.html @@ -2,7 +2,5 @@ I'll tell you about the fifth test.
First, you must reach Lv.105 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.
The testers include Master Cyphona and Quartermaster Dinford in the Blackbird Campsite, Owner Settlen of Underground Gainak Mystic Tavern, and Admiral Keucereus in the Keucereus Alliance Base.


-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.

-All this can be substituted by completing a mission from Cardinal Seresin in the Town of Oren.
- +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. \ No newline at end of file diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/Q10879_ExaltedGuideToPower.java b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/Q10879_ExaltedGuideToPower.java index c49b340fb7..84194660f7 100644 --- a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/Q10879_ExaltedGuideToPower.java +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/quests/Q10879_ExaltedGuideToPower/Q10879_ExaltedGuideToPower.java @@ -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); + } + } + } }