This commit is contained in:
mobius
2015-01-01 20:02:50 +00:00
parent eeae660458
commit a6a3718849
17894 changed files with 2818932 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
<html><body>Seer Reva:<br>
Behold... countless ghosts encircle the Tower of Insolence! Just listen to their horrible screams! Do you feel their incredible rage?<br>
The sword of a devil shall pierce the heart of an angel, and the bright red blood of the last emperor will run through the streets! Dawn and dusk will become as one, and the heavens and earth will tremble! This is how Pa'agrio describes the beginning of endless winter...<br>
The arrogant humans are hastening their grisly fate! Unless the wrathful souls of the dead can be appeased, a terrible apocalypse will surely destroy this land forever!<br>
I beg of you! Will you take the risk of the tower and help us?<br>
<a action="bypass -h Quest Q00371_ShrieksOfGhosts 30867-02.htm">"I will brave the tower."</a>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Seer Reva:<br>
Humans so easily ignore the fact that the Tower of Insolence is like a gigantic tomb, erected at the expense of countless lives! To conceal the secret of the tower, the despot Baium executed thousands of slaves and buried them there. Their vengeful spirits haunt the tower to this day.<br>
Hurry to the <font color="LEVEL">Tower of Insolence</font>. There you will find the undead warriors who serve the Devil's Overlord. You must kill <font color="LEVEL">Hallate's warriors, Hallate's knights and Hallate's commanders</font>. Don't give an inch! Recover the <font color="LEVEL">Ancient Ash Urns</font>! Bring back the ashes and I will perform the ritual of fire that will put the undead warriors to rest. If your work is deemed worthy in my eyes, I will bestow upon you a prize. Bring me 100 or more ash urns at once and you will receive an even greater prize!
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Seer Reva:<br>
Behold... countless ghosts encircle the Tower of Insolence! Just listen to their horrible screams! Do you feel their incredible rage?<br>
The sword of a devil shall pierce the heart of an angel, and the bright red blood of the last emperor will run through the streets! Dawn and dusk will become as one, and the heavens and earth will tremble! This is how Pa'agrio describes the beginning of endless winter...<br>
The arrogant humans are hastening their grisly fate! Unless the wrathful souls of the dead can be appeased, a terrible apocalypse will surely destroy this land forever!<br>
Take heed, young warrior! When you've developed your skills to the point that you can brave the tower, come and see me.<br>
(This quest may only be undertaken by a character of level 59 or above.)
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Seer Reva:<br>
Congratulations on your safe return, young soldier! Word has come that the tower has become a chaotic entanglement of angels and demons. I trust that you have recovered many of the <font color="LEVEL">Ancient Ash Urns</font> from Hallate's warriors, knights and commanders!<br>
The <font color="LEVEL">Ancient Porcelain</font> you brought doesn't contain any remains. It was only used for decoration! It's no good to me, you can keep it for yourself! Either sell it at a store or take it to <font color="LEVEL">antique dealer Patrin</font>! He is at the general store in the Town of Oren.<br>
<a action="bypass -h Quest Q00371_ShrieksOfGhosts 30867-05.html">Hand over the Ancient Ash Urns.</a><br>
<a action="bypass -h Quest Q00371_ShrieksOfGhosts 30867-08.html">Settle the account later.</a><br>
<a action="bypass -h Quest Q00371_ShrieksOfGhosts 30867-09.html">"I want to quit."</a>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Seer Reva:<br>
How rude! You come here empty-handed and have the gall to demand a prize? Hurry to the Tower of Insolence and find the Ancient Ash Urns! The souls of the undead warriors cry out for rest! Don't waste any more time!
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Seer Reva:<br>
These are remains of the dead, trampled by a despot... I can feel their bitterness, even after one thousand years!<br>
Listen to me, young soldier! I, Reva, will grant you a prize for your hard work! Take it!<br>
<a action="bypass -h Quest Q00371_ShrieksOfGhosts 30867-08.html">Continue the mission.</a><br>
<a action="bypass -h Quest Q00371_ShrieksOfGhosts 30867-09.html">Quit the mission.</a>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Seer Reva:<br>
These are remains of the dead, trampled by a despot... I can feel their bitterness, even after one thousand years!<br>
You have brought over 100 ash urns at once! What a magnificent accomplishment! As I promised, I will grant you a special <font color="LEVEL"> prize</font>! Take it!<br>
<a action="bypass -h Quest Q00371_ShrieksOfGhosts 30867-08.html">Continue the mission.</a><br>
<a action="bypass -h Quest Q00371_ShrieksOfGhosts 30867-09.html">Quit the mission.</a>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Seer Reva:<br>
Failure in this mission would prove catastrophic to us! Don't underestimate its importance! This is your duty! Do it!
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Seer Reva:<br>
Would you ignore the desperate cries of the dead? If you are so callous, I won't stop you! You must be aware that the failure of this mission will bring a terrible and irreversible disaster upon us. But if you've made up your mind, so be it! Your help is appreciated. Tejakar Oroka!
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Seer Reva:<br>
Congratulations on your safe return, young soldier! Word has come that the tower has become a chaotic entanglement of angels and demons. Have you vanquished Hallate's warriors, Hallate's knights and Hallate's commanders and recovered the <font color="LEVEL">Ancient Ash Urns</font>?<br>
<a action="bypass -h Quest Q00371_ShrieksOfGhosts 30867-05.html">Hand over the Ancient Ash Urns.</a><br>
<a action="bypass -h Quest Q00371_ShrieksOfGhosts 30867-08.html">Settle the account later.</a><br>
<a action="bypass -h Quest Q00371_ShrieksOfGhosts 30867-09.html">"I quit."</a>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Antique Dealer Patrin:<br>
It has come to my attention that the Orc seer Reva of the Town of Aden is collecting Ancient Ash Urns. I asked him to give them to me so that I could sell them for a handsome price to antique collectors. He refused my offer, insisting that he needed them for a ritual! He promised me that if he finds an urn that does not contain any remains he would send it to me. Have you brought me such an item?<br>
<a action="bypass -h Quest Q00371_ShrieksOfGhosts 30929-02.html">"Tell me about the appraisal."</a><br>
<a action="bypass -h Quest Q00371_ShrieksOfGhosts 30929-03.html">"Please appraise the urn."</a>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Antique Dealer Patrin:<br>
An appraisal determines the true value of an item! To the untrained eye, an antique piece like this one may seem rather ordinary. But to the experienced eye of an expert like myself, each subtle mark and worn surface tells a story. The materials and techniques used to create it become clear to me.<br>
If the porcelain you bring me turns out to be a <font color="LEVEL">famous</font> or a <font color="LEVEL">high grade</font> porcelain, it will fetch a very high price at the store.<br>If the appraisal shows that the porcelain is <font color="LEVEL">low grade</font> or <font color="LEVEL">lowest grade</font>, it becomes practically worthless! Such items are better left unappraised.<br>
<a action="bypass -h Quest Q00371_ShrieksOfGhosts 30929-01.html">Back</a>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Antique Dealer Patrin:<br>
What's the big idea, coming to me empty-handed for an appraisal? Are you crazy or is this some kind of a joke?
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Antique Dealer Patrin:<br>
Just a moment... Let me get my glasses...<br>
Now, what have we here, hmm?<br>
Oh, my! Indeed!<br>
This is a <font color="LEVEL">famous porcelain</font>, made by the court sculptors! It is of the highest quality. It will fetch a great price at any store!
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Antique Dealer Patrin:<br>
Just a moment... Let me get my glasses...<br>
What have we here, hmm? Hmm...<br>
Oh my! Indeed!<br>
You've found a <font color="LEVEL">high grade</font> porcelain. It has been glazed to make it shiny. Most likely it decorated the home of an Elmoreden aristocrat... It will fetch a good price at any store.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Antique Dealer Patrin:<br>
Just a moment... Let me get my glasses...<br>
Now, what have we here, hmm? Oh Oh...!<br>
Well, there's no go way to say this... This is a <font color="LEVEL">low grade</font> porcelain. Take a look here... Do you see this scratch? And look at this chipped edge... I'm sorry. It won't fetch much at a store.
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Antique Dealer Patrin:<br>
Just a moment... Let me get my glasses...<br>
Now, what have we here, hmm...<br>
Oh my!<br>
This is the <font color="LEVEL">lowest grade</font> porcelain I've ever seen! Look at the large crack on the side. Do you see it? The texture is very crude, made from coarse clay... Sorry to disappoint you, but it is practically worthless...
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Antique Dealer Patrin:<br>
Just a moment... Let me get my glasses...<br>
Now, what have we here, hmm...?<br>
Wha...?!! I just touched it once... and it shattered into a thousand pieces! Oh, my! How embarrassing! I should've been more careful!<br>
Ahem! I'm so sorry. Objects this old tends to be fragile and are easily broken...
</body></html>

View File

@@ -0,0 +1,232 @@
/*
* Copyright (C) 2004-2014 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.Q00371_ShrieksOfGhosts;
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;
import com.l2jserver.gameserver.util.Util;
/**
* Shrieks of Ghosts (371)
* @author Adry_85
*/
public final class Q00371_ShrieksOfGhosts extends Quest
{
private static final class DropInfo
{
public final int _firstChance;
public final int _secondChance;
public DropInfo(int firstChance, int secondChance)
{
_firstChance = firstChance;
_secondChance = secondChance;
}
public int getFirstChance()
{
return _firstChance;
}
public int getSecondChance()
{
return _secondChance;
}
}
// NPCs
private static final int REVA = 30867;
private static final int PATRIN = 30929;
// Items
private static final int ANCIENT_ASH_URN = 5903;
private static final int ANCIENT_PORCELAIN = 6002;
private static final int ANCIENT_PORCELAIN_EXCELLENT = 6003;
private static final int ANCIENT_PORCELAIN_HIGH_QUALITY = 6004;
private static final int ANCIENT_PORCELAIN_LOW_QUALITY = 6005;
private static final int ANCIENT_PORCELAIN_LOWEST_QUALITY = 6006;
// Misc
private static final int MIN_LEVEL = 59;
private static final Map<Integer, DropInfo> MOBS = new HashMap<>();
static
{
MOBS.put(20818, new DropInfo(350, 400)); // hallates_warrior
MOBS.put(20820, new DropInfo(583, 673)); // hallates_knight
MOBS.put(20824, new DropInfo(458, 538)); // hallates_commander
}
public Q00371_ShrieksOfGhosts()
{
super(371, Q00371_ShrieksOfGhosts.class.getSimpleName(), "Shrieks of Ghosts");
addStartNpc(REVA);
addTalkId(REVA, PATRIN);
addKillId(MOBS.keySet());
registerQuestItems(ANCIENT_ASH_URN);
}
@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 "30867-02.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "30867-05.html":
{
final long ancientAshUrnCount = getQuestItemsCount(player, ANCIENT_ASH_URN);
if (ancientAshUrnCount < 1)
{
htmltext = event;
}
else if (ancientAshUrnCount < 100)
{
giveAdena(player, (ancientAshUrnCount * 1000) + 15000, true);
takeItems(player, ANCIENT_ASH_URN, -1);
htmltext = "30867-06.html";
}
else
{
giveAdena(player, (ancientAshUrnCount * 1000) + 37700, true);
takeItems(player, ANCIENT_ASH_URN, -1);
htmltext = "30867-07.html";
}
break;
}
case "30867-08.html":
case "30929-01.html":
case "30929-02.html":
{
htmltext = event;
break;
}
case "30867-09.html":
{
giveAdena(player, getQuestItemsCount(player, ANCIENT_ASH_URN) * 1000, true);
qs.exitQuest(true, true);
htmltext = "30867-09.html";
break;
}
case "30929-03.html":
{
if (!hasQuestItems(player, ANCIENT_PORCELAIN))
{
htmltext = event;
}
else
{
final int random = getRandom(100);
if (random < 2)
{
giveItems(player, ANCIENT_PORCELAIN_EXCELLENT, 1);
htmltext = "30929-04.html";
}
else if (random < 32)
{
giveItems(player, ANCIENT_PORCELAIN_HIGH_QUALITY, 1);
htmltext = "30929-05.html";
}
else if (random < 62)
{
giveItems(player, ANCIENT_PORCELAIN_LOW_QUALITY, 1);
htmltext = "30929-06.html";
}
else if (random < 77)
{
giveItems(player, ANCIENT_PORCELAIN_LOWEST_QUALITY, 1);
htmltext = "30929-07.html";
}
else
{
htmltext = "30929-08.html";
}
takeItems(player, ANCIENT_PORCELAIN, 1);
}
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs == null) || !Util.checkIfInRange(1500, npc, killer, true))
{
return null;
}
final DropInfo info = MOBS.get(npc.getId());
final int random = getRandom(1000);
if (random < info.getFirstChance())
{
qs.giveItemRandomly(npc, ANCIENT_ASH_URN, 1, 0, 1.0, true);
}
else if (random < info.getSecondChance())
{
qs.giveItemRandomly(npc, ANCIENT_PORCELAIN, 1, 0, 1.0, true);
}
return super.onKill(npc, killer, isSummon);
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs.isCreated())
{
htmltext = (player.getLevel() >= MIN_LEVEL) ? "30867-01.htm" : "30867-03.htm";
}
else if (qs.isStarted())
{
if (npc.getId() == REVA)
{
htmltext = (hasQuestItems(player, ANCIENT_PORCELAIN)) ? "30867-04.html" : "30867-10.html";
}
else
{
htmltext = "30929-01.html";
}
}
return htmltext;
}
}