From b6d6a94bffc6866faac2918cdcd6f5ee0932ec79 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Thu, 18 Apr 2019 15:01:17 +0000 Subject: [PATCH] Correction for quest Flames of Sorrow (10707). Contributed by NightBR. --- .../Q10707_FlamesOfSorrow.java | 83 ++++++++++--------- .../Q10707_FlamesOfSorrow.java | 83 ++++++++++--------- 2 files changed, 92 insertions(+), 74 deletions(-) diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10707_FlamesOfSorrow/Q10707_FlamesOfSorrow.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10707_FlamesOfSorrow/Q10707_FlamesOfSorrow.java index 889883fcca..edf637a8e9 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10707_FlamesOfSorrow/Q10707_FlamesOfSorrow.java +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10707_FlamesOfSorrow/Q10707_FlamesOfSorrow.java @@ -16,18 +16,25 @@ */ package quests.Q10707_FlamesOfSorrow; +import java.util.HashSet; +import java.util.Set; + import org.l2jmobius.gameserver.enums.ChatType; -import org.l2jmobius.gameserver.enums.QuestSound; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.NpcLogListHolder; 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.network.NpcStringId; +import quests.Q10395_NotATraitor.Q10395_NotATraitor; + /** * Flames of Sorrow (10707) + * @URL https://l2wiki.com/Flames_of_Sorrow * @author St3eT + * @author Night */ public final class Q10707_FlamesOfSorrow extends Quest { @@ -38,9 +45,13 @@ public final class Q10707_FlamesOfSorrow extends Quest private static final int SPIRIT = 33959; // Items private static final int MARK = 39508; // Mark of Gratitude + // Rewards + private static final int XP = 14518600; // Experience points + private static final int SP = 756; // Skill Points // Misc private static final int MIN_LEVEL = 46; private static final int MAX_LEVEL = 51; + private static final int NPCSTRING_ID = NpcStringId.LV_46_56_FLAMES_OF_SORROW_IN_PROGRESS.getId(); private static final NpcStringId[] RANDOM_MSGS = { NpcStringId.WE_WILL_NOT_TURN_BACK, @@ -56,8 +67,7 @@ public final class Q10707_FlamesOfSorrow extends Quest addKillId(VENGEFUL_SPIRIT); registerQuestItems(MARK); addCondLevel(MIN_LEVEL, MAX_LEVEL, "33863-07.htm"); - // TODO: Pre-Quest removed with Etina's Fate. - // addCondCompletedQuest(Q10395_NotATraitor.class.getSimpleName(), "33863-07.htm"); + addCondCompletedQuest(Q10395_NotATraitor.class.getSimpleName(), "33863-07.htm"); } @Override @@ -86,27 +96,19 @@ public final class Q10707_FlamesOfSorrow extends Quest } case "33863-06.html": { - if (qs.isCond(2)) - { - qs.exitQuest(false, true); - giveStoryQuestReward(npc, player); - if (player.getLevel() >= MIN_LEVEL) - { - addExpAndSp(player, 6049417, 378); - } - htmltext = event; - } + qs.exitQuest(false, true); + giveStoryQuestReward(npc, player); + addExpAndSp(player, XP, SP); + htmltext = event; break; } case "spawnMonster": { - if (qs.isCond(1)) - { - npc.deleteMe(); - final Npc spirit = addSpawn(VENGEFUL_SPIRIT, player, true, 60000); - addAttackPlayerDesire(spirit, player); - spirit.broadcastSay(ChatType.NPC_GENERAL, RANDOM_MSGS[getRandom(RANDOM_MSGS.length)]); - } + npc.deleteMe(); + final Npc spirit = addSpawn(VENGEFUL_SPIRIT, player, true, 60000); + addAttackPlayerDesire(spirit, player); + spirit.broadcastSay(ChatType.NPC_GENERAL, RANDOM_MSGS[getRandom(RANDOM_MSGS.length)]); + qs.setCond(2, false); break; } } @@ -133,14 +135,7 @@ public final class Q10707_FlamesOfSorrow extends Quest { if (npc.getId() == LEO) { - if (qs.isCond(1)) - { - htmltext = "33863-04.html"; - } - else if (qs.isCond(2)) - { - htmltext = "33863-05.html"; - } + htmltext = (qs.getCond() < 4) ? "33863-04.html" : "33863-05.html"; } break; } @@ -157,29 +152,43 @@ public final class Q10707_FlamesOfSorrow extends Quest } @Override - public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + public String onKill(Npc npc, PlayerInstance player, boolean isSummon) { - final QuestState qs = getQuestState(killer, false); + final QuestState qs = getQuestState(player, false); - if ((qs != null) && qs.isStarted() && qs.isCond(1) && (getRandom(100) < 75)) + if ((qs != null) && qs.isStarted() && (qs.getCond() < 4) && (getRandom(100) < 75)) { - giveItems(killer, MARK, 1); - playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET); final Npc spirit = addSpawn(SPIRIT, npc, false, 5000); spirit.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THANK_YOU_DELIVER_THIS_MARK_OF_GRATITUDE_TO_LEO); + qs.setCond(3, false); + giveItems(player, MARK, 1, true); - if (getQuestItemsCount(killer, MARK) == 10) + if (getQuestItemsCount(player, MARK) >= 10) { - qs.setCond(2, true); + qs.setCond(4, true); } + sendNpcLogList(player); } - return super.onKill(npc, killer, isSummon); + return super.onKill(npc, player, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(3)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(NPCSTRING_ID, true, (int) getQuestItemsCount(player, MARK))); + return holder; + } + return super.getNpcLogList(player); } @Override public String onFirstTalk(Npc npc, PlayerInstance player) { final QuestState qs = getQuestState(player, false); - return(qs != null) && qs.isCond(1) ? "19545.html" : "19545-no.html"; + return (qs != null) && (qs.getCond() < 4) ? "19545.html" : "19545-no.html"; } } \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10707_FlamesOfSorrow/Q10707_FlamesOfSorrow.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10707_FlamesOfSorrow/Q10707_FlamesOfSorrow.java index 889883fcca..edf637a8e9 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10707_FlamesOfSorrow/Q10707_FlamesOfSorrow.java +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10707_FlamesOfSorrow/Q10707_FlamesOfSorrow.java @@ -16,18 +16,25 @@ */ package quests.Q10707_FlamesOfSorrow; +import java.util.HashSet; +import java.util.Set; + import org.l2jmobius.gameserver.enums.ChatType; -import org.l2jmobius.gameserver.enums.QuestSound; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.NpcLogListHolder; 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.network.NpcStringId; +import quests.Q10395_NotATraitor.Q10395_NotATraitor; + /** * Flames of Sorrow (10707) + * @URL https://l2wiki.com/Flames_of_Sorrow * @author St3eT + * @author Night */ public final class Q10707_FlamesOfSorrow extends Quest { @@ -38,9 +45,13 @@ public final class Q10707_FlamesOfSorrow extends Quest private static final int SPIRIT = 33959; // Items private static final int MARK = 39508; // Mark of Gratitude + // Rewards + private static final int XP = 14518600; // Experience points + private static final int SP = 756; // Skill Points // Misc private static final int MIN_LEVEL = 46; private static final int MAX_LEVEL = 51; + private static final int NPCSTRING_ID = NpcStringId.LV_46_56_FLAMES_OF_SORROW_IN_PROGRESS.getId(); private static final NpcStringId[] RANDOM_MSGS = { NpcStringId.WE_WILL_NOT_TURN_BACK, @@ -56,8 +67,7 @@ public final class Q10707_FlamesOfSorrow extends Quest addKillId(VENGEFUL_SPIRIT); registerQuestItems(MARK); addCondLevel(MIN_LEVEL, MAX_LEVEL, "33863-07.htm"); - // TODO: Pre-Quest removed with Etina's Fate. - // addCondCompletedQuest(Q10395_NotATraitor.class.getSimpleName(), "33863-07.htm"); + addCondCompletedQuest(Q10395_NotATraitor.class.getSimpleName(), "33863-07.htm"); } @Override @@ -86,27 +96,19 @@ public final class Q10707_FlamesOfSorrow extends Quest } case "33863-06.html": { - if (qs.isCond(2)) - { - qs.exitQuest(false, true); - giveStoryQuestReward(npc, player); - if (player.getLevel() >= MIN_LEVEL) - { - addExpAndSp(player, 6049417, 378); - } - htmltext = event; - } + qs.exitQuest(false, true); + giveStoryQuestReward(npc, player); + addExpAndSp(player, XP, SP); + htmltext = event; break; } case "spawnMonster": { - if (qs.isCond(1)) - { - npc.deleteMe(); - final Npc spirit = addSpawn(VENGEFUL_SPIRIT, player, true, 60000); - addAttackPlayerDesire(spirit, player); - spirit.broadcastSay(ChatType.NPC_GENERAL, RANDOM_MSGS[getRandom(RANDOM_MSGS.length)]); - } + npc.deleteMe(); + final Npc spirit = addSpawn(VENGEFUL_SPIRIT, player, true, 60000); + addAttackPlayerDesire(spirit, player); + spirit.broadcastSay(ChatType.NPC_GENERAL, RANDOM_MSGS[getRandom(RANDOM_MSGS.length)]); + qs.setCond(2, false); break; } } @@ -133,14 +135,7 @@ public final class Q10707_FlamesOfSorrow extends Quest { if (npc.getId() == LEO) { - if (qs.isCond(1)) - { - htmltext = "33863-04.html"; - } - else if (qs.isCond(2)) - { - htmltext = "33863-05.html"; - } + htmltext = (qs.getCond() < 4) ? "33863-04.html" : "33863-05.html"; } break; } @@ -157,29 +152,43 @@ public final class Q10707_FlamesOfSorrow extends Quest } @Override - public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) + public String onKill(Npc npc, PlayerInstance player, boolean isSummon) { - final QuestState qs = getQuestState(killer, false); + final QuestState qs = getQuestState(player, false); - if ((qs != null) && qs.isStarted() && qs.isCond(1) && (getRandom(100) < 75)) + if ((qs != null) && qs.isStarted() && (qs.getCond() < 4) && (getRandom(100) < 75)) { - giveItems(killer, MARK, 1); - playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET); final Npc spirit = addSpawn(SPIRIT, npc, false, 5000); spirit.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THANK_YOU_DELIVER_THIS_MARK_OF_GRATITUDE_TO_LEO); + qs.setCond(3, false); + giveItems(player, MARK, 1, true); - if (getQuestItemsCount(killer, MARK) == 10) + if (getQuestItemsCount(player, MARK) >= 10) { - qs.setCond(2, true); + qs.setCond(4, true); } + sendNpcLogList(player); } - return super.onKill(npc, killer, isSummon); + return super.onKill(npc, player, isSummon); + } + + @Override + public Set getNpcLogList(PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && qs.isCond(3)) + { + final Set holder = new HashSet<>(); + holder.add(new NpcLogListHolder(NPCSTRING_ID, true, (int) getQuestItemsCount(player, MARK))); + return holder; + } + return super.getNpcLogList(player); } @Override public String onFirstTalk(Npc npc, PlayerInstance player) { final QuestState qs = getQuestState(player, false); - return(qs != null) && qs.isCond(1) ? "19545.html" : "19545-no.html"; + return (qs != null) && (qs.getCond() < 4) ? "19545.html" : "19545-no.html"; } } \ No newline at end of file