- 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:
eos 2013-02-24 00:31:44 +00:00
parent 0fcd5821a5
commit 71a9e054de
36 changed files with 627 additions and 258 deletions

View file

@ -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; } }