Exemplo n.º 1
0
        public static void StartQuestDialog(this IQuestHolder qHolder, Character chr)
        {
            chr.OnInteract(qHolder as WorldObject);

            var list = qHolder.QuestHolderInfo.GetAvailableQuests(chr);

            if (list.Count > 0)
            {
                if (list.Count == 1 && !chr.QuestLog.HasActiveQuest(list[0].Id))
                {
                    // start a single quest if there is only one and the user did not start it yet
                    var autoAccept = list[0].Flags.HasFlag(QuestFlags.AutoAccept);
                    QuestHandler.SendDetails(qHolder, list[0], chr, !autoAccept);
                    if (autoAccept)
                    {
                        chr.QuestLog.TryAddQuest(list[0], qHolder);
                    }
                }
                else
                {
                    QuestHandler.SendQuestList(qHolder, list, chr);
                }
            }
        }
Exemplo n.º 2
0
        public static void StartQuestDialog(this IQuestHolder qHolder, Character chr)
        {
            chr.OnInteract(qHolder as WorldObject);
            List <QuestTemplate> availableQuests = qHolder.QuestHolderInfo.GetAvailableQuests(chr);

            if (availableQuests.Count <= 0)
            {
                return;
            }
            if (availableQuests.Count == 1 && !chr.QuestLog.HasActiveQuest(availableQuests[0].Id))
            {
                bool flag = availableQuests[0].Flags.HasFlag((Enum)QuestFlags.AutoAccept);
                QuestHandler.SendDetails((IEntity)qHolder, availableQuests[0], chr, !flag);
                if (!flag)
                {
                    return;
                }
                chr.QuestLog.TryAddQuest(availableQuests[0], qHolder);
            }
            else
            {
                QuestHandler.SendQuestList(qHolder, availableQuests, chr);
            }
        }