Quest Letters From The Queen: Fields Of Massacre (10785).

Contributed by gigilo1968.
This commit is contained in:
MobiusDev
2016-02-11 07:39:42 +00:00
parent e74a3a48f4
commit 36ce794ee4
12 changed files with 298 additions and 2 deletions

View File

@@ -0,0 +1,4 @@
<html><body>High Priest Orven:<br>
Welcome. I have been waiting for you. The item you could not find the previous time has been found, which is why I contacted Queen Navari. I was sure that you would come this time.<br>
<button align="left" icon="normal" action="bypass -h Quest Q10785_LettersFromTheQueen_FieldsOfMassacre 30857-02.htm">What's happened?</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>High Priest Orven:<br>
You look rather worried. That device must have been important. But I do not think that rushing things will solve issue.<br>
<button align="left" icon="normal" action="bypass -h Quest Q10785_LettersFromTheQueen_FieldsOfMassacre 30857-03.htm">Right.</button>
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>High Priest Orven:<br>
Good idea. I did not confirm that device myself.<br1>
Rather, someone else had reported.<br1>
I'm not sure what it is, but it's definitely not ours. Its looks similar to the one the delegation had, which is why I was sure that it was that.<br1>
<br1>
First go find <font color=LEVEL>Shuvann</font> at the <font color=LEVEL>Field of Massacre</font>. It was him who found the device first.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>High Priest Orven:<br>
I'm sure an Ertheia knows much better than us. First go find <font color=LEVEL>Shuvann</font> at the <font color=LEVEL>Field of Massacre</font>.<br>
It was him who found the device first
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Shuvann:<br>
What brings you here? The Fields of Massacre is not safe. I encourage you to go back.<br>
<button align="left" icon="normal" action="bypass -h Quest Q10785_LettersFromTheQueen_FieldsOfMassacre 33867-02.htm">I have High Priest Orven's message.</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Shuvann:<br>
Oh! You must be here for the item I came across. I did hear from Orven. It must be important to Ertheia.<br>
<button align="left" icon="normal" action="bypass -h Quest Q10785_LettersFromTheQueen_FieldsOfMassacre 33867-03.htm">Yes.</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Shuvann:<br>
I see. Let me find the document, where I recorded what happened.<br>
(You can obtain the next Letter from the Queen at Level 65.)
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>The Queen's Letter<br>
A part of the Broken Device has been found. You must retrieve it<br>
Go talk to <font color=LEVEL>High Priest Orven</font> in Einhased Temole in the <font color=LEVEL>Town of Aden</font>. He will tell you the details.<br>
<button align="left" icon="quest" action="bypass -h Q10785_Teleport">Here I go!</button>
</body></html>

View File

@@ -0,0 +1,253 @@
package quests.Q10785_LettersFromTheQueen_FieldsOfMassacre;
import com.l2jmobius.Config;
import com.l2jmobius.gameserver.ai.CtrlIntention;
import com.l2jmobius.gameserver.cache.HtmCache;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.enums.Race;
import com.l2jmobius.gameserver.handler.BypassHandler;
import com.l2jmobius.gameserver.handler.IBypassHandler;
import com.l2jmobius.gameserver.model.Location;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.events.EventType;
import com.l2jmobius.gameserver.model.events.ListenerRegisterType;
import com.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
import com.l2jmobius.gameserver.model.events.annotations.RegisterType;
import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerLevelChanged;
import com.l2jmobius.gameserver.model.holders.ItemHolder;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
import com.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
/**
* Letters From The Queen: Fields Of Massacre (10785)
* @URL https://l2wiki.com/Letters_from_the_Queen:_Fields_of_Massacre
* @author Gigi
*/
public class Q10785_LettersFromTheQueen_FieldsOfMassacre extends Quest implements IBypassHandler
{
// NPCs
private static final int ORVEN = 30857;
private static final int SHUVANN = 33867;
// Items
private static final ItemHolder SCROLL_OF_ESCAPE_FIELDS_OF_MASSACRE = new ItemHolder(37029, 1);
private static final ItemHolder STEEL_DOOR_GUILD = new ItemHolder(37045, 71);
private static final ItemHolder EWA = new ItemHolder(729, 1);
// Reward
private static final int EXP_REWARD = 807240;
private static final int SP_REWARD = 193;
// Misc
private static final int MIN_LEVEL = 61;
private static final int MAX_LEVEL = 64;
// Teleport
private static final Location TP_LOC = new Location(147446, 22761, -1984);
private static final String[] TP_COMMANDS =
{
"Q10785_Teleport"
};
public Q10785_LettersFromTheQueen_FieldsOfMassacre()
{
super(10785, Q10785_LettersFromTheQueen_FieldsOfMassacre.class.getSimpleName(), "Letters from the Queen: FieldsOfMassacre");
addStartNpc(ORVEN);
addTalkId(ORVEN, SHUVANN);
addCondRace(Race.ERTHEIA, "noErtheia.html");
addCondMinLevel(MIN_LEVEL, "no_level.html");
BypassHandler.getInstance().registerHandler(this);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "30857-02.htm":
case "30857-04.html":
case "33867-02.htm":
{
htmltext = event;
break;
}
case "30857-03.htm": // start the quest
{
qs.startQuest();
if (qs.getQuestItemsCount(SCROLL_OF_ESCAPE_FIELDS_OF_MASSACRE.getId()) < 1)
{
qs.giveItems(SCROLL_OF_ESCAPE_FIELDS_OF_MASSACRE);
player.sendPacket(new ExShowScreenMessage("Try using the teleport scroll Orven gave you to go to Fields of Massacre.", 10000));
qs.setCond(2, true);
htmltext = event;
}
break;
}
case "33867-03.htm":
{
if (qs.isCond(2))
{
player.sendPacket(new ExShowScreenMessage("Grow stronger here until you receive the next letter from Queen Navari at Lv. 65!", 5000));
qs.giveItems(STEEL_DOOR_GUILD);
qs.giveItems(EWA);
qs.addExpAndSp(EXP_REWARD, SP_REWARD);
playSound(player, QuestSound.ITEMSOUND_QUEST_FINISH);
qs.exitQuest(false, true);
htmltext = event;
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = null;
if (qs == null)
{
return htmltext;
}
if (player.getRace() != Race.ERTHEIA)
{
return "noErtheia.html";
}
switch (qs.getState())
{
case State.CREATED:
{
switch (npc.getId())
{
case ORVEN:
{
htmltext = "30857-01.html";
break;
}
case SHUVANN:
{
if (player.getRace() != Race.ERTHEIA)
{
htmltext = getNoQuestMsg(player);
}
else if (qs.isCreated())
{
htmltext = getNoQuestMsg(player);
}
break;
}
}
break;
}
case State.STARTED:
{
switch (npc.getId())
{
case ORVEN:
{
if (qs.isCond(1))
{
playSound(player, QuestSound.ITEMSOUND_QUEST_MIDDLE);
htmltext = "30857-03.htm";
}
else if (qs.isCond(2))
{
htmltext = "30857-04.html";
}
break;
}
case SHUVANN:
{
if (qs.isCond(2))
{
htmltext = "33867-01.html";
}
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
@RegisterEvent(EventType.ON_PLAYER_LEVEL_CHANGED)
@RegisterType(ListenerRegisterType.GLOBAL)
public void OnPlayerLevelChanged(OnPlayerLevelChanged event)
{
if (Config.DISABLE_TUTORIAL)
{
return;
}
final L2PcInstance player = event.getActiveChar();
final int oldLevel = event.getOldLevel();
final int newLevel = event.getNewLevel();
if ((oldLevel == (newLevel - 1)) && (player.getLevel() >= MIN_LEVEL) && (player.getLevel() <= MAX_LEVEL) && (player.getRace() == Race.ERTHEIA))
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
final NpcHtmlMessage html = new NpcHtmlMessage(0, 0);
html.setHtml(HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "scripts/quests/Q10785_LettersFromTheQueen_FieldsOfMassacre/Announce.html"));
player.sendPacket(html);
}
}
}
@Override
public boolean useBypass(String command, L2PcInstance player, L2Character bypassOrigin)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) || (player.getLevel() < MIN_LEVEL) || (player.getLevel() > MAX_LEVEL) || (player.getRace() != Race.ERTHEIA))
{
return false;
}
if (player.isInParty())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in party.", 5000));
}
else if (player.isInCombat())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you in combat status.", 5000));
}
else if (player.isInDuel())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in a duel.", 5000));
}
else if (player.isInOlympiadMode())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in Olympiad.", 5000));
}
else if (player.isInVehicle())
{
player.sendPacket(new ExShowScreenMessage("You cannot teleport when you are in any vehicle or mount.", 5000));
}
else
{
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
player.teleToLocation(TP_LOC);
}
return true;
}
@Override
public String[] getBypassList()
{
return TP_COMMANDS;
}
}

View File

@@ -0,0 +1,3 @@
<html><body>High Priest Orven:<br>
You are not Ertheia, this quest is not for you.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>You don't meet level requirements<br>
(Quest available from level 61 and above)
</body></html>

View File

@@ -274,7 +274,7 @@ import quests.Q10763_TerrifyingChertuba.Q10763_TerrifyingChertuba;
import quests.Q10764_FreeSpirit.Q10764_FreeSpirit; import quests.Q10764_FreeSpirit.Q10764_FreeSpirit;
import quests.Q10769_LettersFromTheQueen_CrumaTower.Q10769_LettersFromTheQueen_CrumaTower; import quests.Q10769_LettersFromTheQueen_CrumaTower.Q10769_LettersFromTheQueen_CrumaTower;
import quests.Q10782_LettersFromTheQueen_ForsakenPlains.Q10782_LettersFromTheQueen_ForsakenPlains; import quests.Q10782_LettersFromTheQueen_ForsakenPlains.Q10782_LettersFromTheQueen_ForsakenPlains;
import quests.Q10785_LettersFromTheQueen_FieldsOfMassacre.Q10785_LettersFromTheQueen_FieldsOfMassacre;
/** /**
* @author NosBit * @author NosBit
@@ -539,7 +539,8 @@ final class QuestMasterHandler
Q10763_TerrifyingChertuba.class, Q10763_TerrifyingChertuba.class,
Q10764_FreeSpirit.class, Q10764_FreeSpirit.class,
Q10769_LettersFromTheQueen_CrumaTower.class, Q10769_LettersFromTheQueen_CrumaTower.class,
Q10782_LettersFromTheQueen_ForsakenPlains.class Q10782_LettersFromTheQueen_ForsakenPlains.class,
Q10785_LettersFromTheQueen_FieldsOfMassacre.class
}; };
public static void main(String[] args) public static void main(String[] args)