Exemple #1
0
 // Use this for initialization
 void Start()
 {
     QuestLog.AddQuestStateObserver("Pilgrimage Quest", LuaWatchFrequency.EveryDialogueEntry, OnQuestStateChanged);
     QuestLog.AddQuestStateObserver("Equip Quest", LuaWatchFrequency.EveryDialogueEntry, OnQuestStateChanged);
     QuestLog.AddQuestStateObserver("Wisdom Quest", LuaWatchFrequency.EveryDialogueEntry, OnQuestStateChanged);
     QuestLog.AddQuestStateObserver("Fetch Quest", LuaWatchFrequency.EveryDialogueEntry, OnQuestStateChanged);
     QuestLog.AddQuestStateObserver("Love Quest", LuaWatchFrequency.EveryDialogueEntry, OnQuestStateChanged);
 }
        public override int Use()
        {
            int used = base.Use();

            if (used < 0)
            {
                return(used);
            }

            var dialogueController = FindObjectOfType <DialogueSystemController>();

            if (dialogueController == null)
            {
                Debug.LogError("Couldn't find DialogueSystemController; Can't activate quest!");
                return(-2);
            }

            var item = dialogueController.DatabaseManager.MasterDatabase.items.FirstOrDefault(o => o.id == _dialogueSystemQuestID);

            if (item == null)
            {
                Debug.LogError("Couldn't find dialogue quest with ID " + _dialogueSystemQuestID);
                return(-2);
            }

            if (item.IsItem)
            {
                Debug.LogError("Dialogue quest with ID " + _dialogueSystemQuestID + " is an item, not a quest");
                return(-2);
            }

            if (QuestLog.IsQuestActive(item.Name))
            {
                DialogueManager.ShowAlert(string.Format(questAlreadyActiveMessage, item.Name));
                return(-2);
            }

            if (QuestLog.IsQuestDone(item.Name) || QuestLog.IsQuestFailed(item.Name) || QuestLog.IsQuestAbandoned(item.Name))
            {
                if (canUseAfterQuestAlreadyCompleted == false)
                {
                    DialogueManager.ShowAlert(string.Format(questAlreadyUsedMessage, item.Name));
                    return(-2);
                }
            }


            currentStackSize--; // Remove 1

            QuestLog.StartQuest(item.Name);
            QuestLog.AddQuestStateObserver(item.Name, LuaWatchFrequency.EveryDialogueEntry, QuestChangedHandler);

            if (string.IsNullOrEmpty(acceptMessage) == false)
            {
                DialogueManager.ShowAlert(string.Format(acceptMessage, item.Name));
            }


            NotifyItemUsed(1, true);
            AudioManager.AudioPlayOneShot(audioClipWhenUsed);

            return(1); // 1 item used
        }