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,6 @@
<html><body>Magister Xenovia:<br>
I'm afraid I can't tell you much about that Medium Jar, not that you are the first to inquire about it... Some fellow from the Dark Elven village was asking questions about it a while back.<br>
I'm of the opinion that the urn's abilities have been vastly over-stated in these wild rumors. I don't believe that actual souls of the dead can be conjured with it. At most it is a simple conduit between this world and the abyss where Shilen dwells. Hmm, that isn't far from the rumors, is it? Heh heh...<br>
Oh, yes, I forgot. Some powder was delivered here recently that is supposed to be used with the urn. Something about putting it into the urn along with an article belonging to a dead person...<br>
<a action="bypass -h Quest Q00345_MethodToRaiseTheDead 30912-02.html">"I wish to use the Medium Jar."</a>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Magister Xenovia:<br>
Well, we certainly aren't trying to keep anyone from using the urn that wants to... I suppose you will be wanting to summon a departed one's soul? I'm sorry, my friend, but the powder you need will not come for free... It may not look like much, but it is the property of the guild... A pouch of it will cost you 1,000 adena.<br>
<a action="bypass -h Quest Q00345_MethodToRaiseTheDead 30912-03.html">"I wish to buy the powder."</a><br>
<a action="bypass -h Quest Q00345_MethodToRaiseTheDead 30912-05.html">Quit</a>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Magister Xenovia:<br>
That's what I like! A plain speaker! Now put this powder into the medium jar along with the bones you have. I fear that the results may be other than what you expect...
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Magister Xenovia:<br>
You talk the talk but your wallet is weak. Come back when you have more adena.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Magister Xenovia:<br>
Whatever. Come back if you change your mind.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Magister Xenovia:<br>
Were the results what you expected? I feel I must warn you, it's not healthy for Humans to spend so much time with the dead. It tends to color your outlook.<br>
By the way, if you want to get rid of all those <font color="LEVEL">useless Bone Fragments</font> you should sell them to <font color="LEVEL">Mad Doctor Orpheus</font>. He can be found in the eastern part of the village.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Locksmith Dorothy:<br>
Those damn Crokians have devoured all my partners! Not to mention the fact that they have ruined my business!<br>
Who are you? Do we have any business together? Are you interested in making some easy money?<br>
<a action="bypass -h Quest Q00345_MethodToRaiseTheDead 30970-02.htm">"I want to make some money!"</a>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Locksmith Dorothy:<br>
I thought you might. I could use some extra adena as well. I think we will make a good team! Here's my plan...<br>
Through great personal sacrifice I have located the treasure of the Pirate Captain Zaken! My former partners found it on Pirate's Island and were bringing a small part of it back to this village. Just before they arrived, in the field of reeds outside the village, they were slaughtered and devoured by Crokians! I searched the site of the massacre for any remnant of the treasure but found nothing. Either they managed to hide the treasure somewhere, or it rests in the bellies of the damned Crokians!<br>
<a action="bypass -h Quest Q00345_MethodToRaiseTheDead 30970-03.html">"What happened after that?"</a>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Locksmith Dorothy:<br>
Not much, my friend... If I could, I would slice open the bellies of all the damned Crokians I could find! If I didn't locate the treasure, as least I would have my revenge, no?<br>
In fact, I would really appreciate it if you would go to the <font color="LEVEL">Field of Whispers</font> just outside the village and kill <font color="LEVEL">Crokians and Crokian warriors</font>. Their corpses should yield the remains of my friends, and possibly more. Bring whatever you find back to me. Meanwhile, I will continue my investigation. If we find the treasure you will be greatly rewarded...
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Locksmith Dorothy:<br>
Those damn Crokians! They have ruined my business! Why does Enverun only buy the pelts of alligators? He should put a price on the skins of Crokians! At least then they would be of some use!<br>
So, what do you want? Do you need a key or a locksmith? Or maybe you're looking for a knife wielding thug or safecracker?<br>
(This quest may only be undertaken by a character of level 35 or above.)
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Locksmith Dorothy:<br>
Actually, it would be much better if you located all the remains of my friends (skull, back, ribs, arms and legs, etc.) You must kill every single one of those damned <font color="LEVEL">Crokians and Crokian warriors</font> in the <font color="LEVEL">Field of Whispers</font>. I hope that I didn't over-estimate you abilities...?
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Locksmith Dorothy:<br>
Ah, yes, I see that you have assembled an entire skeleton. Good work! Those damned Crokians must have stripped them before they ate them, I don't see any remnant of clothing. I can't tell which one of my partners this is...<br>
I really hate to do this, but...<br>
<a action="bypass -h Quest Q00345_MethodToRaiseTheDead 30970-07.html">"What?"</a>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Locksmith Dorothy:<br>
The Dark Elves! I hate dealing with them, but there is a woman named <font color="LEVEL">Xenovia</font> at their local guild who could be of great assistance to us. She always carries around a strange looking pot. I've heard that she uses it to summon the souls of the dead... If this is true, perhaps she can help us... Take these bones to her. Or, if you have some other method of communicating with the dead, speak up!
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Locksmith Dorothy:<br>
Have you been to the guild of the Dark Elves yet? I cannot deal with them, you must find <font color="LEVEL">Magister Xenovia</font> and secure her assistance in contacting the souls of my dead partners! Or maybe you have a better idea?
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Locksmith Dorothy:<br>
Have you accomplished anything yet? What is that powder? Summons souls of the dead, eh? Splendid! Let's see if it works!
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Locksmith Dorothy:<br>
What is going on? I thought you would use that powder to summon the souls of my dead friends from the pot! What is this?!
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Locksmith Dorothy:<br>
Is that so? Well, if that is what he said it must be true! That is a long journey there and back, it will take several weeks! Humph! Why did they all die and leave me alone like this... Those damned fools! They were so close to unimaginable wealth, and then to be eaten by Crokians!<br>
Well, thank you my friend. I will give you your share now, it hardly seems fair to ask you to wait for several weeks...If you use this wisely it will bring you great wealth!
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Locksmith Dorothy:<br>
Hey, don't try to pull that "little village maiden" crap with me! I worked hard to collect all those bones and if I need to I will go and collect them all again! Oh, wait, I just thought of something...<br>
Oh! Now I remember... One time Iason Heine's nephew offered a reward for finding a young maiden... His tastes are quite common for an aristocrat! If we play this right we could make a lot of money!<br>
You mustn't tell anyone about this. Here, take this as compensation. This information came from someone inside the Trade Guild... If you take this to the Blacksmith Guild, they will give you a good amount of money for it.<br>
Ah, come back if you continue to help your friends collect the ashes.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Mad Doctor Orpheus:<br>
We are treading on dangerous ground here, my friend! We are entering the realm of gods! Unless you fully appreciate the gravity of our situation you are bound for torment and tragedy! Yes, yes, dangerous ground indeed...<br>
I have many enemies, not least among them those who envy my drive and ambition. Some of those idiots even accuse me of being a graverobber! Bwa ha ha ha ha!<br>
<a action="bypass -h Quest Q00345_MethodToRaiseTheDead 30971-02.html">"Are you interested in some old bones I found?"</a>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Mad Doctor Orpheus:<br>
Bones, eh? Could I see them, please?<br>
Oh, lovely! Although these bones are obviously not all human. I see some Animal Bones mixed in there. But I could definitely use them. Can I have them?<br>
<a action="bypass -h Quest Q00345_MethodToRaiseTheDead 30971-03.html">Give him the bones.</a>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Mad Doctor Orpheus:<br>
Oh, that is so kind of you! Thank you so very much! Science thanks you! I dream of the day when I and my colleagues can venture into the realm of Shilen... When that day comes the secrets of the universe will at last be unveiled! Just thinking about it makes my heart race!<br>
This isn't much, but please accept it as a token of my appreciation.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Soul Urn:<br>
This urn is a conduit between the natural world and the world of Shilen. Bones and magical powder mixed together within it will summon souls.<br>
<a action="bypass -h Quest Q00345_MethodToRaiseTheDead 30973-02.html">Listen to the urn.</a>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Soul Urn:<br>
A voice emanates from the urn:<br>
"My name is Oliver... Who called me...? I was killed and eaten by Crokians... Why have you called me here?"<br>
<a action="bypass -h Quest Q00345_MethodToRaiseTheDead 30973-03.html">Explain the situation to the spirit.</a>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Soul Urn:<br>
A voice emanates from the urn:<br>
"I understand. Yes, Dorothy... I hesitate to give her the treasure I worked so hard for... But what difference does it make? I'm dead... Tell her to put some flowers on my grave... The treasure is in the warehouse. The password is..."<br>
The urn goes silent...
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Soul Urn:<br>
A voice emanates from the jar:<br>
"My name is Clarine... Who called me...? I'm dead! What could you possibly want of me?"<br>
<a action="bypass -h Quest Q00345_MethodToRaiseTheDead 30973-05.html">Explain the situation to the spirit.</a>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Soul Urn:<br>
A voice emanates from the urn:<br>
"I understand... Dorothy was a lazy cow who did nothing but take the fruits of our labor... I'll tell you what she wants to know, but only because it's you... What she seeks is in the warehouse. That's all... Now, remember, be kind to others while you live. We shall meet again when you die."<br>
The urn falls silent...
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Soul Urn:<br>
The sound of crying emanates from the urn:<br>
Sob! Sniff! Waahhhh! Booo hooo!<br>
<a action="bypass -h Quest Q00345_MethodToRaiseTheDead 30973-07.html">Explain the situation.</a>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Soul Urn:<br>
A voice emanates from the jar:<br>
I have no idea what you're talking about... I was never an adventurer... I don't know anyone named Dorothy... Boo hoo hoo... Wahhhh!<br>
The jar falls silent...
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Soul Urn:<br>
A voice emanates from the urn:<br>
"My name is Oliver... Who called me...? I was killed and eaten by Crokians... Why did you call me?"<br>
<a action="bypass -h Quest Q00345_MethodToRaiseTheDead 30973-03.html">Explain the situation to the spirit.</a>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Soul Urn:<br>
A voice emanates from the urn:<br>
"My name is Clarine... Who called me...? I'm dead! What could you possibly want of me?"<br>
<a action="bypass -h Quest Q00345_MethodToRaiseTheDead 30973-05.html">Explain the situation to the spirit.</a>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Soul Urn:<br>
The sound of crying emanates from the urn:<br>
Sob! Waaahhhh! Boo hoooo...<br>
<a action="bypass -h Quest Q00345_MethodToRaiseTheDead 30973-07.html">Explain the situation.</a>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Soul Urn:<br>
The urn is silent.
</body></html>

View File

@@ -0,0 +1,431 @@
/*
* 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.Q00345_MethodToRaiseTheDead;
import com.l2jserver.gameserver.enums.QuestSound;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.itemcontainer.Inventory;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.util.Util;
/**
* Method to Raise the Dead (345)
* @author Adry_85
*/
public final class Q00345_MethodToRaiseTheDead extends Quest
{
// NPCs
private static final int XENOVIA = 30912;
private static final int DOROTHY = 30970;
private static final int ORPHEUS = 30971;
private static final int MEDIUM_JAR = 30973;
// Items
private static final int IMPERIAL_DIAMOND = 3456;
private static final int VICTIMS_ARM_BONE = 4274;
private static final int VICTIMS_THIGH_BONE = 4275;
private static final int VICTIMS_SKULL = 4276;
private static final int VICTIMS_RIB_BONE = 4277;
private static final int VICTIMS_SPINE = 4278;
private static final int USELESS_BONE_PIECES = 4280;
private static final int POWDER_TO_SUMMON_DEAD_SOULS = 4281;
private static final int BILL_OF_IASON_HEINE = 4407;
// Misc
private static final int MIN_LEVEL = 35;
// Monsters
private static final int CROKIAN = 20789;
private static final int CROKIAN_WARRIOR = 20791;
public Q00345_MethodToRaiseTheDead()
{
super(345, Q00345_MethodToRaiseTheDead.class.getSimpleName(), "Method to Raise the Dead");
addStartNpc(DOROTHY);
addTalkId(DOROTHY, ORPHEUS, MEDIUM_JAR, XENOVIA);
addKillId(CROKIAN, CROKIAN_WARRIOR);
registerQuestItems(VICTIMS_ARM_BONE, VICTIMS_THIGH_BONE, VICTIMS_SKULL, VICTIMS_RIB_BONE, VICTIMS_SPINE, USELESS_BONE_PIECES, POWDER_TO_SUMMON_DEAD_SOULS);
}
@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 "30970-02.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "30970-03.html":
{
qs.setMemoState(1);
htmltext = event;
break;
}
case "30970-07.html":
{
if (hasQuestItems(player, VICTIMS_ARM_BONE, VICTIMS_THIGH_BONE, VICTIMS_SKULL, VICTIMS_RIB_BONE, VICTIMS_SPINE))
{
qs.setMemoState(2);
qs.setCond(2, true);
htmltext = event;
}
break;
}
case "30971-02.html":
case "30912-05.html":
{
htmltext = event;
break;
}
case "30971-03.html":
{
final long uselessBonePiecesCount = getQuestItemsCount(player, USELESS_BONE_PIECES);
if (uselessBonePiecesCount > 0)
{
giveAdena(player, uselessBonePiecesCount * 104, true);
takeItems(player, USELESS_BONE_PIECES, -1);
htmltext = event;
}
break;
}
case "30973-02.html":
{
final int memoStateEx = qs.getMemoStateEx(1);
if (memoStateEx == 1)
{
htmltext = event;
}
else if (memoStateEx == 2)
{
htmltext = "30973-04.html";
}
else if (memoStateEx == 3)
{
htmltext = "30973-06.html";
}
break;
}
case "30973-03.html":
{
if (qs.isMemoState(7) && (qs.getMemoStateEx(1) == 1))
{
qs.setMemoState(8);
qs.setCond(6, true);
htmltext = event;
}
break;
}
case "30973-05.html":
{
if (qs.isMemoState(7) && (qs.getMemoStateEx(1) == 2))
{
qs.setMemoState(8);
qs.setCond(6, true);
htmltext = event;
}
break;
}
case "30973-07.html":
{
if (qs.isMemoState(7) && (qs.getMemoStateEx(1) == 3))
{
qs.setMemoState(8);
qs.setCond(7, true);
htmltext = event;
}
break;
}
case "30912-02.html":
{
if (qs.isMemoState(2))
{
htmltext = event;
}
break;
}
case "30912-03.html":
{
if (qs.isMemoState(2))
{
if (player.getAdena() >= 1000)
{
giveItems(player, POWDER_TO_SUMMON_DEAD_SOULS, 1);
takeItems(player, Inventory.ADENA_ID, 1000);
qs.setMemoState(3);
qs.setCond(3, true);
htmltext = event;
}
else
{
htmltext = "30912-04.html";
}
}
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getRandomPartyMemberState(killer, 1, 3, npc);
if ((qs == null) || !Util.checkIfInRange(1500, npc, killer, true))
{
return null;
}
final int random = getRandom(100);
if (random <= 5)
{
if (!hasQuestItems(qs.getPlayer(), VICTIMS_ARM_BONE))
{
giveItems(qs.getPlayer(), VICTIMS_ARM_BONE, 1);
}
else
{
giveItems(qs.getPlayer(), USELESS_BONE_PIECES, 1);
}
playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
else if (random <= 11)
{
if (!hasQuestItems(qs.getPlayer(), VICTIMS_THIGH_BONE))
{
giveItems(qs.getPlayer(), VICTIMS_THIGH_BONE, 1);
}
else
{
giveItems(qs.getPlayer(), USELESS_BONE_PIECES, 1);
}
playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
else if (random <= 17)
{
if (!hasQuestItems(qs.getPlayer(), VICTIMS_SKULL))
{
giveItems(qs.getPlayer(), VICTIMS_SKULL, 1);
}
else
{
giveItems(qs.getPlayer(), USELESS_BONE_PIECES, 1);
}
playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
else if (random <= 23)
{
if (!hasQuestItems(qs.getPlayer(), VICTIMS_RIB_BONE))
{
giveItems(qs.getPlayer(), VICTIMS_RIB_BONE, 1);
}
else
{
giveItems(qs.getPlayer(), USELESS_BONE_PIECES, 1);
}
playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
else if (random <= 29)
{
if (!hasQuestItems(qs.getPlayer(), VICTIMS_SPINE))
{
giveItems(qs.getPlayer(), VICTIMS_SPINE, 1);
}
else
{
giveItems(qs.getPlayer(), USELESS_BONE_PIECES, 1);
}
playSound(qs.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
else if (random <= 60)
{
giveItems(qs.getPlayer(), USELESS_BONE_PIECES, 1);
}
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) ? "30970-01.htm" : "30970-04.htm";
}
else if (qs.isStarted())
{
switch (npc.getId())
{
case DOROTHY:
{
switch (qs.getMemoState())
{
case 0:
{
htmltext = "30970-03.html";
qs.setMemoState(1);
break;
}
case 1:
{
htmltext = (!hasQuestItems(player, VICTIMS_ARM_BONE, VICTIMS_THIGH_BONE, VICTIMS_SKULL, VICTIMS_RIB_BONE, VICTIMS_SPINE)) ? "30970-05.html" : "30970-06.html";
break;
}
case 2:
{
htmltext = "30970-08.html";
break;
}
case 3:
{
htmltext = "30970-09.html";
break;
}
case 7:
{
htmltext = "30970-10.html";
break;
}
case 8:
{
final int memoStateEx = qs.getMemoStateEx(1);
final long uselessBonePiecesCount = getQuestItemsCount(player, USELESS_BONE_PIECES);
if ((memoStateEx == 1) || (memoStateEx == 2))
{
giveItems(player, BILL_OF_IASON_HEINE, 3);
giveAdena(player, 5390 + (70 * uselessBonePiecesCount), true);
htmltext = "30970-11.html";
}
else if (memoStateEx == 3)
{
if (getRandom(100) <= 92)
{
giveItems(player, BILL_OF_IASON_HEINE, 5);
}
else
{
giveItems(player, IMPERIAL_DIAMOND, 1);
}
giveAdena(player, 3040 + (70 * uselessBonePiecesCount), true);
htmltext = "30970-12.html";
}
qs.exitQuest(true, true);
break;
}
}
break;
}
case ORPHEUS:
{
if (hasQuestItems(player, USELESS_BONE_PIECES))
{
htmltext = "30971-01.html";
}
break;
}
case MEDIUM_JAR:
{
switch (qs.getMemoState())
{
case 3:
{
takeItems(player, -1, POWDER_TO_SUMMON_DEAD_SOULS, VICTIMS_ARM_BONE, VICTIMS_THIGH_BONE, VICTIMS_SKULL, VICTIMS_RIB_BONE, VICTIMS_SPINE);
qs.setMemoState(7);
final int random = getRandom(100);
if (random <= 39)
{
qs.setMemoStateEx(1, 1);
}
else if (random <= 79)
{
qs.setMemoStateEx(1, 2);
}
else
{
qs.setMemoStateEx(1, 3);
}
htmltext = "30973-01.html";
break;
}
case 7:
{
final int memoStateEx = qs.getMemoStateEx(1);
if (memoStateEx == 1)
{
htmltext = "30973-08.html";
}
else if (memoStateEx == 2)
{
htmltext = "30973-09.html";
}
else if (memoStateEx == 3)
{
htmltext = "30973-10.html";
}
break;
}
case 8:
{
htmltext = "30973-11.html";
break;
}
}
break;
}
case XENOVIA:
{
if (qs.isMemoState(2))
{
htmltext = "30912-01.html";
}
else if (qs.isMemoState(7) || qs.isMemoState(8) || hasQuestItems(player, POWDER_TO_SUMMON_DEAD_SOULS))
{
htmltext = "30912-06.html";
}
break;
}
}
}
return htmltext;
}
}