public void FinishQuest() { OnQuestFinished?.Invoke(); questWindow.gameObject.SetActive(false); AnnouncementManager.Instance.CreateAnnouncement("You finished quest " + QuestSelectHandler.Instance.selectedQuestName); QuestTracker.Instance.questList[QuestTracker.Instance.FetchQuestByName(QuestSelectHandler.Instance.selectedQuestName)] = (int)QuestTracker.States.Finished; QuestTracker.Instance.FetchQuestByName(QuestSelectHandler.Instance.selectedQuestName).gameObject.SetActive(false); Experience.Instance.GainExperience(QuestTracker.Instance.FetchQuestByName(QuestSelectHandler.Instance.selectedQuestName).quest.Reward); QuestTracker.Instance.AdjustQuestLevelVisibility(); }
public static void Parse(Packet p) { byte flag = p.ReadUInt8(); if (flag == 0x03) //Quest completed. { OnQuestFinished?.Invoke(); } else if (flag == 0x04) //Quest abandoned. { //.. } }
public bool TryFinish(QuestSO quest) { if (!GetStatusBy(quest).IsPresentAndGet(out QuestStatus status)) { return(false); } if (!status.IsComplete) { return(false); } questStatuses.Remove(status); OnUpdate?.Invoke(); OnQuestFinished?.Invoke(status); return(true); }
public void UpdateObjetiveProgress( QuestSO quest, QuestObjectiveSO objetive, object parameters ) { GetStatusBy(quest) .Some(status => { status.UpdateObjetivProgress(objetive, parameters); if (status.Quest.AutoFinish && status.IsComplete) { questStatuses.Remove(status); OnQuestFinished?.Invoke(status); } OnUpdate?.Invoke(); }); }