- 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
|
|
@ -35,7 +35,6 @@ namespace Server.Engines.MLQuests
|
|||
private List<BaseObjective> m_Objectives;
|
||||
private ObjectiveType m_ObjectiveType;
|
||||
private List<BaseReward> m_Rewards;
|
||||
private List<BaseCreature> m_Questers;
|
||||
|
||||
private List<MLQuestInstance> m_Instances;
|
||||
|
||||
|
|
@ -74,12 +73,6 @@ namespace Server.Engines.MLQuests
|
|||
set { m_Rewards = value; }
|
||||
}
|
||||
|
||||
public List<BaseCreature> Questers
|
||||
{
|
||||
get { return m_Questers; }
|
||||
set { m_Questers = value; }
|
||||
}
|
||||
|
||||
public List<MLQuestInstance> Instances
|
||||
{
|
||||
get { return m_Instances; }
|
||||
|
|
@ -152,36 +145,11 @@ namespace Server.Engines.MLQuests
|
|||
m_Rewards = new List<BaseReward>();
|
||||
m_CompletionNotice = CompletionNoticeDefault;
|
||||
|
||||
m_Questers = new List<BaseCreature>();
|
||||
m_Instances = new List<MLQuestInstance>();
|
||||
|
||||
m_SaveEnabled = true;
|
||||
}
|
||||
|
||||
public void Register( BaseCreature quester )
|
||||
{
|
||||
if ( MLQuestSystem.Debug )
|
||||
Console.WriteLine( "INFO: Registering quester: {0} => {1}", quester.Serial, GetType().Name );
|
||||
|
||||
m_Questers.Add( quester );
|
||||
}
|
||||
|
||||
public void Unregister( BaseCreature quester )
|
||||
{
|
||||
if ( MLQuestSystem.Debug )
|
||||
Console.WriteLine( "INFO: Unregistering quester: {0} => {1}", quester.Serial, GetType().Name );
|
||||
|
||||
m_Questers.Remove( quester );
|
||||
|
||||
for ( int i = m_Instances.Count - 1; i >= 0; --i )
|
||||
{
|
||||
MLQuestInstance instance = m_Instances[i];
|
||||
|
||||
if ( instance.Quester == quester )
|
||||
instance.OnQuesterDeleted();
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void Generate()
|
||||
{
|
||||
if ( MLQuestSystem.Debug )
|
||||
|
|
@ -229,19 +197,19 @@ namespace Server.Engines.MLQuests
|
|||
|
||||
#endregion
|
||||
|
||||
public MLQuestInstance CreateInstance( BaseCreature quester, PlayerMobile pm )
|
||||
public MLQuestInstance CreateInstance( IQuestGiver quester, PlayerMobile pm )
|
||||
{
|
||||
return new MLQuestInstance( this, quester, pm );
|
||||
}
|
||||
|
||||
public bool CanOffer( BaseCreature quester, PlayerMobile pm, bool message )
|
||||
public bool CanOffer( IQuestGiver quester, PlayerMobile pm, bool message )
|
||||
{
|
||||
return CanOffer( quester, pm, MLQuestSystem.GetContext( pm ), message );
|
||||
}
|
||||
|
||||
public virtual bool CanOffer( BaseCreature quester, PlayerMobile pm, MLQuestContext context, bool message )
|
||||
public virtual bool CanOffer( IQuestGiver quester, PlayerMobile pm, MLQuestContext context, bool message )
|
||||
{
|
||||
if ( !m_Activated || quester.Deleted || !m_Questers.Contains( quester ) )
|
||||
if ( !m_Activated || quester.Deleted )
|
||||
return false;
|
||||
|
||||
if ( context != null )
|
||||
|
|
@ -294,12 +262,12 @@ namespace Server.Engines.MLQuests
|
|||
return true;
|
||||
}
|
||||
|
||||
public virtual void SendOffer( BaseCreature quester, PlayerMobile pm )
|
||||
public virtual void SendOffer( IQuestGiver quester, PlayerMobile pm )
|
||||
{
|
||||
pm.SendGump( new QuestOfferGump( this, quester, pm ) );
|
||||
}
|
||||
|
||||
public virtual void OnAccept( BaseCreature quester, PlayerMobile pm )
|
||||
public virtual void OnAccept( IQuestGiver quester, PlayerMobile pm )
|
||||
{
|
||||
if ( !CanOffer( quester, pm, true ) )
|
||||
return;
|
||||
|
|
@ -319,7 +287,7 @@ namespace Server.Engines.MLQuests
|
|||
{
|
||||
}
|
||||
|
||||
public virtual void OnRefuse( BaseCreature quester, PlayerMobile pm )
|
||||
public virtual void OnRefuse( IQuestGiver quester, PlayerMobile pm )
|
||||
{
|
||||
pm.SendGump( new QuestConversationGump( this, pm, RefusalMessage ) );
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue