using System; using Server.Items; using Server.Mobiles; namespace Server.Engines.Quests { public class DisciplineQuest : BaseQuest { public DisciplineQuest() : base() { this.AddObjective(new SlayObjective(typeof(Rat), "rats", 50, "Sanctuary")); this.AddReward(new BaseReward(1074872)); // The opportunity to learn the ways of the Arcanist. } public override QuestChain ChainID { get { return QuestChain.SpellweavingS; } } public override Type NextQuest { get { return typeof(NeedsOfTheManySanctuaryQuest); } } /* Discipline */ public override object Title { get { return 1072752; } } /* Learning to weave spells and control the forces of nature requires sacrifice, discipline, focus, and an unwavering dedication to Sosaria herself. We do not teach the unworthy. They do not comprehend the lessons nor the dedication required. If you would walk the path of the Arcanist, then you must do as I require without hesitation or question. Your first task is to rid our home of rats ... 50 of them in the next hour. */ public override object Description { get { return 1072761; } } /* *nods* Not everyone has the temperment to undertake the way of the Arcanist. */ public override object Refuse { get { return 1072767; } } /* You waste my time. The task is simple. Kill 50 rats in an hour. */ public override object Uncomplete { get { return 1072773; } } public override bool CanOffer() { return MondainsLegacy.Spellweaving; } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)0); // version } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); } } public class NeedsOfTheManySanctuaryQuest : BaseQuest { public NeedsOfTheManySanctuaryQuest() : base() { this.AddObjective(new ObtainObjective(typeof(Cotton), "bale of cotton", 10, 0xDF9)); this.AddReward(new BaseReward(1074872)); // The opportunity to learn the ways of the Arcanist. } public override QuestChain ChainID { get { return QuestChain.SpellweavingS; } } public override Type NextQuest { get { return typeof(MakingContributionSanctuaryQuest); } } /* Needs of the Many - Sanctuary */ public override object Title { get { return 1072754; } } /* The way of the Arcanist involves cooperation with others and a strong committment to the community of your people. We have run low on the cotton we use to pack wounds and our people have need. Bring 10 bales of cotton to me. */ public override object Description { get { return 1072763; } } /* You endanger your progress along the path with your unwillingness. */ public override object Refuse { get { return 1072768; } } /* I care not where you acquire the cotton, merely that you provide it. */ public override object Uncomplete { get { return 1072775; } } /* Well, where are the cotton bales? */ public override object Complete { get { return 1074110; } } public override bool CanOffer() { return MondainsLegacy.Spellweaving; } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)0); // version } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); } } public class MakingContributionSanctuaryQuest : BaseQuest { public MakingContributionSanctuaryQuest() : base() { this.AddObjective(new ObtainObjective(typeof(Board), "boards", 250, 0x1BD7)); this.AddReward(new BaseReward(1074872)); // The opportunity to learn the ways of the Arcanist. } public override QuestChain ChainID { get { return QuestChain.SpellweavingS; } } public override Type NextQuest { get { return typeof(SuppliesForSanctuaryQuest); } } /* Making a Contribution - Sanctuary */ public override object Title { get { return 1072755; } } /* We must look to the defense of our people! Bring boards for new arrows. */ public override object Description { get { return 1072764; } } /* The people have need of these items. You are proving yourself inadequate to the demands of a member of this community. */ public override object Refuse { get { return 1072769; } } /* The requirements are simple -- 250 boards. */ public override object Uncomplete { get { return 1072776; } } /* Well, where are the boards? */ public override object Complete { get { return 1074152; } } public override bool CanOffer() { return MondainsLegacy.Spellweaving; } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)0); // version } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); } } public class SuppliesForSanctuaryQuest : BaseQuest { public SuppliesForSanctuaryQuest() : base() { this.AddObjective(new ObtainObjective(typeof(SackFlour), "sack of flour", 1, 0x1039)); this.AddObjective(new ObtainObjective(typeof(JarHoney), "jar of honey", 10, 0x9EC)); this.AddObjective(new ObtainObjective(typeof(FishSteak), "fish steak", 20, 0x97B)); this.AddReward(new BaseReward(1074872)); // The opportunity to learn the ways of the Arcanist. } public override QuestChain ChainID { get { return QuestChain.SpellweavingS; } } public override Type NextQuest { get { return typeof(TheHumanBlightQuest); } } /* Supplies for Sanctuary */ public override object Title { get { return 1072756; } } /* With health and defense assured, we need look to the need of the community for food and drink. We will feast on fish steaks, sweets, and wine. You will supply the ingredients, the cooks will prepare the meal. As a Arcanist relies upon others to build focus and lend their power to her workings, the community needs the effort of all to survive. */ public override object Description { get { return 1072765; } } /* Do not falter now. You have begun to show promise. */ public override object Refuse { get { return 1072770; } } /* Where are the items you've been tasked to supply for the feast? */ public override object Uncomplete { get { return 1072777; } } /* Ah good, you're back. We're eager for the feast. */ public override object Complete { get { return 1074158; } } public override bool CanOffer() { return MondainsLegacy.Spellweaving; } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)0); // version } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); } } public class TheHumanBlightQuest : BaseQuest { public TheHumanBlightQuest() : base() { this.AddObjective(new ObtainObjective(typeof(SeveredHumanEars), "severed human ears", 30, 0x312F)); this.AddReward(new BaseReward(typeof(ArcaneCircleScroll), 1071026)); // Arcane Circle this.AddReward(new BaseReward(typeof(GiftOfRenewalScroll), 1071027)); // Gift of Renewal this.AddReward(new BaseReward(typeof(SpellweavingBook), 1031600)); // Spellweaving Spellbook } public override QuestChain ChainID { get { return QuestChain.SpellweavingS; } } /* The Human Blight */ public override object Title { get { return 1072757; } } /* You have proven your desire to contribute to the community and serve the people. Now you must demonstrate your willingness to defend Sosaria from the greatest blight that plagues her. The human vermin that have spread as a disease, despoiling the land are the greatest blight we face. Kill humans and return to me the proof of your actions. Bring me 30 human ears. */ public override object Description { get { return 1072766; } } /* You must serve Sosaria with all your heart and strength. Your unwillingness does not reflect favorably upon you. */ public override object Refuse { get { return 1072771; } } /* Why do you delay? The human blight must be averted. */ public override object Uncomplete { get { return 1072778; } } /* I will take the ears you have collected now. Hand them here. */ public override object Complete { get { return 1074160; } } public override bool CanOffer() { return MondainsLegacy.Spellweaving; } public override void GiveRewards() { this.Owner.Spellweaving = true; base.GiveRewards(); } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)0); // version } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); } } }