ModernUO/Scripts/Engines/Quests/Uzeraan Turmoil/Conversations.cs
2018-09-14 13:14:20 -07:00

705 lines
23 KiB
C#

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
{
/* <I>Uzeraan greets you as you approach...</I><BR><BR>
*
* Greetings traveler!<BR><BR>
*
* 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.<BR><BR>
*
* We have been trying to fight back the wicked <I>Horde Minions</I> which have
* recently begun attacking our cities - but to no avail. We desperately need
* help!<BR><BR>
*
* Your first task will be to assess the situation in the mountain pass, and
* help our troops defeat the Horde Minions there.<BR><BR>
*
* Take the road marked with glowing runes, that starts just outside of this
* mansion. Before you go into battle, it would be prudent to
* <a href="?ForceTopic27">review combat techniques</a> as well as
* <a href = "?ForceTopic29">information on healing yourself</a>.<BR><BR>
*
* To aid you in your fight, you may also wish to
* <a href = "?ForceTopic33">purchase equipment</a> from Frank the Blacksmith,
* who is standing just <a href = "?ForceTopic13">South</a> of here.<BR><BR>
*
* Good luck young warrior.
*/
return 1049088;
}
else if ( System.From.Profession == 2 ) // magician
{
/* <I>Uzeraan greets you as you approach...</I><BR><BR>
*
* Greetings traveler!<BR><BR>
*
* 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.<BR><BR>
*
* We have been trying to fight back the wicked <I>Horde Minions</I> which have
* recently begun attacking our cities - but to no avail. We desperately
* need help!<BR><BR>
*
* Your first task will be to assess the situation in the mountain pass,
* and help our troops defeat the Horde Minions there.<BR><BR>
*
* Take the road marked with glowing runes, that starts just outside of this
* mansion. Before you go into battle, it would be prudent to
* <a href="?ForceTopic35">review your magic skills</a> as well as
* <a href = "?ForceTopic29">information on healing yourself</a>.<BR><BR>
*
* To aid you in your fight, you may also wish to
* <a href = "?ForceTopic33">purchase equipment</a> from Frank the Blacksmith,
* who is standing just <a href = "?ForceTopic13">South</a> of here.<BR><BR>
*
* Good luck young mage.
*/
return 1049386;
}
else
{
/* <I>Uzeraan nods at you with approval and begins to speak...</I><BR><BR>
*
* Now that you are ready, let me give you your first task.<BR><BR>
*
* As I mentioned earlier, we have been trying to fight back the wicked
* <I>Horde Minions</I> which have recently begun attacking our cities
* - but to no avail. Our need is great!<BR><BR>
*
* Your first task will be to assess the situation in the mountain pass,
* and help our troops defeat the Horde Minions there.<BR><BR>
*
* Take the road marked with glowing runes, that starts just outside of this mansion.
* Before you go into battle, it would be prudent to
* <a href="?ForceTopic27">review combat techniques</a> as well as
* <a href = "?ForceTopic29">information on healing yourself,
* using your Paladin ability 'Close Wounds'</a>.<BR><BR>
*
* To aid you in your fight, you may also wish to
* <a href = "?ForceTopic33">purchase equipment</a> from Frank the Blacksmith,
* who is standing just <a href = "?ForceTopic13">South</a> of here.<BR><BR>
*
* 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
{
/* <I>You give your report to Uzeraan and after a while, he begins to
* speak...</I><BR><BR>
*
* 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.<BR><BR>
*
* The head of my order, the High Mage Schmendrick, arrived here shortly after
* you went into battle with the <I>Horde Minions</I>. He has brought with him a
* scroll of great power, that should aid us greatly in our battle.<BR><BR>
*
* Unfortunately, the entrance to one of our mining caves collapsed recently,
* trapping our miners inside.<BR><BR>
*
* 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".<BR><BR>
*
* No matter. We must find Schmendrick.<BR><BR>
*
* Step onto the teleporter, located against the wall, and seek Schmendrick in the mines.<BR><BR>
*
* I've given you a bag with some <a href="?ForceTopic93">Travel Spells</a>,
* in case you need to make a quick escape. In addition, you may wish to cast
* the <a href="?ForceTopic92">Night Sight</a> spell on yourself before going
* into the cave, as it it's pretty dark in there.<BR><BR>
*
* Now please go. Good luck, friend.
*/
return 1049387;
}
else
{
/* <I>You give your report to Uzeraan and after a while,
* he begins to speak...</I><BR><BR>
*
* 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.<BR><BR>
*
* The head of my order, the High Mage Schmendrick, arrived here shortly after
* you went into battle with the <I>Horde Minions</I>. He has brought with him a
* scroll of great power, that should aid us greatly in our battle.<BR><BR>
*
* Unfortunately, the entrance to one of our mining caves collapsed recently,
* trapping our miners inside.<BR><BR>
*
* 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".<BR><BR>
*
* No matter. We must find Schmendrick.<BR><BR>
*
* Step onto the teleporter, located against the wall, and seek Schmendrick in the mines.<BR><BR>
*
* I've given you a bag with some <a href="?ForceTopic75">Night Sight</a>
* and <a href="?ForceTopic76">Healing</a> <a href="?ForceTopic74">potions</a>
* 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
{
/* <I>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...</I><BR><BR>
*
* Hmmm.. peculiar indeed. Very strange activity here indeed... I wonder...<BR><BR>
*
* 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.<BR><BR>
*
* 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...<BR><BR>
*
* One more thing...<BR><BR>
*
* Be careful of the restless souls wandering about. They seem to be in the habit
* of spontaneously attacking people. Perhaps using your paladin ability
* <a href="?ForceTopic104">Enemy of One</a> might help you overcome the perils
* of these halls.<BR><BR>
*
* <I>Schmendrick goes back to his work and you seem to completely fade from his awareness...
*/
return 1060749;
}
else
{
/* <I>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...</I><BR><BR>
*
* Hmmm.. peculiar indeed. Very strange activity here indeed... I wonder...<BR><BR>
*
* 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.<BR><BR>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...<BR><BR>
*
* <I>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
{
/* <I>Uzeraan takes the dirt from you and smiles...<BR><BR></I>
*
* Wonderful! I knew I could count on you. As a token of my appreciation
* I've given you a bag with some <a href = "?ForceTopic37">reagents</a>
* as well as some <a href="?ForceTopic35">spell scrolls</a>. They should
* help out a bit.<BR><BR>
*
* The next item I need is a <I>Vial of Blood</I>. 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...<BR><BR>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 <I>Vial of Blood</I> from inside the chest. It's very easy to find.
* Just follow the road and you can't miss it.<BR><BR>
*
* Good luck!
*/
return 1049388;
}
else
{
/* <I>Uzeraan takes the dirt from you and smiles...<BR><BR></I>
*
* 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.<BR><BR>
*
* The next item I need is a <I>Vial of Blood</I>. 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...<BR><BR>
*
* 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 <I>Vial of Blood</I>
* from inside the chest. It's very easy to find. Just follow the road and you
* can't miss it.<BR><BR>
*
* 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 "<I>You hand Uzeraan the Vial of Blood, which he hastily accepts...</I><BR>"
+ "<BR>"
+ "Excellent work! Only one reagent remains and the spell is complete! The final "
+ "requirement is a <I>Daemon Bone</I>, which will not be as easily acquired as the "
+ "previous two components.<BR>"
+ "<BR>"
+ "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 <I>Daemon Bone</I>. I'm quite sure "
+ "that you will find what we seek, if you are thorough enough with your "
+ "extermination.<BR>"
+ "<BR>"
+ "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.<BR>"
+ "<BR>"
+ "Return here when you have found a <I>Daemon Bone</I>.";
}
else
{
/* <I>You hand Uzeraan the Vial of Blood, which he hastily accepts...</I><BR><BR>
*
* Excellent work! Only one reagent remains and the spell is complete!
* The final requirement is a <I>Daemon Bone</I>, which will not be as easily
* acquired as the previous two components.<BR><BR>
*
* 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 <I>Daemon Bone</I>.
* I'm quite sure that you will find what we seek, if you are thorough enough
* with your extermination.<BR><BR>
*
* Take this magical silver sword to aid you in your battle. Silver weapons
* will damage the undead twice as much as your regular weapon.<BR><BR>
*
* Return here when you have found a <I>Daemon Bone</I>.
*/
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???<BR><BR>
*
* 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
* <a href = "?ForceTopic33">purchase from the mage shop</a> just
* <a href = "?ForceTopic13">East</a> of Uzeraan's mansion in Haven.<BR><BR>
*
* Return the scroll to me and I will try to make another scroll for you.<BR><BR>
*
* 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 <I>Fertile Dirt</I>? It is imperative that we
* get all of the ingredients friend.<BR><BR>
*
* Seek out the Dryad and ask her to help you again.
*/
return 1049374;
}
else
{
/* You've lost the dirt I gave you?<BR><BR>
*
* My, my, my... What ever shall we do now?<BR><BR>
*
* I can try to make you some more, but I will need something
* that I can transform. Bring me an <I>apple</I>, and I shall
* see what I can do.<BR><BR>
*
* You can <a href = "?ForceTopic33">buy</a> apples from the
* Provisioner's Shop, which is located a ways <a href = "?ForceTopic13">East</a>
* of Uzeraan's mansion.<BR><BR>
*
* Hand me the apple when you have it, and I shall see about transforming
* it for you.<BR><BR>
*
* Good luck.<BR><BR>
*/
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()
{
}
}
}