Correction for quest Flames of Sorrow (10707).

Contributed by NightBR.
This commit is contained in:
MobiusDevelopment
2019-04-18 15:01:17 +00:00
parent 19d4c36509
commit b6d6a94bff
2 changed files with 92 additions and 74 deletions

View File

@@ -16,18 +16,25 @@
*/ */
package quests.Q10707_FlamesOfSorrow; package quests.Q10707_FlamesOfSorrow;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.gameserver.enums.ChatType; 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.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; 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.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State; import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.NpcStringId;
import quests.Q10395_NotATraitor.Q10395_NotATraitor;
/** /**
* Flames of Sorrow (10707) * Flames of Sorrow (10707)
* @URL https://l2wiki.com/Flames_of_Sorrow
* @author St3eT * @author St3eT
* @author Night
*/ */
public final class Q10707_FlamesOfSorrow extends Quest public final class Q10707_FlamesOfSorrow extends Quest
{ {
@@ -38,9 +45,13 @@ public final class Q10707_FlamesOfSorrow extends Quest
private static final int SPIRIT = 33959; private static final int SPIRIT = 33959;
// Items // Items
private static final int MARK = 39508; // Mark of Gratitude 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 // Misc
private static final int MIN_LEVEL = 46; private static final int MIN_LEVEL = 46;
private static final int MAX_LEVEL = 51; 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 = private static final NpcStringId[] RANDOM_MSGS =
{ {
NpcStringId.WE_WILL_NOT_TURN_BACK, NpcStringId.WE_WILL_NOT_TURN_BACK,
@@ -56,8 +67,7 @@ public final class Q10707_FlamesOfSorrow extends Quest
addKillId(VENGEFUL_SPIRIT); addKillId(VENGEFUL_SPIRIT);
registerQuestItems(MARK); registerQuestItems(MARK);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "33863-07.htm"); 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 @Override
@@ -85,28 +95,20 @@ public final class Q10707_FlamesOfSorrow extends Quest
break; break;
} }
case "33863-06.html": case "33863-06.html":
{
if (qs.isCond(2))
{ {
qs.exitQuest(false, true); qs.exitQuest(false, true);
giveStoryQuestReward(npc, player); giveStoryQuestReward(npc, player);
if (player.getLevel() >= MIN_LEVEL) addExpAndSp(player, XP, SP);
{
addExpAndSp(player, 6049417, 378);
}
htmltext = event; htmltext = event;
}
break; break;
} }
case "spawnMonster": case "spawnMonster":
{
if (qs.isCond(1))
{ {
npc.deleteMe(); npc.deleteMe();
final Npc spirit = addSpawn(VENGEFUL_SPIRIT, player, true, 60000); final Npc spirit = addSpawn(VENGEFUL_SPIRIT, player, true, 60000);
addAttackPlayerDesire(spirit, player); addAttackPlayerDesire(spirit, player);
spirit.broadcastSay(ChatType.NPC_GENERAL, RANDOM_MSGS[getRandom(RANDOM_MSGS.length)]); spirit.broadcastSay(ChatType.NPC_GENERAL, RANDOM_MSGS[getRandom(RANDOM_MSGS.length)]);
} qs.setCond(2, false);
break; break;
} }
} }
@@ -133,14 +135,7 @@ public final class Q10707_FlamesOfSorrow extends Quest
{ {
if (npc.getId() == LEO) if (npc.getId() == LEO)
{ {
if (qs.isCond(1)) htmltext = (qs.getCond() < 4) ? "33863-04.html" : "33863-05.html";
{
htmltext = "33863-04.html";
}
else if (qs.isCond(2))
{
htmltext = "33863-05.html";
}
} }
break; break;
} }
@@ -157,29 +152,43 @@ public final class Q10707_FlamesOfSorrow extends Quest
} }
@Override @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); final Npc spirit = addSpawn(SPIRIT, npc, false, 5000);
spirit.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THANK_YOU_DELIVER_THIS_MARK_OF_GRATITUDE_TO_LEO); 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<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(3))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NPCSTRING_ID, true, (int) getQuestItemsCount(player, MARK)));
return holder;
}
return super.getNpcLogList(player);
} }
@Override @Override
public String onFirstTalk(Npc npc, PlayerInstance player) public String onFirstTalk(Npc npc, PlayerInstance player)
{ {
final QuestState qs = getQuestState(player, false); 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";
} }
} }

View File

@@ -16,18 +16,25 @@
*/ */
package quests.Q10707_FlamesOfSorrow; package quests.Q10707_FlamesOfSorrow;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.gameserver.enums.ChatType; 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.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; 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.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State; import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.NpcStringId;
import quests.Q10395_NotATraitor.Q10395_NotATraitor;
/** /**
* Flames of Sorrow (10707) * Flames of Sorrow (10707)
* @URL https://l2wiki.com/Flames_of_Sorrow
* @author St3eT * @author St3eT
* @author Night
*/ */
public final class Q10707_FlamesOfSorrow extends Quest public final class Q10707_FlamesOfSorrow extends Quest
{ {
@@ -38,9 +45,13 @@ public final class Q10707_FlamesOfSorrow extends Quest
private static final int SPIRIT = 33959; private static final int SPIRIT = 33959;
// Items // Items
private static final int MARK = 39508; // Mark of Gratitude 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 // Misc
private static final int MIN_LEVEL = 46; private static final int MIN_LEVEL = 46;
private static final int MAX_LEVEL = 51; 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 = private static final NpcStringId[] RANDOM_MSGS =
{ {
NpcStringId.WE_WILL_NOT_TURN_BACK, NpcStringId.WE_WILL_NOT_TURN_BACK,
@@ -56,8 +67,7 @@ public final class Q10707_FlamesOfSorrow extends Quest
addKillId(VENGEFUL_SPIRIT); addKillId(VENGEFUL_SPIRIT);
registerQuestItems(MARK); registerQuestItems(MARK);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "33863-07.htm"); 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 @Override
@@ -85,28 +95,20 @@ public final class Q10707_FlamesOfSorrow extends Quest
break; break;
} }
case "33863-06.html": case "33863-06.html":
{
if (qs.isCond(2))
{ {
qs.exitQuest(false, true); qs.exitQuest(false, true);
giveStoryQuestReward(npc, player); giveStoryQuestReward(npc, player);
if (player.getLevel() >= MIN_LEVEL) addExpAndSp(player, XP, SP);
{
addExpAndSp(player, 6049417, 378);
}
htmltext = event; htmltext = event;
}
break; break;
} }
case "spawnMonster": case "spawnMonster":
{
if (qs.isCond(1))
{ {
npc.deleteMe(); npc.deleteMe();
final Npc spirit = addSpawn(VENGEFUL_SPIRIT, player, true, 60000); final Npc spirit = addSpawn(VENGEFUL_SPIRIT, player, true, 60000);
addAttackPlayerDesire(spirit, player); addAttackPlayerDesire(spirit, player);
spirit.broadcastSay(ChatType.NPC_GENERAL, RANDOM_MSGS[getRandom(RANDOM_MSGS.length)]); spirit.broadcastSay(ChatType.NPC_GENERAL, RANDOM_MSGS[getRandom(RANDOM_MSGS.length)]);
} qs.setCond(2, false);
break; break;
} }
} }
@@ -133,14 +135,7 @@ public final class Q10707_FlamesOfSorrow extends Quest
{ {
if (npc.getId() == LEO) if (npc.getId() == LEO)
{ {
if (qs.isCond(1)) htmltext = (qs.getCond() < 4) ? "33863-04.html" : "33863-05.html";
{
htmltext = "33863-04.html";
}
else if (qs.isCond(2))
{
htmltext = "33863-05.html";
}
} }
break; break;
} }
@@ -157,29 +152,43 @@ public final class Q10707_FlamesOfSorrow extends Quest
} }
@Override @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); final Npc spirit = addSpawn(SPIRIT, npc, false, 5000);
spirit.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THANK_YOU_DELIVER_THIS_MARK_OF_GRATITUDE_TO_LEO); 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<NpcLogListHolder> getNpcLogList(PlayerInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(3))
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NPCSTRING_ID, true, (int) getQuestItemsCount(player, MARK)));
return holder;
}
return super.getNpcLogList(player);
} }
@Override @Override
public String onFirstTalk(Npc npc, PlayerInstance player) public String onFirstTalk(Npc npc, PlayerInstance player)
{ {
final QuestState qs = getQuestState(player, false); 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";
} }
} }