Correction for quest Flames of Sorrow (10707).
Contributed by NightBR.
This commit is contained in:
@@ -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
|
||||||
@@ -86,27 +96,19 @@ public final class Q10707_FlamesOfSorrow extends Quest
|
|||||||
}
|
}
|
||||||
case "33863-06.html":
|
case "33863-06.html":
|
||||||
{
|
{
|
||||||
if (qs.isCond(2))
|
qs.exitQuest(false, true);
|
||||||
{
|
giveStoryQuestReward(npc, player);
|
||||||
qs.exitQuest(false, true);
|
addExpAndSp(player, XP, SP);
|
||||||
giveStoryQuestReward(npc, player);
|
htmltext = event;
|
||||||
if (player.getLevel() >= MIN_LEVEL)
|
|
||||||
{
|
|
||||||
addExpAndSp(player, 6049417, 378);
|
|
||||||
}
|
|
||||||
htmltext = event;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "spawnMonster":
|
case "spawnMonster":
|
||||||
{
|
{
|
||||||
if (qs.isCond(1))
|
npc.deleteMe();
|
||||||
{
|
final Npc spirit = addSpawn(VENGEFUL_SPIRIT, player, true, 60000);
|
||||||
npc.deleteMe();
|
addAttackPlayerDesire(spirit, player);
|
||||||
final Npc spirit = addSpawn(VENGEFUL_SPIRIT, player, true, 60000);
|
spirit.broadcastSay(ChatType.NPC_GENERAL, RANDOM_MSGS[getRandom(RANDOM_MSGS.length)]);
|
||||||
addAttackPlayerDesire(spirit, player);
|
qs.setCond(2, false);
|
||||||
spirit.broadcastSay(ChatType.NPC_GENERAL, RANDOM_MSGS[getRandom(RANDOM_MSGS.length)]);
|
|
||||||
}
|
|
||||||
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";
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -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
|
||||||
@@ -86,27 +96,19 @@ public final class Q10707_FlamesOfSorrow extends Quest
|
|||||||
}
|
}
|
||||||
case "33863-06.html":
|
case "33863-06.html":
|
||||||
{
|
{
|
||||||
if (qs.isCond(2))
|
qs.exitQuest(false, true);
|
||||||
{
|
giveStoryQuestReward(npc, player);
|
||||||
qs.exitQuest(false, true);
|
addExpAndSp(player, XP, SP);
|
||||||
giveStoryQuestReward(npc, player);
|
htmltext = event;
|
||||||
if (player.getLevel() >= MIN_LEVEL)
|
|
||||||
{
|
|
||||||
addExpAndSp(player, 6049417, 378);
|
|
||||||
}
|
|
||||||
htmltext = event;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "spawnMonster":
|
case "spawnMonster":
|
||||||
{
|
{
|
||||||
if (qs.isCond(1))
|
npc.deleteMe();
|
||||||
{
|
final Npc spirit = addSpawn(VENGEFUL_SPIRIT, player, true, 60000);
|
||||||
npc.deleteMe();
|
addAttackPlayerDesire(spirit, player);
|
||||||
final Npc spirit = addSpawn(VENGEFUL_SPIRIT, player, true, 60000);
|
spirit.broadcastSay(ChatType.NPC_GENERAL, RANDOM_MSGS[getRandom(RANDOM_MSGS.length)]);
|
||||||
addAttackPlayerDesire(spirit, player);
|
qs.setCond(2, false);
|
||||||
spirit.broadcastSay(ChatType.NPC_GENERAL, RANDOM_MSGS[getRandom(RANDOM_MSGS.length)]);
|
|
||||||
}
|
|
||||||
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";
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user