- Modified the quest system to allow non-BaseCreature quest givers, now requires IQuestGiver.
- Added base quest giver items, both timed and untimed. - Added BatteredBucket and Lost and Found quest. - Moved quester 'friendly names' to a class attribute. If left unspecified, the type name is used. - Misc quest corrections. - The bag of sending will now reject nontransferable items. - Fixed quest items generating error messages when StackWith was attempted on them. (StackWith is not supposed to produce feedback.) - Quest items can now be dropped onto the player's backpack.
This commit is contained in:
parent
0fcd5821a5
commit
71a9e054de
36 changed files with 627 additions and 258 deletions
|
|
@ -26,7 +26,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
CompletionMessage = 1075291; // (As you try to use the Spirit Bottle, the ghost snatches it out of your hand and smashes it on the rocks) Please, don't be frightened. I need your help!
|
||||
CompletionNotice = CompletionNoticeShort;
|
||||
|
||||
Objectives.Add( new DeliverObjective( typeof( SpiritBottle ), 1, "Spirit Bottle", typeof( Frederic ), "The Ghost of Frederic Smithson" ) );
|
||||
Objectives.Add( new DeliverObjective( typeof( SpiritBottle ), 1, "Spirit Bottle", typeof( Frederic ) ) );
|
||||
|
||||
Rewards.Add( new DummyReward( 1075284 ) ); // Return the filled Spirit Bottle to Griswolt the Master Necromancer to receive a reward.
|
||||
}
|
||||
|
|
@ -55,7 +55,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
CompletionMessage = 1075342; // How may I help thee? You have the silk of a dread spider? Of course I can make you a bandage, but what happened to Frederic?
|
||||
CompletionNotice = CompletionNoticeShort;
|
||||
|
||||
Objectives.Add( new TimedDeliverObjective( TimeSpan.FromSeconds( 600 ), typeof( DreadSpiderSilk ), 1, "Dread Spider Silk", typeof( Leon ), "Leon" ) );
|
||||
Objectives.Add( new TimedDeliverObjective( TimeSpan.FromSeconds( 600 ), typeof( DreadSpiderSilk ), 1, "Dread Spider Silk", typeof( Leon ) ) );
|
||||
|
||||
Rewards.Add( new DummyReward( 1075339 ) ); // Hurry! You must get the silk to Leon the Alchemist quickly, or it will crumble and become useless!
|
||||
}
|
||||
|
|
@ -84,7 +84,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
CompletionMessage = 1075348; // Sorry, I’m not accepting commissions at the moment. What? You have the bandage I need from Leon? Thank you so much! But why didn’t my son bring this to me himself? . . . Oh, no! You can't be serious! *sag* My Freddie, my son! Thank you for carrying out his last wish. Here -- I made this for my son, to give to him when he became a journeyman. I want you to have it.
|
||||
CompletionNotice = CompletionNoticeShort;
|
||||
|
||||
Objectives.Add( new DeliverObjective( typeof( AlchemistsBandage ), 1, "Alchemist's Bandage", typeof( Andros ), "Andros" ) );
|
||||
Objectives.Add( new DeliverObjective( typeof( AlchemistsBandage ), 1, "Alchemist's Bandage", typeof( Andros ) ) );
|
||||
|
||||
Rewards.Add( new ItemReward( 1075345, typeof( AndrosGratitude ) ) ); // Andros’ Gratitude
|
||||
}
|
||||
|
|
@ -150,6 +150,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "The Ghost of Frederic Smithson" )]
|
||||
public class Frederic : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
|
|||
|
|
@ -83,6 +83,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
|
||||
#region Mobiles
|
||||
|
||||
[QuesterName( "Kia (Bedlam)" )]
|
||||
public class Kia : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -126,6 +127,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Emerillo (Bedlam)" )]
|
||||
public class Emerillo : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1074968; // My friend, Iosep, is a weaponsmith in Jhelom. If anyone can help us, he can!
|
||||
CompletionMessage = 1074991; // Greetings. What have you there? Ah, a sample from a poisonous tree, you say? My friend Jamal sent you? Well, let me see that then, and we'll get to work.
|
||||
|
||||
Objectives.Add( new DeliverObjective( typeof( TaintedTreeSample ), 1, "tainted tree sample", typeof( Iosep ), "Iosep (Jhelom)" ) );
|
||||
Objectives.Add( new DeliverObjective( typeof( TaintedTreeSample ), 1, "tainted tree sample", typeof( Iosep ) ) );
|
||||
|
||||
Rewards.Add( new DummyReward( 1074962 ) ); // A step closer to entering Blighted Grove.
|
||||
}
|
||||
|
|
@ -126,7 +126,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1074972; // I'm sure Jamal is eager to get this information. He's probably still hanging around near that big old blighted tree.
|
||||
CompletionMessage = 1074995; // Heya! You're back. Was Iosep able to help? Let me see what he's sent.
|
||||
|
||||
Objectives.Add( new DeliverObjective( typeof( SealedNotesForJamal ), 1, "sealed note for Jamal", typeof( Jamal ), "Jamal (near Blighted Grove)" ) );
|
||||
Objectives.Add( new DeliverObjective( typeof( SealedNotesForJamal ), 1, "sealed note for Jamal", typeof( Jamal ) ) );
|
||||
|
||||
Rewards.Add( new DummyReward( 1074962 ) ); // A step closer to entering Blighted Grove.
|
||||
}
|
||||
|
|
@ -175,6 +175,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
|
||||
#region Mobiles
|
||||
|
||||
[QuesterName( "Jamal (near Blighted Grove)" )]
|
||||
public class Jamal : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -218,6 +219,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Iosep (Jhelom)" )]
|
||||
public class Iosep : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
CompletionMessage = 1075326; // What is this you give me? A basin of water?
|
||||
CompletionNotice = CompletionNoticeShort;
|
||||
|
||||
Objectives.Add( new DeliverObjective( typeof( BasinOfCrystalClearWater ), 1, 1075303, typeof( SkeletonOfSzandor ), "Szandor" ) );
|
||||
Objectives.Add( new DeliverObjective( typeof( BasinOfCrystalClearWater ), 1, "Basin of Crystal Clear Water", typeof( SkeletonOfSzandor ) ) );
|
||||
|
||||
Rewards.Add( new DummyReward( 1075323 ) ); // Aurelia's gratitude.
|
||||
}
|
||||
|
|
@ -55,9 +55,9 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
CompletionMessage = 1075332; // Thank goodness! Now we can honor my father for the great man he was while he lived, rather than the horror he became.
|
||||
CompletionNotice = CompletionNoticeShort;
|
||||
|
||||
Objectives.Add( new DeliverObjective( typeof( BasinOfCrystalClearWater ), 1, 1075303, typeof( Aurelia ), "Aurelia" ) );
|
||||
Objectives.Add( new DeliverObjective( typeof( BasinOfCrystalClearWater ), 1, "Basin of Crystal Clear Water", typeof( Aurelia ) ) );
|
||||
|
||||
Rewards.Add( new ItemReward( 1075304, typeof( MirrorOfPurification ) ) );
|
||||
Rewards.Add( new ItemReward( 1075304, typeof( MirrorOfPurification ) ) ); // Mirror of Purification
|
||||
}
|
||||
|
||||
public override void Generate()
|
||||
|
|
@ -98,7 +98,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1074460; // If I knew where my cousin was, I'd make the delivery myself.
|
||||
CompletionMessage = 1074461; // Oh, hello there. What do you have for me?
|
||||
|
||||
Objectives.Add( new DeliverObjective( typeof( SpecialTreatForDrithen ), 1, "treat for Drithen", typeof( Drithen ), "Drithen (Umbra)" ) );
|
||||
Objectives.Add( new DeliverObjective( typeof( SpecialTreatForDrithen ), 1, "treat for Drithen", typeof( Drithen ) ) );
|
||||
|
||||
Rewards.Add( ItemReward.BagOfTreasure );
|
||||
}
|
||||
|
|
@ -157,6 +157,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Szandor" )]
|
||||
public class SkeletonOfSzandor : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
|
|||
|
|
@ -1110,7 +1110,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1073948; // I will be in your debt if you bring me kilts.
|
||||
CompletionMessage = 1073974; // I say truly - that is a magnificent garment! You have more than earned a reward.
|
||||
|
||||
Objectives.Add( new CollectObjective( 10, typeof( Kilt ), 1015281 ) ); // kilt
|
||||
Objectives.Add( new CollectObjective( 10, typeof( Kilt ), 1025431 ) ); // kilt
|
||||
|
||||
Rewards.Add( ItemReward.TailorSatchel );
|
||||
}
|
||||
|
|
@ -1128,7 +1128,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1073949; // I will be in your debt if you bring me fancy shirts.
|
||||
CompletionMessage = 1073973; // I appreciate your service. Now, see what elven hands can create.
|
||||
|
||||
Objectives.Add( new CollectObjective( 10, typeof( FancyShirt ), 1015272 ) ); // fancy shirt
|
||||
Objectives.Add( new CollectObjective( 10, typeof( FancyShirt ), 1027933 ) ); // fancy shirt
|
||||
|
||||
Rewards.Add( ItemReward.TailorSatchel );
|
||||
}
|
||||
|
|
@ -1146,7 +1146,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1073951; // I will be in your debt if you bring me studded bustiers.
|
||||
CompletionMessage = 1073976; // Truly, it is worse than I feared. Still, I appreciate your efforts on my behalf.
|
||||
|
||||
Objectives.Add( new CollectObjective( 10, typeof( FemaleStuddedChest ), 1015310 ) ); // studded bustier
|
||||
Objectives.Add( new CollectObjective( 10, typeof( FemaleStuddedChest ), 1027180 ) ); // studded bustier
|
||||
|
||||
Rewards.Add( ItemReward.TailorSatchel );
|
||||
}
|
||||
|
|
@ -1236,7 +1236,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1073952; // I will be in your debt if you bring me tinker's tools.
|
||||
CompletionMessage = 1073977; // Now, I shall see what an elf can invent!
|
||||
|
||||
Objectives.Add( new CollectObjective( 10, typeof( TinkerTools ), 1011218 ) ); // tinker's tools
|
||||
Objectives.Add( new CollectObjective( 10, typeof( TinkerTools ), 1027868 ) ); // tinker's tools
|
||||
|
||||
Rewards.Add( ItemReward.TinkerSatchel );
|
||||
}
|
||||
|
|
@ -1438,7 +1438,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1073959; // I will be in your debt if you bring me broadswords.
|
||||
CompletionMessage = 1073978; // Enjoy my thanks for your service.
|
||||
|
||||
Objectives.Add( new CollectObjective( 12, typeof( Broadsword ), 1015055 ) ); // broadsword
|
||||
Objectives.Add( new CollectObjective( 12, typeof( Broadsword ), 1023934 ) ); // broadsword
|
||||
|
||||
Rewards.Add( ItemReward.BlacksmithSatchel );
|
||||
}
|
||||
|
|
@ -1474,7 +1474,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1073957; // I will be in your debt if you bring me bascinets.
|
||||
CompletionMessage = 1073978; // Enjoy my thanks for your service.
|
||||
|
||||
Objectives.Add( new CollectObjective( 15, typeof( Bascinet ), 1015040 ) ); // bascinet
|
||||
Objectives.Add( new CollectObjective( 15, typeof( Bascinet ), 1025132 ) ); // bascinet
|
||||
|
||||
Rewards.Add( ItemReward.BlacksmithSatchel );
|
||||
}
|
||||
|
|
@ -1821,6 +1821,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
|
||||
#region Mobiles
|
||||
|
||||
[QuesterName( "Saril (The Heartwood)" )]
|
||||
public class Saril : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -1881,6 +1882,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Cailla (The Heartwood)" )]
|
||||
public class Cailla : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -1942,6 +1944,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Tamm (The Heartwood)" )]
|
||||
public class Tamm : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -2001,6 +2004,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Landy (The Heartwood)" )]
|
||||
public class Landy : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -2061,6 +2065,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Elder Alejaha (The Heartwood)" )]
|
||||
public class Alejaha : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -2120,6 +2125,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Mielan (The Heartwood)" )]
|
||||
public class Mielan : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -2177,6 +2183,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Ciala (The Heartwood)" )]
|
||||
public class Ciala : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -2238,6 +2245,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Aniel (The Heartwood)" )]
|
||||
public class Aniel : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -2295,6 +2303,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Aulan (The Heartwood)" )]
|
||||
public class Aulan : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -2366,6 +2375,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Brinnae (The Heartwood)" )]
|
||||
public class Brinnae : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -2420,6 +2430,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Elder Caelas (The Heartwood)" )]
|
||||
public class Caelas : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -2477,6 +2488,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Clehin (The Heartwood)" )]
|
||||
public class Clehin : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -2603,6 +2615,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Salaenih (The Heartwood)" )]
|
||||
public class Salaenih : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -2680,6 +2693,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Vilo (The Heartwood)" )]
|
||||
public class Vilo : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -2741,6 +2755,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Tholef (The Heartwood)" )]
|
||||
public class Tholef : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -2804,6 +2819,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Tillanil (The Heartwood)" )]
|
||||
public class Tillanil : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -2860,6 +2876,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Waelian (The Heartwood)" )]
|
||||
public class Waelian : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -2923,6 +2940,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Sleen (The Heartwood)" )]
|
||||
public class Sleen : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -2980,6 +2998,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Unoelil (The Heartwood)" )]
|
||||
public class Unoelil : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -3036,6 +3055,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Anolly (The Heartwood)" )]
|
||||
public class Anolly : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -3084,6 +3104,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Jusae (The Heartwood)" )]
|
||||
public class Jusae : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -3150,6 +3171,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Cillitha (The Heartwood)" )]
|
||||
public class Cillitha : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -3206,6 +3228,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Lohn (The Heartwood)" )]
|
||||
public class Lohn : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -3269,6 +3292,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Olla (The Heartwood)" )]
|
||||
public class Olla : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -3328,6 +3352,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Thallary (The Heartwood)" )]
|
||||
public class Thallary : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -3386,6 +3411,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Ahie (The Heartwood)" )]
|
||||
public class Ahie : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -4195,6 +4221,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Nillaen (The Heartwood)" )]
|
||||
public class LorekeeperNillaen : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -4245,6 +4272,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Ryal (The Heartwood)" )]
|
||||
public class LorekeeperRyal : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -4303,6 +4331,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Braen (The Heartwood)" )]
|
||||
public class Braen : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -4356,6 +4385,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Elder Acob (The Heartwood)" )]
|
||||
public class ElderAcob : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
|
|||
|
|
@ -243,6 +243,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
|
||||
#region Human To Elf Mobiles
|
||||
|
||||
[QuesterName( "Maul" )]
|
||||
public class MaulTheBear : GrizzlyBear
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -569,7 +570,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
CompletionMessage = 1074523; // Hey, if you have cargo for me, you can start unloading over here.
|
||||
CompletionNotice = CompletionNoticeShort;
|
||||
|
||||
Objectives.Add( new TimedDeliverObjective( TimeSpan.FromHours( 1 ), typeof( CrateForSledge ), 5, "Crates for Sledge", typeof( Sledge ), "Sledge (Buc's Den)" ) );
|
||||
Objectives.Add( new TimedDeliverObjective( TimeSpan.FromHours( 1 ), typeof( CrateForSledge ), 5, "Crates for Sledge", typeof( Sledge ) ) );
|
||||
|
||||
Rewards.Add( new DummyReward( 1074875 ) ); // Another step closer to becoming human.
|
||||
}
|
||||
|
|
@ -647,6 +648,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
|
||||
#region Elf To Human Mobiles
|
||||
|
||||
[QuesterName( "Sledge (Buc's Den)" )]
|
||||
public class Sledge : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -697,6 +699,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Patricus (Vesper)" )]
|
||||
public class Patricus : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -738,6 +741,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Belulah (Nujel'm)" )] // On OSI it's "Belulah (Nu'Jelm)" (incorrect spelling)
|
||||
public class Belulah : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
CompletionMessage = 1075397; // Didst thou find my ring? I thank thee very much! It is an old ring, and a gift from my husband. I was most distraught when I realized it was missing.
|
||||
CompletionNotice = CompletionNoticeShort;
|
||||
|
||||
Objectives.Add( new DeliverObjective( typeof( ReginasRing ), 1, "Regina's Ring", typeof( Regina ), "Regina" ) );
|
||||
Objectives.Add( new DeliverObjective( typeof( ReginasRing ), 1, "Regina's Ring", typeof( Regina ) ) );
|
||||
|
||||
Rewards.Add( new DummyReward( 1075394 ) ); // Find the ring’s owner.
|
||||
}
|
||||
|
|
@ -55,7 +55,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
CompletionMessage = 1075403; // What? For me? Let me see . . . these sapphire earrings are for you, it says. Oh, she wants to offer me a job! This is the most wonderful thing that ever happened to me!
|
||||
CompletionNotice = CompletionNoticeShort;
|
||||
|
||||
Objectives.Add( new DeliverObjective( typeof( ReginasLetter ), 1, "Regina's Letter", typeof( Evan ), "Evan" ) );
|
||||
Objectives.Add( new DeliverObjective( typeof( ReginasLetter ), 1, "Regina's Letter", typeof( Evan ) ) );
|
||||
|
||||
Rewards.Add( new ItemReward( 1075400, typeof( TransparentHeart ) ) ); // Transparent Heart
|
||||
}
|
||||
|
|
|
|||
|
|
@ -232,6 +232,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Jelrice (Ilshenar)" )]
|
||||
public class Jelrice : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -281,6 +282,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Yorus (Ilshenar)" )]
|
||||
public class Yorus : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
|
|||
70
Scripts/Engines/MLQuests/Definitions/LostItems.cs
Normal file
70
Scripts/Engines/MLQuests/Definitions/LostItems.cs
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Engines.MLQuests;
|
||||
using Server.Engines.MLQuests.Items;
|
||||
using Server.Engines.MLQuests.Objectives;
|
||||
using Server.Engines.MLQuests.Rewards;
|
||||
|
||||
namespace Server.Engines.MLQuests.Definitions
|
||||
{
|
||||
// TODO: Assassination Contract, Evidence, Lost in Transit, Last Words
|
||||
|
||||
#region Quests
|
||||
|
||||
public class LostAndFound : MLQuest
|
||||
{
|
||||
public LostAndFound()
|
||||
{
|
||||
Activated = true;
|
||||
Title = 1072370; // Lost and Found
|
||||
Description = 1072589; // The battered, old bucket is inscribed with barely legible writing that indicates it belongs to someone named "Dallid". Maybe they'd pay for its return?
|
||||
RefusalMessage = 1072590; // You're right, who cares if Dallid might pay for his battered old bucket back. This way you can carry it around with you!
|
||||
InProgressMessage = 1072591; // Whoever this "Dallid" might be, he's probably looking for his bucket.
|
||||
CompletionMessage = 1074580; // Is that my bucket? I had to ditch my favorite bucket when a group of ratmen jumped me!
|
||||
|
||||
Objectives.Add( new TimedDeliverObjective( TimeSpan.FromSeconds( 600 ), typeof( BatteredBucket ), 1, "battered bucket", typeof( Dallid ), false ) );
|
||||
|
||||
Rewards.Add( ItemReward.BagOfTrinkets );
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Items
|
||||
|
||||
public class BatteredBucket : TransientQuestGiverItem
|
||||
{
|
||||
// Original label, doesn't fit the expiration message well
|
||||
//public override int LabelNumber { get { return 1073129; } } // A battered bucket.
|
||||
|
||||
public override string DefaultName { get { return "battered bucket"; } }
|
||||
|
||||
[Constructable]
|
||||
public BatteredBucket()
|
||||
: base( 0x2004, TimeSpan.FromMinutes( 10 ) )
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public BatteredBucket( Serial serial )
|
||||
: base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
|
@ -23,7 +23,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1074643; // I can't pay a bounty if you don't bring bag the ears.
|
||||
CompletionMessage = 1074644; // Here to collect on a bounty?
|
||||
|
||||
Objectives.Add( new CollectObjective( 20, typeof( SeveredElfEars ), "severed elf ears" ) );
|
||||
Objectives.Add( new CollectObjective( 20, typeof( SeveredElfEars ), 1032590 ) ); // severed elf ears
|
||||
|
||||
Rewards.Add( ItemReward.BagOfTrinkets );
|
||||
}
|
||||
|
|
@ -40,6 +40,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
|
||||
#region Mobiles
|
||||
|
||||
[QuesterName( "Drithen (Umbra)" )]
|
||||
public class Drithen : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
CompletionMessage = 1074607; // Oh blast! Not another of those forms. I'm so sick of this endless paperwork.
|
||||
CompletionNotice = CompletionNoticeShort;
|
||||
|
||||
Objectives.Add( new DeliverObjective( typeof( TuitionReimbursementForm ), 1, "Tuition Reimbursement Form", typeof( Gorrow ), "Gorrow (Luna)" ) );
|
||||
Objectives.Add( new DeliverObjective( typeof( TuitionReimbursementForm ), 1, "Tuition Reimbursement Form", typeof( Gorrow ) ) );
|
||||
|
||||
Rewards.Add( new DummyReward( 1074634 ) ); // Tuition Reimbursement
|
||||
}
|
||||
|
|
@ -85,7 +85,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
CompletionMessage = 1074622; // What? Hrmph. Gorrow signed your form did he? Let me see that. *squint*
|
||||
CompletionNotice = CompletionNoticeShort;
|
||||
|
||||
Objectives.Add( new DeliverObjective( typeof( SignedTuitionReimbursementForm ), 1, "Signed Tuition Reimbursement Form", typeof( Aernya ), "Aernya (Umbra)" ) );
|
||||
Objectives.Add( new DeliverObjective( typeof( SignedTuitionReimbursementForm ), 1, "Signed Tuition Reimbursement Form", typeof( Aernya ) ) );
|
||||
|
||||
Rewards.Add( new DummyReward( 1074634 ) ); // Tuition Reimbursement
|
||||
}
|
||||
|
|
@ -106,7 +106,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
CompletionMessage = 1074628; // Made it through did you? Did you happen to see Red Death out there? Big horse, skeletal ... burning eyes? No? What's this? Forms? FORMS? I'm up to my eyebrows in ravenous out-of-control undead and you want a signature?
|
||||
CompletionNotice = CompletionNoticeShort;
|
||||
|
||||
Objectives.Add( new DeliverObjective( typeof( SignedTuitionReimbursementForm ), 1, "Signed Tuition Reimbursement Form", typeof( MasterGnosos ), "Master Gnosos (Bedlam)" ) );
|
||||
Objectives.Add( new DeliverObjective( typeof( SignedTuitionReimbursementForm ), 1, "Signed Tuition Reimbursement Form", typeof( MasterGnosos ) ) );
|
||||
|
||||
Rewards.Add( new DummyReward( 1074634 ) ); // Tuition Reimbursement
|
||||
}
|
||||
|
|
@ -170,7 +170,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
CompletionMessage = 1074638; // *disinterested stare* What? Oh, you've gotten your form filled in. How nice. *glare* And I'd hoped you'd drop this charade before I was forced to rub your nose in it. *nasty smile* You're not even a student and as such, you're not eligible for a refund -- you've never paid tuition. For your services, Master Gnosos has recommended you receive pay. So here. Now go away.
|
||||
CompletionNotice = CompletionNoticeShort;
|
||||
|
||||
Objectives.Add( new DeliverObjective( typeof( CompletedTuitionReimbursementForm ), 1, "Completed Tuition Reimbursement Form", typeof( Aernya ), "Aernya (Umbra)" ) );
|
||||
Objectives.Add( new DeliverObjective( typeof( CompletedTuitionReimbursementForm ), 1, "Completed Tuition Reimbursement Form", typeof( Aernya ) ) );
|
||||
|
||||
Rewards.Add( ItemReward.Strongbox );
|
||||
}
|
||||
|
|
@ -180,6 +180,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
|
||||
#region Mobiles
|
||||
|
||||
[QuesterName( "Aernya (Umbra)" )]
|
||||
public class Aernya : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -225,6 +226,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Gorrow (Luna)" )]
|
||||
public class Gorrow : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -277,6 +279,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Master Gnosos (Bedlam)" )]
|
||||
public class MasterGnosos : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1075515; // Come On! Whats that... a bucket? We need ten bucklers... not spitoons.
|
||||
CompletionMessage = 1075516; // Thanks for the help. Here's something for ya to remember me by.
|
||||
|
||||
Objectives.Add( new CollectObjective( 10, typeof( Buckler ), 1015044 ) ); // buckler
|
||||
Objectives.Add( new CollectObjective( 10, typeof( Buckler ), 1027027 ) ); // buckler
|
||||
|
||||
Rewards.Add( new ItemReward( 1074282, typeof( GervisSatchel ) ) ); // Craftsmans's Satchel
|
||||
}
|
||||
|
|
@ -148,7 +148,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1075532; // Hmmm… we need some more Ore. Try finding a mountain or cave, and give it a whack.
|
||||
CompletionMessage = 1075533; // I see you found a good vien! Great! This will help get this order out on time. Good work!
|
||||
|
||||
Objectives.Add( new CollectObjective( 5, typeof( IronOre ), 1042853 ) ); // iron ore
|
||||
Objectives.Add( new InternalObjective() );
|
||||
|
||||
Rewards.Add( new ItemReward( 1074282, typeof( MuggSatchel ) ) ); // Craftsmans's Satchel
|
||||
}
|
||||
|
|
@ -159,6 +159,20 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
|
||||
PutSpawner( new Spawner( 1, 5, 10, 0, 0, "Mugg" ), new Point3D( 3507, 2747, 0 ), Map.Trammel );
|
||||
}
|
||||
|
||||
private class InternalObjective : CollectObjective
|
||||
{
|
||||
// Any type of ore is allowed
|
||||
public InternalObjective()
|
||||
: base( 5, typeof( BaseOre ), 1026585 ) // ore
|
||||
{
|
||||
}
|
||||
|
||||
public override bool CheckItem( Item item )
|
||||
{
|
||||
return ( item.ItemID == 6585 ); // Only large pieces count
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class ComfortableSeating : MLQuest
|
||||
|
|
@ -173,7 +187,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1075509; // Is all going well? I look forward to the simple comforts in my very own home.
|
||||
CompletionMessage = 1074720; // This is perfect!
|
||||
|
||||
Objectives.Add( new CollectObjective( 1, typeof( BambooChair ), 1044300 ) ); // straw chair
|
||||
Objectives.Add( new CollectObjective( 1, typeof( BambooChair ), "straw chair" ) );
|
||||
|
||||
Rewards.Add( new ItemReward( 1074282, typeof( LowelSatchel ) ) ); // Craftsmans's Satchel
|
||||
}
|
||||
|
|
@ -223,7 +237,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1072271; // You're not quite done yet. Get back to work!
|
||||
CompletionMessage = 1075536; // Wonderful! Tick tock, tick tock, soon all shall be well with grandfather's clock!
|
||||
|
||||
Objectives.Add( new CollectObjective( 5, typeof( ClockParts ), 1011205 ) ); // clock parts
|
||||
Objectives.Add( new CollectObjective( 5, typeof( ClockParts ), 1024175 ) ); // clock parts
|
||||
|
||||
Rewards.Add( new ItemReward( 1074282, typeof( NibbetSatchel ) ) ); // Craftsmans's Satchel
|
||||
}
|
||||
|
|
@ -273,7 +287,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1075490; // Just remember you need to use your mortar and pestle while you have empty bottles and some black pearl. Refresh potions are what I need.
|
||||
CompletionMessage = 1075491; // *glug* *glug* Ahh... Yes! Yes! That feels great! Those lizardmen will never know what hit 'em! Here, take this, I can get more from the lizards.
|
||||
|
||||
Objectives.Add( new CollectObjective( 10, typeof( RefreshPotion ), 1048029 ) ); // refresh potion
|
||||
Objectives.Add( new CollectObjective( 10, typeof( RefreshPotion ), "refresh potions" ) );
|
||||
|
||||
Rewards.Add( new ItemReward( 1074282, typeof( SadrahSatchel ) ) ); // Craftsmans's Satchel
|
||||
}
|
||||
|
|
@ -506,6 +520,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
//[QuesterName( "Clarisse" )] // On OSI the gumps refer to her as this, different from actual name
|
||||
public class Clairesse : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1074064; // Hurry up! I don't have all day to wait for you to bring what I desire!
|
||||
CompletionMessage = 1074065; // These human made goods are laughable! It offends so -- I must show you what elven skill is capable of!
|
||||
|
||||
Objectives.Add( new CollectObjective( 12, typeof( Broadsword ), 1015055 ) ); // broadsword
|
||||
Objectives.Add( new CollectObjective( 12, typeof( Broadsword ), 1023934 ) ); // broadsword
|
||||
|
||||
Rewards.Add( ItemReward.BlacksmithSatchel );
|
||||
}
|
||||
|
|
@ -230,7 +230,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1074064; // Hurry up! I don't have all day to wait for you to bring what I desire!
|
||||
CompletionMessage = 1074065; // These human made goods are laughable! It offends so -- I must show you what elven skill is capable of!
|
||||
|
||||
Objectives.Add( new CollectObjective( 10, typeof( TinkerTools ), 1011218 ) ); // tinker's tools
|
||||
Objectives.Add( new CollectObjective( 10, typeof( TinkerTools ), 1027868 ) ); // tinker's tools
|
||||
|
||||
Rewards.Add( ItemReward.TinkerSatchel );
|
||||
}
|
||||
|
|
@ -264,7 +264,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1074064; // Hurry up! I don't have all day to wait for you to bring what I desire!
|
||||
CompletionMessage = 1074065; // These human made goods are laughable! It offends so -- I must show you what elven skill is capable of!
|
||||
|
||||
Objectives.Add( new CollectObjective( 10, typeof( Kilt ), 1015281 ) ); // kilt
|
||||
Objectives.Add( new CollectObjective( 10, typeof( Kilt ), 1025431 ) ); // kilt
|
||||
|
||||
Rewards.Add( ItemReward.TailorSatchel );
|
||||
}
|
||||
|
|
@ -282,7 +282,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1074064; // Hurry up! I don't have all day to wait for you to bring what I desire!
|
||||
CompletionMessage = 1074065; // These human made goods are laughable! It offends so -- I must show you what elven skill is capable of!
|
||||
|
||||
Objectives.Add( new CollectObjective( 10, typeof( FancyShirt ), 1015272 ) ); // fancy shirt
|
||||
Objectives.Add( new CollectObjective( 10, typeof( FancyShirt ), 1027933 ) ); // fancy shirt
|
||||
|
||||
Rewards.Add( ItemReward.TailorSatchel );
|
||||
}
|
||||
|
|
@ -300,7 +300,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1074064; // Hurry up! I don't have all day to wait for you to bring what I desire!
|
||||
CompletionMessage = 1074065; // These human made goods are laughable! It offends so -- I must show you what elven skill is capable of!
|
||||
|
||||
Objectives.Add( new CollectObjective( 10, typeof( FemaleStuddedChest ), 1015310 ) ); // studded bustier
|
||||
Objectives.Add( new CollectObjective( 10, typeof( FemaleStuddedChest ), 1027180 ) ); // studded bustier
|
||||
|
||||
Rewards.Add( ItemReward.TailorSatchel );
|
||||
}
|
||||
|
|
@ -623,7 +623,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
CompletionMessage = 1074579; // Yes, can I help you?
|
||||
CompletionNotice = CompletionNoticeShort;
|
||||
|
||||
Objectives.Add( new DeliverObjective( typeof( APersonalLetterAddressedToAhie ), 1, "letter", typeof( Ahie ), "Ahie (The Heartwood)" ) );
|
||||
Objectives.Add( new DeliverObjective( typeof( APersonalLetterAddressedToAhie ), 1, "letter", typeof( Ahie ) ) );
|
||||
|
||||
Rewards.Add( ItemReward.BagOfTrinkets );
|
||||
}
|
||||
|
|
@ -639,7 +639,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
RefusalMessage = 1073580; // I hope you'll reconsider. Until then, farwell.
|
||||
InProgressMessage = 1073592; // The Brigands still plague us. Have you killed 20 of their number?<br>
|
||||
|
||||
Objectives.Add( new KillObjective( 20, new Type[] { typeof( Brigand ) }, "common brigands" ) );
|
||||
Objectives.Add( new KillObjective( 20, new Type[] { typeof( Brigand ) }, 1074894 ) ); // Common brigands
|
||||
|
||||
Rewards.Add( ItemReward.BagOfTreasure );
|
||||
}
|
||||
|
|
@ -649,6 +649,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
|
||||
#region Mobiles
|
||||
|
||||
[QuesterName( "Beotham (Sanctuary)" )]
|
||||
public class Beotham : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -711,6 +712,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Danoel (Sanctuary)" )]
|
||||
public class Danoel : BaseCreature
|
||||
{
|
||||
// TODO: Add quests: Spring Cleaning
|
||||
|
|
@ -769,6 +771,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Tallinin (Sanctuary)" )]
|
||||
public class Tallinin : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -825,6 +828,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Tiana (Sanctuary)" )]
|
||||
public class Tiana : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -892,6 +896,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Oolua (Sanctuary)" )]
|
||||
public class LorekeeperOolua : BaseCreature
|
||||
{
|
||||
// TODO: Add quest Dreadhorn
|
||||
|
|
@ -949,6 +954,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Rollarn (Sanctuary)" )]
|
||||
public class LorekeeperRollarn : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -1012,6 +1018,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Dallid (Sanctuary)" )]
|
||||
public class Dallid : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -1070,6 +1077,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Canir (Sanctuary)" )]
|
||||
public class Canir : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -1172,6 +1180,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Elder Onallan (Sanctuary)" )]
|
||||
public class ElderOnallan : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
|
|||
|
|
@ -328,7 +328,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1074315; // Arielle wanders quite a bit, so I'm not sure exactly where to find her. I'm sure she's going to love your gift.
|
||||
CompletionMessage = 1074319; // *giggle* Oooh! For me?
|
||||
|
||||
Objectives.Add( new DeliverObjective( typeof( GiftForArielle ), 1, "gift for Arielle", typeof( Arielle ), "Arielle" ) );
|
||||
Objectives.Add( new DeliverObjective( typeof( GiftForArielle ), 1, "gift for Arielle", typeof( Arielle ) ) );
|
||||
|
||||
Rewards.Add( new DummyReward( 1074874 ) ); // The opportunity to prove yourself worthy of learning to Summon Fey. (Sufficient spellweaving skill is required to cast the spell)
|
||||
}
|
||||
|
|
@ -445,6 +445,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
|
||||
#region Mobiles
|
||||
|
||||
[QuesterName( "Aeluva (The Heartwood)" )]
|
||||
public class Aeluva : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -503,6 +504,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Koole (Sanctuary)" )]
|
||||
public class Koole : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -568,6 +570,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Synaeva (The Heartwood)" )]
|
||||
public class Synaeva : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -627,6 +630,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Elder Brae (Sanctuary)" )]
|
||||
public class ElderBrae : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1074547; // Braen is nearby, run and speak with him.
|
||||
CompletionMessage = 1074549; // Yes? What do you want? I'm very busy.
|
||||
|
||||
Objectives.Add( new DeliverObjective( typeof( FragmentOfAMapDelivery ), 1, "fragment of a map", typeof( Braen ), "Braen (The Heartwood)" ) );
|
||||
Objectives.Add( new DeliverObjective( typeof( FragmentOfAMapDelivery ), 1, "fragment of a map", typeof( Braen ) ) );
|
||||
|
||||
Rewards.Add( new DummyReward( 1074876 ) ); // Knowledge of the legendary minotaur.
|
||||
}
|
||||
|
|
@ -102,6 +102,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
|
||||
#region Mobiles
|
||||
|
||||
[QuesterName( "Broolol (The Heartwood)" )]
|
||||
public class LorekeeperBroolol : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
CompletionMessage = 1075372; // I’m sorry, I’m getting ready to be married. I don’t have time to . . . what’s that you say?
|
||||
CompletionNotice = CompletionNoticeShort;
|
||||
|
||||
Objectives.Add( new DeliverObjective( typeof( PortraitOfTheBride ), 1, "Portrait of the Bride", typeof( Thalia ), "Thalia (Nujel'm)" ) ); // OSI's description is "Bride"
|
||||
Objectives.Add( new DeliverObjective( typeof( PortraitOfTheBride ), 1, "Portrait of the Bride", typeof( Thalia ) ) );
|
||||
|
||||
Rewards.Add( new DummyReward( 1075369 ) ); // The Artist’s gratitude.
|
||||
}
|
||||
|
|
@ -76,7 +76,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
CompletionMessage = 1075378; // She said what? She thinks what of me? I . . . I can’t believe it! All this time, I never knew how she truly felt. Thank you, my friend. I believe now I will be able to paint once again. Here, take this bleach. I was going to use it to destroy all of my works. Perhaps you can find a better use for it now.
|
||||
CompletionNotice = CompletionNoticeShort;
|
||||
|
||||
Objectives.Add( new DeliverObjective( typeof( BridesLetter ), 1, "Bride's Letter", typeof( Emilio ), "Emilio (Britain)" ) ); // OSI's description is "Artist"
|
||||
Objectives.Add( new DeliverObjective( typeof( BridesLetter ), 1, "Bride's Letter", typeof( Emilio ) ) );
|
||||
|
||||
Rewards.Add( new ItemReward( 1075375, typeof( Bleach ) ) ); // Bleach
|
||||
}
|
||||
|
|
@ -94,6 +94,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
|
||||
#region Mobiles
|
||||
|
||||
[QuesterName( "Emilio (Britain)" )] // OSI's description is "Artist", not very helpful
|
||||
public class Emilio : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
@ -141,6 +142,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
}
|
||||
}
|
||||
|
||||
[QuesterName( "Thalia (Nujel'm)" )] // OSI's description is "Bride", not very helpful
|
||||
public class Thalia : BaseCreature
|
||||
{
|
||||
public override bool IsInvulnerable { get { return true; } }
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
InProgressMessage = 1074548; // Canir is nearby, run and speak with her.
|
||||
CompletionMessage = 1074549; // Yes? What do you want? I'm very busy.
|
||||
|
||||
Objectives.Add( new DeliverObjective( typeof( FragmentOfAMapDelivery ), 1, "fragment of a map", typeof( Canir ), "Canir (Sanctuary)" ) );
|
||||
Objectives.Add( new DeliverObjective( typeof( FragmentOfAMapDelivery ), 1, "fragment of a map", typeof( Canir ) ) );
|
||||
|
||||
Rewards.Add( new DummyReward( 1074876 ) ); // Knowledge of the legendary minotaur.
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue