コード例 #1
0
 /// <summary>Sends the quest invalid.</summary>
 /// <param name="chr">The character.</param>
 /// <param name="reason">The reason.</param>
 public static void SendQuestInvalid(Character chr, QuestInvalidReason reason)
 {
     using (RealmPacketOut packet =
                new RealmPacketOut(RealmServerOpCode.SMSG_QUESTGIVER_QUEST_INVALID, 4))
     {
         packet.Write((int)reason);
         chr.Send(packet, false);
     }
 }
コード例 #2
0
            public override void Process(CmdTrigger <RealmServerCmdArgs> trigger)
            {
                QuestInvalidReason reason = trigger.Text.NextEnum(QuestInvalidReason.Ok);
                Character          target = trigger.Args.Character.Target as Character;

                if (target != null)
                {
                    QuestHandler.SendQuestInvalid(target, reason);
                }
                trigger.Reply("Done.");
            }
コード例 #3
0
        public Quest TryAddQuest(QuestTemplate template, IQuestHolder questGiver)
        {
            int freeSlot = m_Owner.QuestLog.FindFreeSlot();

            if (freeSlot == -1)
            {
                QuestHandler.SendQuestLogFull(m_Owner);
            }
            else
            {
                QuestInvalidReason reason = template.CheckBasicRequirements(m_Owner);
                if (reason != QuestInvalidReason.Ok)
                {
                    QuestHandler.SendQuestInvalid(m_Owner, reason);
                }
                else if (m_Owner.QuestLog.GetActiveQuest(template.Id) != null)
                {
                    QuestHandler.SendQuestInvalid(m_Owner, QuestInvalidReason.AlreadyHave);
                }
                else if (!template.Repeatable && m_Owner.QuestLog.FinishedQuests.Contains(template.Id))
                {
                    QuestHandler.SendQuestInvalid(m_Owner, QuestInvalidReason.AlreadyCompleted);
                }
                else if (!questGiver.CanGiveQuestTo(m_Owner))
                {
                    QuestHandler.SendQuestInvalid(m_Owner, QuestInvalidReason.Tired);
                }
                else
                {
                    Quest quest = m_Owner.QuestLog.AddQuest(template, freeSlot);
                    if (quest.Template.Flags.HasFlag(QuestFlags.Escort))
                    {
                        AutoComplete(quest, m_Owner);
                    }
                    return(quest);
                }
            }

            return(null);
        }
コード例 #4
0
ファイル: QuestHandler.cs プロジェクト: ebakkedahl/WCell
        /// <summary>
        /// Sends the quest invalid.
        /// </summary>
        /// <param name="chr">The character.</param>
        /// <param name="reason">The reason.</param>
        public static void SendQuestInvalid(Character chr, QuestInvalidReason reason)
        {
            using (var packet = new RealmPacketOut(RealmServerOpCode.SMSG_QUESTGIVER_QUEST_INVALID, 4))
            {
                packet.Write((int)reason);

                chr.Send(packet);
            }
        }