Beispiel #1
0
        /// <summary>
        /// Handles events.
        /// </summary>
        /// <param name="e"></param>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        public override void Notify(DOLEvent e, object sender, EventArgs args)
        {
            base.Notify(e, sender, args);
            if (e == GamePlayerEvent.QuestRewardChosen)
            {
                if (!(args is QuestRewardChosenEventArgs rewardArgs))
                {
                    return;
                }

                // Check if this particular quest has been finished.
                if (QuestMgr.GetIDForQuestType(GetType()) != rewardArgs.QuestID)
                {
                    return;
                }

                for (int reward = 0; reward < rewardArgs.CountChosen; ++reward)
                {
                    Rewards.Choose(rewardArgs.ItemsChosen[reward]);
                }

                // k109: Handle the player not choosing a reward.
                if (Rewards.ChoiceOf > 0 && rewardArgs.CountChosen <= 0)
                {
                    QuestPlayer.Out.SendMessage(LanguageMgr.GetTranslation(QuestPlayer.Client, "RewardQuest.Notify"), eChatType.CT_System, eChatLoc.CL_ChatWindow);
                    return;
                }

                FinishQuest();
            }
        }
Beispiel #2
0
 /// <summary>
 /// Send the quest dialogue for a classic quest to the player
 /// </summary>
 /// <param name="questType"></param>
 /// <param name="sentence"></param>
 /// <param name="player"></param>
 /// <param name="source"></param>
 /// <returns></returns>
 public static bool AbortQuestToPlayer(Type questType, string sentence, GamePlayer player, GameNPC source)
 {
     if (player.IsDoingQuest(questType) != null)
     {
         player.Out.SendQuestAbortCommand(source, QuestMgr.GetIDForQuestType(questType), sentence);
         return(true);
     }
     else
     {
         return(false);
     }
 }
Beispiel #3
0
 /// <summary>
 /// Send the quest dialogue for a classic quest to the player
 /// </summary>
 /// <param name="questType"></param>
 /// <param name="sentence"></param>
 /// <param name="player"></param>
 /// <param name="source"></param>
 /// <returns></returns>
 public static bool ProposeQuestToPlayer(Type questType, string sentence, GamePlayer player, GameNPC source)
 {
     if (CanGiveQuest(questType, player, source) > 0)
     {
         if (questType.IsSubclassOf(typeof(RewardQuest)))
         {
             RewardQuest rquest = null;
             foreach (Assembly asm in ScriptMgr.Scripts)
             {
                 try
                 {
                     rquest = (RewardQuest)asm.CreateInstance(questType.FullName, false, BindingFlags.CreateInstance, null, new object[] { }, null, null);
                 }
                 catch (Exception e)
                 {
                     if (log.IsErrorEnabled)
                     {
                         log.Error("ProposeQuestToPlayer.RewardQuest", e);
                     }
                 }
                 if (rquest != null)
                 {
                     break;
                 }
             }
             player.Out.SendQuestOfferWindow(source, player, rquest);
         }
         else
         {
             player.Out.SendQuestSubscribeCommand(source, QuestMgr.GetIDForQuestType(questType), sentence);
         }
         return(true);
     }
     else
     {
         return(false);
     }
 }