namespace Server.Engines.Quests.Haven { public class AcceptConversation : QuestConversation { public override object Message => 1049092; public AcceptConversation() { } public override void OnRead() { System.AddObjective( new FindUzeraanBeginObjective() ); } } public class UzeraanTitheConversation : QuestConversation { public override object Message => 1060209; public UzeraanTitheConversation() { } public override void OnRead() { System.AddObjective( new TitheGoldObjective() ); } } public class UzeraanFirstTaskConversation : QuestConversation { public override object Message { get { if ( 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 ( 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; } } } private static QuestItemInfo[] m_Info = { new QuestItemInfo( 1023676, 0xE68 ) // glowing rune }; public override QuestItemInfo[] Info => m_Info; public UzeraanFirstTaskConversation() { } public override void OnRead() { System.AddObjective( new KillHordeMinionsObjective() ); } } public class UzeraanReportConversation : QuestConversation { public override object Message { get { if ( 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; } } } private static QuestItemInfo[] m_Info = { new QuestItemInfo( 1026153, 0x1822 ), // teleporter new QuestItemInfo( 1048032, 0xE76 ) // a bag }; public override QuestItemInfo[] Info => m_Info; public UzeraanReportConversation() { } public override void OnRead() { System.AddObjective( new FindSchmendrickObjective() ); } } public class SchmendrickConversation : QuestConversation { public override object Message { get { if ( 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; } } } private static QuestItemInfo[] m_Info = { new QuestItemInfo( 1023637, 0xE34 ) // scroll }; public override QuestItemInfo[] Info => m_Info; public SchmendrickConversation() { } public override void OnRead() { System.AddObjective( new FindApprenticeObjective() ); } } public class UzeraanScrollOfPowerConversation : QuestConversation { public override object Message => 1049325; private static QuestItemInfo[] m_Info = { new QuestItemInfo( 1048030, 0x14EB ), // a Treasure Map new QuestItemInfo( 1023969, 0xF81 ), // Fertile Dirt new QuestItemInfo( 1049117, 0xFC4 ) // Horn of Retreat }; public override QuestItemInfo[] Info => m_Info; public UzeraanScrollOfPowerConversation() { } public override void OnRead() { System.AddObjective( new FindDryadObjective() ); } } public class DryadConversation : QuestConversation { public override object Message => 1049326; public DryadConversation() { } public override void OnRead() { System.AddObjective( new ReturnFertileDirtObjective() ); } } public class UzeraanFertileDirtConversation : QuestConversation { public override object Message { get { if ( 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; } } } private static QuestItemInfo[] m_Info = { new QuestItemInfo( 1023965, 0xF7D ), // Daemon Blood new QuestItemInfo( 1022581, 0xA22 ), // lantern }; public override QuestItemInfo[] Info => m_Info; public UzeraanFertileDirtConversation() { } public override void OnRead() { System.AddObjective( new GetDaemonBloodObjective() ); } } public class UzeraanDaemonBloodConversation : QuestConversation { public override object Message { get { if ( 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; } } } private static QuestItemInfo[] m_Info = { new QuestItemInfo( 1017412, 0xF80 ), // Daemon Bone }; private static QuestItemInfo[] m_InfoPaladin = { new QuestItemInfo( 1017412, 0xF80 ), // Daemon Bone new QuestItemInfo( 1060577, 0x1F14 ), // Recall Rune }; public override QuestItemInfo[] Info { get { if ( System.From.Profession == 5 ) // paladin return m_InfoPaladin; else return m_Info; } } public UzeraanDaemonBloodConversation() { } public override void OnRead() { System.AddObjective( new GetDaemonBoneObjective() ); } } public class UzeraanDaemonBoneConversation : QuestConversation { public override object Message => 1049335; public UzeraanDaemonBoneConversation() { } public override void OnRead() { System.AddObjective( new CashBankCheckObjective() ); } } public class BankerConversation : QuestConversation { public override object Message => 1060137; public BankerConversation() { } public override void OnRead() { System.Complete(); } } public class RadarConversation : QuestConversation { public override object Message => 1049660; public override bool Logged => false; public RadarConversation() { } } public class LostScrollOfPowerConversation : QuestConversation { private bool m_FromUzeraan; public override object Message { get { if ( 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 => false; public LostScrollOfPowerConversation( bool fromUzeraan ) { m_FromUzeraan = fromUzeraan; } public LostScrollOfPowerConversation() { } public override void ChildDeserialize( GenericReader reader ) { int version = reader.ReadEncodedInt(); m_FromUzeraan = reader.ReadBool(); } public override void ChildSerialize( GenericWriter writer ) { writer.WriteEncodedInt( (int) 0 ); // version writer.Write( (bool) m_FromUzeraan ); } } public class LostFertileDirtConversation : QuestConversation { private bool m_FromUzeraan; public override object Message { get { if ( 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 => false; public LostFertileDirtConversation( bool fromUzeraan ) { m_FromUzeraan = fromUzeraan; } public LostFertileDirtConversation() { } public override void ChildDeserialize( GenericReader reader ) { int version = reader.ReadEncodedInt(); m_FromUzeraan = reader.ReadBool(); } public override void ChildSerialize( GenericWriter writer ) { writer.WriteEncodedInt( (int) 0 ); // version writer.Write( (bool) m_FromUzeraan ); } } public class DryadAppleConversation : QuestConversation { public override object Message => 1049360; public override bool Logged => false; public DryadAppleConversation() { } } public class LostDaemonBloodConversation : QuestConversation { public override object Message => 1049375; public override bool Logged => false; public LostDaemonBloodConversation() { } } public class LostDaemonBoneConversation : QuestConversation { public override object Message => 1049376; public override bool Logged => false; public LostDaemonBoneConversation() { } } public class FewReagentsConversation : QuestConversation { public override object Message => 1049390; public override bool Logged => false; public FewReagentsConversation() { } } }