Skip to content
Snippets Groups Projects
Commit 2291df6b authored by Adry_85's avatar Adry_85
Browse files

BETA: Retail-like quests:

	* '''Illegitimate Child of the Goddess''' (358)
	* '''For a Sleepless Deadman''' (359)
parent 5b8b2799
No related branches found
No related tags found
No related merge requests found
Showing
with 378 additions and 0 deletions
<html><body>Grand Master Oltlin:<br>
Ah, yes, the bitter ramblings of an old man. As you approach true enlightenment, the shadows grow darker. Among those who pursue glory, some work diligently against the shadow at every opportunity.<br>
At the same time, they must know that their efforts are as futile as covering up the sky with your hand. Of course, I don't need to explain this to you. The gods created us in their own imperfect image.<br>
Perfect beings' only creations are contrivances. As the perfect circle has no edge... perfect hatred only produces monsters.<br>
<a action="bypass -h Quest Q00358_IllegitimateChildOfTheGoddess 30862-03.htm">"Is this a story about... Shilen?"</a>
</body></html>
\ No newline at end of file
<html><body>Grand Master Oltlin:<br>
Her anger towards Gran Kain and Einhasad for a time turned Shilen into a pure and perfect being. That is, she became the literal incarnation of destruction.<br>
As she achieved the purest form of fury, her benevolence and austerity left her completely. Her perfect wrath is the source of those evil creatures.<br>
They are sealed away now, and I don't know what their current condition is, but their very existence proves that she has become a goddess of destruction!<br>
We worshippers of Shilen teach our children that she is our mother, therefore we must calm her wrath.<br>
<a action="bypass -h Quest Q00358_IllegitimateChildOfTheGoddess 30862-04.htm">"Why can't we kill those creatures?"</a>
</body></html>
\ No newline at end of file
<html><body>Grand Master Oltlin:<br>
There are evil creatures close to her. These are the illegitimate children she bore while her fury was at its fiercest... Go slay <font color="LEVEL">Falibati</font> and <font color="LEVEL">Trives</font> who bear a striking resemblence to her. Bring back their <font color="LEVEL">Snake Scales</font>.<br>
<font color="LEVEL">If you bring me 108 Snake Scales, I will teach you a secret, ancient method of creation.</font>
</body></html>
\ No newline at end of file
<html><body>Grand Master Oltlin:<br>
Have you seen the sights of the city? The wonderful castles built by humans, in spite of countless errors and obstacles. Do you have any idea what is beneath them? Often, long shadows are cast under the glow of glory.<br>
You always find the darkest shadows under strong light. Does this make sense to you? I thought not. It seems you will need more training. Why don't you explore the world some more and come back later.<br>
(This quest can only be undertaken by a character of level 63 or higher.)
</body></html>
\ No newline at end of file
<html><body>Grand Master Oltlin:<br>
To restore the dignity and glory of the goddess you must kill <font color="LEVEL">Falibati</font> and <font color="LEVEL">Trives</font>, the illegitimate children born of her wrath, and bring back 108 <font color="LEVEL">Snake Scales</font>.
</body></html>
\ No newline at end of file
<html><body>Grand Master Oltlin:<br>
Thank you for your efforts. I know it was not easy... Needless to say, please don't tell other people that you have done this for me. Above all my children must never learn of it...<br>
In exchange for your efforts, I will give you this Secret Book in which ancient secret creation methods are recorded. I hope it will be helpful to you.<br>
Too many people think they can cover the sky with the palm of their hand. There is such a thing as too much truth... My work will likely never end... If you are ever interested in helping me again, come back to see me.
</body></html>
\ No newline at end of file
/*
* Copyright (C) 2004-2013 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J DataPack is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q00358_IllegitimateChildOfTheGoddess;
import java.util.HashMap;
import java.util.Map;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
/**
* Illegitimate Child of the Goddess (358)
* @author Adry_85
*/
public final class Q00358_IllegitimateChildOfTheGoddess extends Quest
{
// NPC
private static final int OLTRAN = 30862;
// Item
private static final int SNAKE_SCALE = 5868;
// Misc
private static final int MIN_LEVEL = 63;
private static final int SNAKE_SCALE_COUNT = 108;
// Rewards
private static final int[] REWARDS = new int[]
{
5364, // Recipe: Sealed Dark Crystal Shield(60%)
5366, // Recipe: Sealed Shield of Nightmare(60%)
6329, // Recipe: Sealed Phoenix Necklace(70%)
6331, // Recipe: Sealed Phoenix Earring(70%)
6333, // Recipe: Sealed Phoenix Ring(70%)
6335, // Recipe: Sealed Majestic Necklace(70%)
6337, // Recipe: Sealed Majestic Earring(70%)
6339, // Recipe: Sealed Majestic Ring(70%)
};
// Mobs
private static final Map<Integer, Double> MOBS = new HashMap<>();
static
{
MOBS.put(20672, 0.71); // trives
MOBS.put(20673, 0.74); // falibati
}
private Q00358_IllegitimateChildOfTheGoddess()
{
super(358, Q00358_IllegitimateChildOfTheGoddess.class.getSimpleName(), "Illegitimate Child of the Goddess");
addStartNpc(OLTRAN);
addTalkId(OLTRAN);
addKillId(MOBS.keySet());
registerQuestItems(SNAKE_SCALE);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState st = getQuestState(player, false);
if (st == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "30862-02.htm":
case "30862-03.htm":
{
htmltext = event;
break;
}
case "30862-04.htm":
{
st.startQuest();
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance player, boolean isSummon)
{
final QuestState st = getRandomPartyMemberState(player, 1, 3, npc);
if ((st != null) && st.giveItemRandomly(npc, SNAKE_SCALE, 1, SNAKE_SCALE_COUNT, MOBS.get(npc.getId()), true))
{
st.setCond(2, true);
}
return super.onKill(npc, player, isSummon);
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState st = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (st.isCreated())
{
htmltext = ((player.getLevel() >= MIN_LEVEL) ? "30862-01.htm" : "30862-05.html");
}
else if (st.isStarted())
{
if (getQuestItemsCount(player, SNAKE_SCALE) < SNAKE_SCALE_COUNT)
{
htmltext = "30862-06.html";
}
else
{
rewardItems(player, REWARDS[getRandom(REWARDS.length)], 1);
st.exitQuest(true, true);
htmltext = "30862-07.html";
}
}
return htmltext;
}
public static void main(String args[])
{
new Q00358_IllegitimateChildOfTheGoddess();
}
}
<html><body>High Priest Orven:<br>
Do you know about the Devastated Castle? It was built centuries ago to protect against the hordes of barbarians that were rampant even then. We were saved from the most recent invasion of the forces of Elmore by its mighty walls, except of course for the thousands of innocents killed when they poisoned our wells...<br>
Centuries of violent conflict have left the castle in ruins and haunted by the ghosts of the multitudes of warriors who met their bloody end there.<br>
<a action="bypass -h Quest Q00359_ForASleeplessDeadman 30857-02.htm">Listen quietly.</a>
</body></html>
\ No newline at end of file
<html><body>High Priest Orven:<br>
These noble warriors made the ultimate sacrifice and successfully defended the castle from the enemy! There is no more honorable way to die, but their poor souls have not received any proper recognition... No Glory of Einhasad... Not even a Rest of Shilen, which is given to all! This is a long story... Are you sure you want to hear it?<br>
<a action="bypass -h Quest Q00359_ForASleeplessDeadman 30857-03.htm">"Yes, please."</a>
</body></html>
\ No newline at end of file
<html><body>High Priest Orven:<br>
In the time of Raul the Unification King, Gustav Ken Vennerheim fought a bloody battle for the castle. After 130 days of pitched combat, he was slain without ever fulfilling his goal.<br>
But now it seems that even death cannot stop his spirit! He has formed an alliance with the forces of darkness and returned as an undead. He has raised an army of the dead, among them our own warriors who died defending the castle against him! He is attempting to take the Devastated Castle again!<br>
<a action="bypass -h Quest Q00359_ForASleeplessDeadman 30857-04.htm">......!</a>
</body></html>
\ No newline at end of file
<html><body>High Priest Orven:<br>
I feel the agony of their souls, being forced to fight their brothers... Such noble warriors deserve a peaceful rest... <br>
The immortal heroes of Aden must be freed from this evil enslavement! Would you recover their remains and bring them here, to the Temple of Einhasad? You will find them among the <font color="LEVEL">doom archers, doom guards and doom servants</font> in the Fields of Massacre near the <font color="LEVEL">Devastated Castle</font>.<br>
<a action="bypass -h Quest Q00359_ForASleeplessDeadman 30857-05.htm">"I will bring you the remains of the heroes."</a>
</body></html>
\ No newline at end of file
<html><body>High Priest Orven:<br>
When you break the bonds holding their souls, their bodies will turn to ashes. Collect these ashes and bring them to me, I will purify them.<br>
I must have the <font color="LEVEL">remains of 60 heroes</font> to perform the ritual. May Einhasad watch over you...
</body></html>
\ No newline at end of file
<html><body>High Priest Orven:<br>
Do you know about the Devastated Castle? It was built centuries ago to protect against the hordes of barbarians that were rampant even then. We were saved from the most recent invasion of the forces of Elmore by its mighty walls. Centuries of violent conflict have left it in ruins and haunted by the ghosts of the multitudes of warriors who met their bloody end there.<br>
These noble warriors deserve to rest in peace! If you meet anyone capable of taking on the powers of darkness, send them to me!<br>
(This quest may only be undertaken by a character of level 60 or higher.)
</body></html>
\ No newline at end of file
<html><body>High Priest Orven:<br>
The Devastated Castle is northeast of here. There are many restless souls haunting that area. You'll find <font color="LEVEL">doom archers</font>, <font color="LEVEL">doom guards</font>, and <font color="LEVEL">doom servants</font>. Bring back <font color="LEVEL">60 of their remains</font>. Beware the doom knights, doom warriors and doom troopers who patrol there. They are former soldiers of Elmore. They won't let you free their minions easily...
</body></html>
\ No newline at end of file
<html><body>High Priest Orven:<br>
Good work! Now they shall rest in peace!<br>
I give you blessings in the name of Einhasad. May we never have to deal with such a desecration again!<br>
<font color="LEVEL">Now I must pray. Come back later.</font>
</body></html>
\ No newline at end of file
<html><body>High Priest Orven:<br>
Oh, Einhasad! Here are your children. Their last battle has been won.<br>
Take them into your arms, into the world of the dead.<br>
Release them from their bonds and receive them into the bosom of Shilen.<br>
Give them eternal rest and happiness in your light.<br>
For those who grieve these brave warriors still, dry your tears, for now your loved ones are at peace...<br>
<a action="bypass -h Quest Q00359_ForASleeplessDeadman 30857-10.html">Wait until he finishes praying.</a>
</body></html>
\ No newline at end of file
<html><body>High Priest Orven:<br>
The purification ritual is over.<br>
I found a gemstone that was sparkling with a holy light. I think it must have been used by one of the fallen heroes of the castle.<br>
Perhaps they left it for you! Yes, I think they did! Why don't you take it?<br>
There are still many of our fallen comrades out there who have not been put to rest. If you want to help, come back and see me again.
</body></html>
\ No newline at end of file
/*
* Copyright (C) 2004-2013 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J DataPack is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q00359_ForASleeplessDeadman;
import java.util.HashMap;
import java.util.Map;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
/**
* For a Sleepless Deadman (359)
* @author Adry_85
*/
public final class Q00359_ForASleeplessDeadman extends Quest
{
// NPC
private static final int ORVEN = 30857;
// Item
private static final int REMAINS_OF_ADEN_RESIDENTS = 5869;
// Misc
private static final int MIN_LEVEL = 60;
private static final int REMAINS_COUNT = 60;
// Rewards
private static final int[] REWARDS = new int[]
{
5494, // Sealed Dark Crystal Shield Fragment
5495, // Sealed Shield of Nightmare Fragment
6341, // Sealed Phoenix Earring Gemstone
6342, // Sealed Majestic Earring Gemstone
6343, // Sealed Phoenix Necklace Beads
6344, // Sealed Majestic Necklace Beads
6345, // Sealed Phoenix Ring Gemstone
6346, // Sealed Majestic Ring Gemstone
};
// Mobs
private static final Map<Integer, Double> MOBS = new HashMap<>();
static
{
MOBS.put(21006, 0.365); // doom_servant
MOBS.put(21007, 0.392); // doom_guard
MOBS.put(21008, 0.503); // doom_archer
}
private Q00359_ForASleeplessDeadman()
{
super(359, Q00359_ForASleeplessDeadman.class.getSimpleName(), "For a Sleepless Deadman");
addStartNpc(ORVEN);
addTalkId(ORVEN);
addKillId(MOBS.keySet());
registerQuestItems(REMAINS_OF_ADEN_RESIDENTS);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState st = getQuestState(player, false);
if (st == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "30857-02.htm":
case "30857-03.htm":
case "30857-04.htm":
{
htmltext = event;
break;
}
case "30857-05.htm":
{
st.setMemoState(1);
st.startQuest();
htmltext = event;
break;
}
case "30857-10.html":
{
rewardItems(player, REWARDS[getRandom(REWARDS.length)], 4);
st.exitQuest(true, true);
htmltext = event;
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance player, boolean isSummon)
{
final QuestState st = getRandomPartyMemberState(player, 1, 3, npc);
if ((st != null) && st.giveItemRandomly(npc, REMAINS_OF_ADEN_RESIDENTS, 1, REMAINS_COUNT, MOBS.get(npc.getId()), true))
{
st.setCond(2, true);
}
return super.onKill(npc, player, isSummon);
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState st = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (st.isCreated())
{
htmltext = ((player.getLevel() >= MIN_LEVEL) ? "30857-01.htm" : "30857-06.html");
}
else if (st.isStarted())
{
if (st.isMemoState(1))
{
if (getQuestItemsCount(player, REMAINS_OF_ADEN_RESIDENTS) < REMAINS_COUNT)
{
htmltext = "30857-07.html";
}
else
{
takeItems(player, REMAINS_OF_ADEN_RESIDENTS, -1);
st.setMemoState(2);
st.setCond(3, true);
htmltext = "30857-08.html";
}
}
else if (st.isMemoState(2))
{
htmltext = "30857-09.html";
}
}
return htmltext;
}
public static void main(String args[])
{
new Q00359_ForASleeplessDeadman();
}
}
UPDATE character_quests SET name='Q00358_IllegitimateChildOfTheGoddess' WHERE name='358_IllegitimateChildOfAGoddess';
UPDATE character_quests SET name='Q00359_ForASleeplessDeadman' WHERE name='359_ForSleeplessDeadmen';
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment