using System;
namespace Server.Engines.Quests.Haven
{
public class AcceptConversation : QuestConversation
{
public AcceptConversation()
{
}
public override object Message
{
get
{
/* Important Quest Information
*
* During your quest, any important information that a
* NPC gives you, will appear
* in a window such as this one. You can review the information
* at any time during your quest.
*
* Getting Help
*
* Some of the text you will come across during your quest,
* will be underlined links to the codex of wisdom,
* or online help system. You can click on the text to get detailed
* information on the underlined subject. You may also access the
* Codex Of Wisdom by pressing "F1" or by clicking on the "?" on the toolbar
* at the top of your screen.
*
* Context Menus
*
* Context menus can be called up by single left-clicking
* (or Shift + single left-click, if you changed it) on most objects
* or NPCs in the world. Nearly everything, including your own avatar
* will have context menus available. Bringing up your avatar's
* context menu will give you options to cancel your quest and review
* various quest information.
*/
return 1049092;
}
}
public override void OnRead()
{
this.System.AddObjective(new FindUzeraanBeginObjective());
}
}
public class UzeraanTitheConversation : QuestConversation
{
public UzeraanTitheConversation()
{
}
public override object Message
{
get
{
/* Uzeraan greets you as you approach...
*
* Greetings traveler!
*
* I am Uzeraan, the lord of this house and overseer of this fine city, Haven.
* I know we have just met, but time is short and we need to reinforce
* the troops in the mountain pass, so I will not waste your time
* with pleasantries.
*
* We have been trying to fight back the wicked Horde Minions which
* have recently begun attacking our cities - but to no avail.
* We desperately need help!
*
* Your first task will be to assess the situation in the mountain pass,
* and help our troops defeat the Horde Minions there.
*
* Before I send you into battle however, it is time that I teach you a thing
* or two about the way of the Paladin.
*
* The Paladin
*
* Paladins are the holy warriors of the realm who have dedicated themselves
* as protectors of the virtues and vanquishers of all that is evil.
*
* Paladins have several special abilities that
* are not available to the ordinary warrior. Due to the spiritual nature of
* these abilities, the Paladin requires some amount of mana to activate them.
* In addition to mana, the Paladin is also required to spend a certain amount
* of tithing points each time a special ability
* is used.
*
* Tithing points and mana are automatically consumed when a special Paladin
* ability is activated. All Paladin abilities are activated through the
* Book of Chivalry
*
* Go now, to the shrine just East of here, just before the doors and
* tithe at least 500 gold.
*
* Return here when you are done.
*/
return 1060209;
}
}
public override void OnRead()
{
this.System.AddObjective(new TitheGoldObjective());
}
}
public class UzeraanFirstTaskConversation : QuestConversation
{
private static readonly QuestItemInfo[] m_Info = new QuestItemInfo[]
{
new QuestItemInfo(1023676, 0xE68)// glowing rune
};
public UzeraanFirstTaskConversation()
{
}
public override object Message
{
get
{
if (this.System.From.Profession == 1) // warrior
{
/* Uzeraan greets you as you approach...
*
* Greetings traveler!
*
* I am Uzeraan, the lord of this house and overseer of this fine city, Haven.
* I know we have just met, but time is short and we need to reinforce the troops
* in the mountain pass, so I will not waste your time with pleasantries.
*
* We have been trying to fight back the wicked Horde Minions which have
* recently begun attacking our cities - but to no avail. We desperately need
* help!
*
* Your first task will be to assess the situation in the mountain pass, and
* help our troops defeat the Horde Minions there.
*
* Take the road marked with glowing runes, that starts just outside of this
* mansion. Before you go into battle, it would be prudent to
* review combat techniques as well as
* information on healing yourself.
*
* To aid you in your fight, you may also wish to
* purchase equipment from Frank the Blacksmith,
* who is standing just South of here.
*
* Good luck young warrior.
*/
return 1049088;
}
else if (this.System.From.Profession == 2) // magician
{
/* Uzeraan greets you as you approach...
*
* Greetings traveler!
*
* I am Uzeraan, the lord of this house and overseer of this fine city, Haven.
* I know we have just met, but time is short and we need to reinforce
* the troops in the mountain pass, so I will not waste your time with
* pleasantries.
*
* We have been trying to fight back the wicked Horde Minions which have
* recently begun attacking our cities - but to no avail. We desperately
* need help!
*
* Your first task will be to assess the situation in the mountain pass,
* and help our troops defeat the Horde Minions there.
*
* Take the road marked with glowing runes, that starts just outside of this
* mansion. Before you go into battle, it would be prudent to
* review your magic skills as well as
* information on healing yourself.
*
* To aid you in your fight, you may also wish to
* purchase equipment from Frank the Blacksmith,
* who is standing just South of here.
*
* Good luck young mage.
*/
return 1049386;
}
else
{
/* Uzeraan nods at you with approval and begins to speak...
*
* Now that you are ready, let me give you your first task.
*
* As I mentioned earlier, we have been trying to fight back the wicked
* Horde Minions which have recently begun attacking our cities
* - but to no avail. Our need is great!
*
* Your first task will be to assess the situation in the mountain pass,
* and help our troops defeat the Horde Minions there.
*
* Take the road marked with glowing runes, that starts just outside of this mansion.
* Before you go into battle, it would be prudent to
* review combat techniques as well as
* information on healing yourself,
* using your Paladin ability 'Close Wounds'.
*
* To aid you in your fight, you may also wish to
* purchase equipment from Frank the Blacksmith,
* who is standing just South of here.
*
* Good luck young Paladin!
*/
return 1060388;
}
}
}
public override QuestItemInfo[] Info
{
get
{
return m_Info;
}
}
public override void OnRead()
{
this.System.AddObjective(new KillHordeMinionsObjective());
}
}
public class UzeraanReportConversation : QuestConversation
{
private static readonly QuestItemInfo[] m_Info = new QuestItemInfo[]
{
new QuestItemInfo(1026153, 0x1822), // teleporter
new QuestItemInfo(1048032, 0xE76)// a bag
};
public UzeraanReportConversation()
{
}
public override object Message
{
get
{
if (this.System.From.Profession == 2) // magician
{
/* You give your report to Uzeraan and after a while, he begins to
* speak...
*
* Your report is grim, but all hope is not lost! It has become apparent
* that our swords and spells will not drive the evil from Haven.
*
* The head of my order, the High Mage Schmendrick, arrived here shortly after
* you went into battle with the Horde Minions. He has brought with him a
* scroll of great power, that should aid us greatly in our battle.
*
* Unfortunately, the entrance to one of our mining caves collapsed recently,
* trapping our miners inside.
*
* Schmendrick went to install magical teleporters inside the mines so that
* the miners would have a way out. The miners have since returned, but Schmendrick has not.
* Those who have returned, all seem to have lost their minds to madness;
* mumbling strange things of "the souls of the dead seeking revenge".
*
* No matter. We must find Schmendrick.
*
* Step onto the teleporter, located against the wall, and seek Schmendrick in the mines.
*
* I've given you a bag with some Travel Spells,
* in case you need to make a quick escape. In addition, you may wish to cast
* the Night Sight spell on yourself before going
* into the cave, as it it's pretty dark in there.
*
* Now please go. Good luck, friend.
*/
return 1049387;
}
else
{
/* You give your report to Uzeraan and after a while,
* he begins to speak...
*
* Your report is grim, but all hope is not lost! It has become apparent
* that our swords and spells will not drive the evil from Haven.
*
* The head of my order, the High Mage Schmendrick, arrived here shortly after
* you went into battle with the Horde Minions. He has brought with him a
* scroll of great power, that should aid us greatly in our battle.
*
* Unfortunately, the entrance to one of our mining caves collapsed recently,
* trapping our miners inside.
*
* Schmendrick went to install magical teleporters inside the mines so that
* the miners would have a way out. The miners have since returned, but Schmendrick has not.
* Those who have returned, all seem to have lost their minds to madness;
* mumbling strange things of "the souls of the dead seeking revenge".
*
* No matter. We must find Schmendrick.
*
* Step onto the teleporter, located against the wall, and seek Schmendrick in the mines.
*
* I've given you a bag with some Night Sight
* and Healing potions
* to help you out along the way. Good luck.
*/
return 1049119;
}
}
}
public override QuestItemInfo[] Info
{
get
{
return m_Info;
}
}
public override void OnRead()
{
this.System.AddObjective(new FindSchmendrickObjective());
}
}
public class SchmendrickConversation : QuestConversation
{
private static readonly QuestItemInfo[] m_Info = new QuestItemInfo[]
{
new QuestItemInfo(1023637, 0xE34)// scroll
};
public SchmendrickConversation()
{
}
public override object Message
{
get
{
if (this.System.From.Profession == 5) // paladin
{
/* Schmendrick barely pays you any attention as you approach him.
* His mind seems to be occupied with something else. You explain to him that
* you came for the scroll of power and after a long while he begins to speak,
* but apparently still not giving you his full attention...
*
* Hmmm.. peculiar indeed. Very strange activity here indeed... I wonder...
*
* Hmmm. Oh yes! Scroll, you say? I don't have it, sorry. My apprentice
* was carrying it, and he ran off to somewhere in this cave. Find him and
* you will find the scroll.
*
* Be sure to bring the scroll to Uzeraan once you have it. He's the only person
* aside from myself who can read the ancient markings on the scroll.
* I need to figure out what's going on down here before I can leave.
* Strange activity indeed...
*
* One more thing...
*
* Be careful of the restless souls wandering about. They seem to be in the habit
* of spontaneously attacking people. Perhaps using your paladin ability
* Enemy of One might help you overcome the perils
* of these halls.
*
* Schmendrick goes back to his work and you seem to completely fade from his awareness...
*/
return 1060749;
}
else
{
/* Schmendrick barely pays you any attention as you approach him. His
* mind seems to be occupied with something else. You explain to him that
* you came for the scroll of power and after a long while he begins to speak,
* but apparently still not giving you his full attention...
*
* Hmmm.. peculiar indeed. Very strange activity here indeed... I wonder...
*
* Hmmm. Oh yes! Scroll, you say? I don't have it, sorry. My apprentice was
* carrying it, and he ran off to somewhere in this cave. Find him and you will
* find the scroll.
Be sure to bring the scroll to Uzeraan once you
* have it. He's the only person aside from myself who can read the ancient
* markings on the scroll. I need to figure out what's going on down here before
* I can leave. Strange activity indeed...
*
* Schmendrick goes back to his work and you seem to completely fade from his
* awareness...
*/
return 1049322;
}
}
}
public override QuestItemInfo[] Info
{
get
{
return m_Info;
}
}
public override void OnRead()
{
this.System.AddObjective(new FindApprenticeObjective());
}
}
public class UzeraanScrollOfPowerConversation : QuestConversation
{
private static readonly QuestItemInfo[] m_Info = new QuestItemInfo[]
{
new QuestItemInfo(1048030, 0x14EB), // a Treasure Map
new QuestItemInfo(1023969, 0xF81), // Fertile Dirt
new QuestItemInfo(1049117, 0xFC4)// Horn of Retreat
};
public UzeraanScrollOfPowerConversation()
{
}
public override object Message
{
get
{
/* Uzeraan carefully unravels the scroll and begins to read...
* after a short while his face lights up with a smile and he speaks to you...
*
* This is wonderful, friend! For your troubles I've given you a treasure map
* I had laying about, along with a shovel to dig up the treasure.
* Feel free to find the treasure at your leisure.
*
* Now let us get back to the business of this scroll. The only trouble,
* is that this scroll calls for some special ingredients that I do
* not have on hand.
*
* Though it may involve some danger, I will ask of you to find
* these reagents for me.
*
* There are three reagents I need to complete the spell.
*
* The first thing I need is some Fertile Dirt.
*
* There lives a Dryad on this island who I know would have such a thing on hand.
* I have recalibrated the teleporter to transport you to the Dryad's grove,
* which lies South-West of this mansion.
*
* Tell her Uzeraan sent you, and she should cooperate.
*
* Should you get into trouble out there or should you lose your way, do not worry.
* I have also given you a magical horn - a Horn of Retreat.
* Play the horn at any time to open a magical gateway that leads back to this mansion.
*
* Should your horn run out of charges,
* simply hand me or any of my mansion guards the horn to have it recharged.
*
* Good luck friend.
*/
return 1049325;
}
}
public override QuestItemInfo[] Info
{
get
{
return m_Info;
}
}
public override void OnRead()
{
this.System.AddObjective(new FindDryadObjective());
}
}
public class DryadConversation : QuestConversation
{
public DryadConversation()
{
}
public override object Message
{
get
{
/* The Dryad watches hungrily as you approach, giving you an
* uneasy feeling in the pit of your stomach. You explain that
* Uzeraan has sent you for a quantity of fertile dirt. With a wide grin
* and in a slightly hoarse voice she replies...
*
* Fertile Dirt, eh? Well, I have a few patches here...but what have
* you brought me in return? Came empty-handed did you? That's unfortunate
* indeed... but since you were sent by my dear friend Uzeraan, I supposed
* I could oblige you.
*
* The Dryad digs around in the ground and hands you a patch of Fertile Dirt.
*
* With a smile she goes back to her work...
*/
return 1049326;
}
}
public override void OnRead()
{
this.System.AddObjective(new ReturnFertileDirtObjective());
}
}
public class UzeraanFertileDirtConversation : QuestConversation
{
private static readonly QuestItemInfo[] m_Info = new QuestItemInfo[]
{
new QuestItemInfo(1023965, 0xF7D), // Daemon Blood
new QuestItemInfo(1022581, 0xA22), // lantern
};
public UzeraanFertileDirtConversation()
{
}
public override object Message
{
get
{
if (this.System.From.Profession == 2) // magician
{
/* Uzeraan takes the dirt from you and smiles...
*
* Wonderful! I knew I could count on you. As a token of my appreciation
* I've given you a bag with some reagents
* as well as some spell scrolls. They should
* help out a bit.
*
* The next item I need is a Vial of Blood. I know it seems strange,
* but that's what the formula asks for. I have some locked away in a chest
* not far from here. It's only a short distance from the mansion. Let me
* give you directions...
Exit the front door to the East. Then follow
* the path to the North. You will pass by several pedestals with lanterns on
* them. Continue on this path until you run into a small hut. Walk up the
* stairs and through the door. Inside you will find a chest. Open it and
* bring me a Vial of Blood from inside the chest. It's very easy to find.
* Just follow the road and you can't miss it.
*
* Good luck!
*/
return 1049388;
}
else
{
/* Uzeraan takes the dirt from you and smiles...
*
* Wonderful! I knew I could count on you. As a token of my appreciation
* I've given you a bag with some bandages as well as some healing potions.
* They should help out a bit.
*
* The next item I need is a Vial of Blood. I know it seems strange,
* but that's what the formula asks for. I have some locked away in a chest
* not far from here. It's only a short distance from the mansion. Let me give
* you directions...
*
* Exit the front door to the East. Then follow the path to the North.
* You will pass by several pedestals with lanterns on them. Continue on this
* path until you run into a small hut. Walk up the stairs and through the door.
* Inside you will find a chest. Open it and bring me a Vial of Blood
* from inside the chest. It's very easy to find. Just follow the road and you
* can't miss it.
*
* Good luck!
*/
return 1049329;
}
}
}
public override QuestItemInfo[] Info
{
get
{
return m_Info;
}
}
public override void OnRead()
{
this.System.AddObjective(new GetDaemonBloodObjective());
}
}
public class UzeraanDaemonBloodConversation : QuestConversation
{
private static readonly QuestItemInfo[] m_Info = new QuestItemInfo[]
{
new QuestItemInfo(1017412, 0xF80), // Daemon Bone
};
private static readonly QuestItemInfo[] m_InfoPaladin = new QuestItemInfo[]
{
new QuestItemInfo(1017412, 0xF80), // Daemon Bone
new QuestItemInfo(1060577, 0x1F14), // Recall Rune
};
public UzeraanDaemonBloodConversation()
{
}
public override object Message
{
get
{
if (this.System.From.Profession == 2) // magician
{
//return 1049389; // localized message is bugged
return "You hand Uzeraan the Vial of Blood, which he hastily accepts...
" +
"
" +
"Excellent work! Only one reagent remains and the spell is complete! The final " +
"requirement is a Daemon Bone, which will not be as easily acquired as the " +
"previous two components.
" +
"
" +
"There is a haunted graveyard on this island, which is the home to many undead " +
"creatures. Dispose of the undead as you see fit. Be sure to search their remains " +
"after you have smitten them, to check for a Daemon Bone. I'm quite sure " +
"that you will find what we seek, if you are thorough enough with your " +
"extermination.
" +
"
" +
"Take these explosion spell scrolls and magical wizard's hat to aid you in your " +
"battle. The scrolls should help you make short work of the undead.
" +
"
" +
"Return here when you have found a Daemon Bone.";
}
else
{
/* You hand Uzeraan the Vial of Blood, which he hastily accepts...
*
* Excellent work! Only one reagent remains and the spell is complete!
* The final requirement is a Daemon Bone, which will not be as easily
* acquired as the previous two components.
*
* There is a haunted graveyard on this island, which is the home to many
* undead creatures. Dispose of the undead as you see fit. Be sure to search
* their remains after you have smitten them, to check for a Daemon Bone.
* I'm quite sure that you will find what we seek, if you are thorough enough
* with your extermination.
*
* Take this magical silver sword to aid you in your battle. Silver weapons
* will damage the undead twice as much as your regular weapon.
*
* Return here when you have found a Daemon Bone.
*/
return 1049333;
}
}
}
public override QuestItemInfo[] Info
{
get
{
if (this.System.From.Profession == 5) // paladin
return m_InfoPaladin;
else
return m_Info;
}
}
public override void OnRead()
{
this.System.AddObjective(new GetDaemonBoneObjective());
}
}
public class UzeraanDaemonBoneConversation : QuestConversation
{
public UzeraanDaemonBoneConversation()
{
}
public override object Message
{
get
{
/* As you hand Uzeraan the final reagent, he nods at you with approval
* and starts searching through the pockets of his robe...
*
* After a short while he hands you a small pouch...
*
* There you are. Your contract of employment with me has expired and so here
* is your pay. 2000 gold in the form of a check and a magical sextant that
* will help you find Moongates and Banks.
*
* Before you can actually spend the money I have given you, however, you must
* cash the check.
*
* I have recalibrated the teleporter to take you to the Haven
* Bank. Step onto the teleporter to be taken
* to the bank, which lies South-East of here.
*
* Thank you for all your help friend. I hope we shall meet
* each other again in the future.
*
* Farewell.
*/
return 1049335;
}
}
public override void OnRead()
{
this.System.AddObjective(new CashBankCheckObjective());
}
}
public class BankerConversation : QuestConversation
{
public BankerConversation()
{
}
public override object Message
{
get
{
/* The banker smiles at you and greets you in a loud and robust voice...
*
* Well hello there adventurer! I see you've learned how to cash checks. Wonderful!
* Let me tell you a bit about the banks in this world...
*
* Anything that you place into any bank box, can be retrieved from any other
* bank box in the land. For instance, if you place an item into a bank box in
* Britain, it can be retrieved from your bank box in Moonglow or any other city.
*
* Bank boxes are very secure. So secure, in fact, that no one can ever get into
* your bank box except for yourself. Security is hard to come by these days,
* but you can trust in the banking system of Britannia! We shall not let you down!
*
* I hope to be seeing much more of you as your riches grow! May your bank box overflow
* with the spoils of your adventures.
Farewell adventurer, you are now free to
* explore the world on your own.
*/
return 1060137;
}
}
public override void OnRead()
{
this.System.Complete();
}
}
public class RadarConversation : QuestConversation
{
public RadarConversation()
{
}
public override object Message
{
get
{
/* If you are leaving the mansion, you should learn about the Radar Map.
*
* The Radar Map (or Overhead View) can be opened by pressing 'ALT-R' on your
* keyboard. It shows your immediate surroundings from a bird's eye view.
*
* Pressing ALT-R twice, will enlarge the Radar Map a little. Use the Radar Map
* often as you travel throughout the world to familiarize yourself with your surroundings.
*/
return 1049660;
}
}
public override bool Logged
{
get
{
return false;
}
}
}
public class LostScrollOfPowerConversation : QuestConversation
{
private bool m_FromUzeraan;
public LostScrollOfPowerConversation(bool fromUzeraan)
{
this.m_FromUzeraan = fromUzeraan;
}
public LostScrollOfPowerConversation()
{
}
public override object Message
{
get
{
if (this.m_FromUzeraan)
{
/* You return without the scroll???
*
* All hope is lost without it, friend. Return to the mines and talk to
* Schmendrick to see if he can help us out of this predicament.
*/
return 1049377;
}
else
{
/* You've lost the scroll? Argh! I will have to try and re-construct
* the scroll from memory. Bring me a blank scroll, which you can
* purchase from the mage shop just
* East of Uzeraan's mansion in Haven.
*
* Return the scroll to me and I will try to make another scroll for you.
*
* When you return, be sure to hand me the scroll (drag and drop).
*/
return 1049345;
}
}
}
public override bool Logged
{
get
{
return false;
}
}
public override void ChildDeserialize(GenericReader reader)
{
int version = reader.ReadEncodedInt();
this.m_FromUzeraan = reader.ReadBool();
}
public override void ChildSerialize(GenericWriter writer)
{
writer.WriteEncodedInt((int)0); // version
writer.Write((bool)this.m_FromUzeraan);
}
}
public class LostFertileDirtConversation : QuestConversation
{
private bool m_FromUzeraan;
public LostFertileDirtConversation(bool fromUzeraan)
{
this.m_FromUzeraan = fromUzeraan;
}
public LostFertileDirtConversation()
{
}
public override object Message
{
get
{
if (this.m_FromUzeraan)
{
/* You return without Fertile Dirt? It is imperative that we
* get all of the ingredients friend.
*
* Seek out the Dryad and ask her to help you again.
*/
return 1049374;
}
else
{
/* You've lost the dirt I gave you?
*
* My, my, my... What ever shall we do now?
*
* I can try to make you some more, but I will need something
* that I can transform. Bring me an apple, and I shall
* see what I can do.
*
* You can buy apples from the
* Provisioner's Shop, which is located a ways East
* of Uzeraan's mansion.
*
* Hand me the apple when you have it, and I shall see about transforming
* it for you.
*
* Good luck.
*/
return 1049359;
}
}
}
public override bool Logged
{
get
{
return false;
}
}
public override void ChildDeserialize(GenericReader reader)
{
int version = reader.ReadEncodedInt();
this.m_FromUzeraan = reader.ReadBool();
}
public override void ChildSerialize(GenericWriter writer)
{
writer.WriteEncodedInt((int)0); // version
writer.Write((bool)this.m_FromUzeraan);
}
}
public class DryadAppleConversation : QuestConversation
{
public DryadAppleConversation()
{
}
public override object Message
{
get
{
/* The Dryad sticks the apple into the ground and you watch it
* rot before your eyes.
*
* She pulls the now fertile dirt out of the ground and hands
* it to you.
*
* There you go friend. Try not to lose it again this time, eh?
*/
return 1049360;
}
}
public override bool Logged
{
get
{
return false;
}
}
}
public class LostDaemonBloodConversation : QuestConversation
{
public LostDaemonBloodConversation()
{
}
public override object Message
{
get
{
/* You return without a Vial of Blood? It is imperative that we
* get all of the ingredients friend.
*
* Go back to the chest and fetch another vial. Please hurry.
*/
return 1049375;
}
}
public override bool Logged
{
get
{
return false;
}
}
}
public class LostDaemonBoneConversation : QuestConversation
{
public LostDaemonBoneConversation()
{
}
public override object Message
{
get
{
/* You return without a Daemon Bone? It is imperative that we
* get all of the ingredients friend.
*
* Go back to the graveyard and continue hunting the undead until you
* find another one. Please hurry.
*/
return 1049376;
}
}
public override bool Logged
{
get
{
return false;
}
}
}
public class FewReagentsConversation : QuestConversation
{
public FewReagentsConversation()
{
}
public override object Message
{
get
{
/* I don't feel comfortable sending you into a potentially dangerous situation
* with as few reagents as you have in your pack.
*
* Before going on, please acquire at least 30 of each reagent. You can
* purchase reagents from the Mage shop, which is
* located just East this mansion.
*
* Remember that there are eight (8) different reagents: Black Pearl, Mandrake Root,
* Sulfurous Ash, Garlic, Ginseng, Blood Moss, Nightshade and Spider's Silk.
*
* Come back here when you are ready to go.
*/
return 1049390;
}
}
public override bool Logged
{
get
{
return false;
}
}
}
}