Ejemplo n.º 1
0
        // Start is called before the first frame update
        public void Setup(QuestStatus status)
        {
            foreach (Transform child in whereToSpawnPrefab.transform)
            {
                Destroy(child.gameObject);
            }

            if (status == null || status.GetQuest() == null)
            {
                return;
            }

            Quest quest = status.GetQuest();

            title.text = quest.GetTitle();

            for (int i = 0; i < quest.GetObjectiveCount(); i++)
            {
                GameObject      instance = Instantiate(objectivePrefab, whereToSpawnPrefab.transform);
                TextMeshProUGUI text     = instance.GetComponentInChildren <TextMeshProUGUI>();
                text.text = quest.GetObjective(i).description;
                if (!status.isCompleted(quest.GetObjective(i).reference))
                {
                    instance.transform.GetChild(0).GetChild(0).gameObject.SetActive(false);
                }
            }
            reward.text = quest.GetReward();
        }
Ejemplo n.º 2
0
        private void CompleteQuestsAtLocation()
        {
            foreach (var quest in CurrentLocation.AvailibleQuests)
            {
                QuestStatus questToComplete = CurrentPlayer.Quests.FirstOrDefault(q => q.PlayerQuest.ID == quest.ID && !q.IsComplete);
                if (questToComplete != null && CurrentPlayer.Inventory.HasAllThisItems(quest.Requirements))
                {
                    CurrentPlayer.RemoveItemsFromInventory(quest.Requirements);

                    _messageBroker.RaiseMessage($"\n You completed '{quest.Name}' quest!");
                    _messageBroker.RaiseMessage($"You got {quest.RewardCredits} credits");
                    CurrentPlayer.ReciveCredits(quest.RewardCredits);

                    if (quest.RewardItems != null)
                    {
                        _messageBroker.RaiseMessage("Also you  got:");
                        foreach (var item in quest.RewardItems)
                        {
                            _messageBroker.RaiseMessage($"{item.Quantity} x {ItemFactory.GetItemNameById(item.ItemId)}");
                            CurrentPlayer.AddItemToInventory(ItemFactory.CreateItem(item.ItemId));
                        }
                    }
                    _messageBroker.RaiseMessage($"You got {quest.RewardExperience} exp");
                    CurrentPlayer.AddExp(quest.RewardExperience);

                    questToComplete.IsComplete = true;
                }
            }
        }
Ejemplo n.º 3
0
    private void setStatus(string questId, QuestStatus status)
    {
        if (status == QuestStatus.SUSPENDED)
        {
            ClearQueue();
        }
        Stopwatch sw = new Stopwatch();

        sw.Start();
        APICall <SetStatusOperation> aPICall = clubPenguinClient.QuestApi.SetStatus(questId, status);

        aPICall.OnResponse += delegate(SetStatusOperation op, HttpResponse response)
        {
            RewardSource rewardSource = RewardSource.QUEST_STARTED;
            if (status == QuestStatus.COMPLETED)
            {
                rewardSource = RewardSource.QUEST_COMPLETED;
            }
            if (sw.Elapsed.TotalSeconds >= 10.0)
            {
                Log.LogNetworkErrorFormatted(this, "Set status for quest took a long time: {0}", sw.Elapsed);
            }
            questDataReturned(op.ResponseBody, rewardSource);
        };
        aPICall.OnError += handleRequestError;
        aPICall.Execute();
    }
Ejemplo n.º 4
0
 protected virtual void OnSelectedQuestStatusChanged(QuestStatus before, Quest quest)
 {
     if (window.isVisible)
     {
         Repaint(quest);
     }
 }
Ejemplo n.º 5
0
        public async Task <IActionResult> UpdateQuest(int id, int id2, QuestStatus status)
        {
            var studentQuest = await Repository.GetByFullKey(id, id2);

            if (studentQuest == null)
            {
                return(NotFound());
            }

            try
            {
                switch (studentQuest.Status)
                {
                case QuestStatus.Pending when status == QuestStatus.Completed:
                    await _questService.FinishQuest(id, id2);

                    break;

                case QuestStatus.Completed when status == QuestStatus.Pending:
                    await _questService.UndoFinishQuest(id, id2);

                    break;
                }
            }
            catch (ArgumentException ex)
            {
                return(BadRequest(ex.Message));
            }

            return(NoContent()); //The operation was successful
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Gets the QuestMenuItems for a <see href="GossiGossipMenu">GossipMenu</see>
        /// </summary>
        /// <param name="chr">The client.</param>
        /// <returns></returns>
        public List <QuestMenuItem> GetQuestMenuItems(Character chr)
        {
            List <QuestMenuItem> questMenuItemList = new List <QuestMenuItem>();

            foreach (QuestTemplate questEnd in this.QuestEnds)
            {
                if (chr.QuestLog.GetQuestById(questEnd.Id) != null)
                {
                    questMenuItemList.Add(new QuestMenuItem(questEnd.Id, 4U, questEnd.Level,
                                                            questEnd.Titles.Localize(chr.Locale)));
                }
            }

            foreach (QuestTemplate questStart in this.QuestStarts)
            {
                QuestStatus startStatus = questStart.GetStartStatus(this, chr);
                if (startStatus.IsAvailable())
                {
                    questMenuItemList.Add(new QuestMenuItem(questStart.Id,
                                                            startStatus == QuestStatus.Available ? 2U : 4U, questStart.Level,
                                                            questStart.Titles.Localize(chr.Locale)));
                }
            }

            return(questMenuItemList);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Gets the Highest Status of any quest newly available or continuable for the given Character
        /// </summary>
        /// <param name="chr">The character which is status calculated with.</param>
        /// <returns></returns>
        public QuestStatus GetHighestQuestGiverStatus(Character chr)
        {
            QuestStatus questStatus = QuestStatus.NotAvailable;

            if (this.QuestStarts != null)
            {
                foreach (QuestTemplate questStart in this.QuestStarts)
                {
                    QuestStatus startStatus = questStart.GetStartStatus(this, chr);
                    if (startStatus > questStatus)
                    {
                        questStatus = startStatus;
                    }
                }
            }

            if (this.QuestEnds != null)
            {
                foreach (QuestTemplate questEnd in this.QuestEnds)
                {
                    QuestStatus endStatus = questEnd.GetEndStatus(chr);
                    if (endStatus > questStatus)
                    {
                        questStatus = endStatus;
                    }
                }
            }

            return(questStatus);
        }
Ejemplo n.º 8
0
        private static void HandleAddExplorationQuests(GameSession session, PacketReader packet)
        {
            List <QuestStatus> list = new List <QuestStatus>();

            int listSize = packet.ReadInt();

            for (int i = 0; i < listSize; i++)
            {
                int questId = packet.ReadInt();
                if (session.Player.QuestList.Exists(x => x.Basic.QuestID == questId))
                {
                    continue;
                }

                QuestMetadata metadata    = QuestMetadataStorage.GetMetadata(questId);
                QuestStatus   questStatus = new QuestStatus()
                {
                    Basic          = metadata.Basic,
                    Started        = true,
                    StartTimestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds(),
                    Condition      = metadata.Condition,
                    Reward         = metadata.Reward,
                    RewardItems    = metadata.RewardItem
                };

                list.Add(questStatus);
            }

            session.Player.QuestList.AddRange(list);
            session.Send(QuestPacket.SendQuests(list));
        }
Ejemplo n.º 9
0
        private static int GetNextScript(ScriptMetadata scriptMetadata, NpcTalk npcTalk, int index)
        {
            if (npcTalk.IsQuest && npcTalk.ScriptId == 0)
            {
                QuestStatus questStatus = npcTalk.Quests[index];
                if (questStatus.Started)
                {
                    // Talking to npc that start the quest and condition is not completed
                    if (questStatus.StartNpcId == npcTalk.Npc.Id && questStatus.Condition.Count != questStatus.Condition.Count(x => x.Goal == x.Current))
                    {
                        return(200);
                    }
                    return(300); // Talking to npc that end the quest
                }
                return(100);     // Talking to npc that start the quest and isn't started
            }

            Option option = scriptMetadata.Options.First(x => x.Id == npcTalk.ScriptId);

            if (npcTalk.ScriptId == 0)
            {
                return(scriptMetadata.Options.First(x => x.Id > npcTalk.ScriptId).Id);
            }

            if (option.Goto.Count == 0)
            {
                return(npcTalk.ScriptId);
            }
            return(option.Goto[index]);
        }
Ejemplo n.º 10
0
        // Called when a quest status change
        public override void OnQuestStatusChange(Player player, Quest quest, QuestStatus oldStatus, QuestStatus newStatus)
        {
            SmartScript smartScript = new();

            smartScript.OnInitialize(quest);
            switch (newStatus)
            {
            case QuestStatus.Incomplete:
                smartScript.ProcessEventsFor(SmartEvents.QuestAccepted, player);
                break;

            case QuestStatus.Complete:
                smartScript.ProcessEventsFor(SmartEvents.QuestCompletion, player);
                break;

            case QuestStatus.Failed:
                smartScript.ProcessEventsFor(SmartEvents.QuestFail, player);
                break;

            case QuestStatus.Rewarded:
                smartScript.ProcessEventsFor(SmartEvents.QuestRewarded, player);
                break;

            case QuestStatus.None:
            default:
                break;
            }
        }
Ejemplo n.º 11
0
        private static void PopulatePlayerQuests(JObject data, Player player)
        {
            var fileVersion = FileVersion(data);

            switch (fileVersion)
            {
            case "0.1.000":
                foreach (JToken questToken in (JArray)data[nameof(GameSession.CurrentPlayer)]
                         [nameof(Player.Quests)])
                {
                    var questId =
                        (int)questToken[nameof(QuestStatus.PlayerQuest)][nameof(QuestStatus.PlayerQuest.ID)];

                    var quest       = QuestFactory.GetQuestByID(questId);
                    var questStatus = new QuestStatus(quest);
                    questStatus.IsCompleted = (bool)questToken[nameof(QuestStatus.IsCompleted)];

                    player.Quests.Add(questStatus);
                }

                break;

            default:
                throw new InvalidDataException($"File version '{fileVersion}' not recognized");
            }
        }
    /* Creator: Yan
     * find the npc in the scene and save the quest status and dialog status before change to another scene
     */
    public void FindNPCSaveBool()
    {
        if (Content.instance == null)
        {
            return;
        }
        questList = Content.instance.contentStrings;
        foreach (var item in questList)
        {
            Debug.Log("q " + item);
        }
        List <string> npcList = AllNPCList.returnList(sceneNum);

        if (npcList == null)
        {
            return;
        }

        foreach (var item in npcList)
        {
            //Debug.Log (sceneNum + item);
            QuestStatus qs = new QuestStatus(item, new List <QuestStatus.QuestBool>(), new List <bool>());

            GameObject ve = GameObject.FindGameObjectWithTag(item);
            if (ve == null)
            {
                return;
            }
            NPC veNPC = ve.GetComponent <NPC> ();
            if (veNPC != null)
            {
                foreach (var conCollection in veNPC.conditionCollections)
                {
                    qs.questBool.Add(new QuestStatus.QuestBool(conCollection.description, conCollection.obtained, conCollection.available, conCollection.complete));
                }
            }

            DialogArray veDialogArray = ve.GetComponent <DialogArray> ();
            if (veDialogArray != null)
            {
                foreach (var dialog in veDialogArray.conversations)
                {
                    qs.dialogBool.Add(dialog.active);
                }
            }
//			foreach (var it in qs.questBool) {
//				Debug.Log (it.description + it.available + it.obtained + it.complete);
//			}
            if (saveQuest.ContainsKey(sceneNum))
            {
                saveQuest [sceneNum].Add(qs);
            }
            else
            {
                saveQuest.Add(sceneNum, new List <QuestStatus>());
                saveQuest [sceneNum].Add(qs);
            }
        }
    }
Ejemplo n.º 13
0
 public QuestState(Quest quest)
 {
     this.quest        = quest;
     this.status       = quest.status;
     this.rootNodeName = "quest";
     //quest.questGroupId
     //quest.subQuests
 }
    // Begins tracking a new quest
    public void StartQuest(Quest quest)
    {
        activeQuest = new QuestStatus(quest);

        UpdateObjectiveSummaryText();

        Debug.LogFormat("Started quest {0}", activeQuest.questData.name);
    }
Ejemplo n.º 15
0
 public void SetStatus(QuestStatus status)
 {
     _status = status;
     if (OnStatusChange != null)
     {
         OnStatusChange(status);
     }
 }
Ejemplo n.º 16
0
 public static bool IsAvailable(this QuestStatus status)
 {
     if (status != QuestStatus.NotAvailable)
     {
         return(status != QuestStatus.TooHighLevel);
     }
     return(false);
 }
Ejemplo n.º 17
0
 public void Setup(QuestStatus status)
 {
     QuestStatus   = status;
     title.text    = status.Quest.Title;
     progress.text = status.Progress
                     + " / "
                     + status.Quest.TotalObjectives;
 }
Ejemplo n.º 18
0
 public static bool CanFinish(this QuestStatus status)
 {
     if (status != QuestStatus.Completable && status != QuestStatus.CompletableNoMinimap)
     {
         return(status == QuestStatus.RepeateableCompletable);
     }
     return(true);
 }
Ejemplo n.º 19
0
 public Quest(Player player, Item condition, Item reward, string description)
 {
     Status      = QuestStatus.New;
     _player     = player;
     _condition  = condition;
     _reward     = reward;
     Description = description + "\r\n\tYou need a " + _condition.Name + " to complete the quest\r\n\tReward :" + _reward.Name;
 }
Ejemplo n.º 20
0
 public Quest_Log(int Quest_Log_ID, int Character_ID, int Quest_ID, QuestStatus Status, int Progress)
 {
     quest_Log_ID      = Quest_Log_ID;
     character_ID      = Character_ID;
     quest_ID          = Quest_ID;
     status            = Status;
     objectiveProgress = Progress;
 }
Ejemplo n.º 21
0
 public Quest(int questID, IEntity questObject, QuestStatus questStatus, int reward, string key)
 {
     QuestID     = questID;
     QuestObject = questObject as InventoryItem;
     QuestStatus = questStatus;
     Reward      = reward;
     KeyReward   = key;
 }
Ejemplo n.º 22
0
        public static Quest CreateInstance(string title, string id, QuestStatus questStatus, Quest nextQuest, List <QuestObjective> objectives, string description, string summary, bool rewardExperience, bool rewardCredits, int experience, int credits, Item[] items)
        {
            var data = ScriptableObject.CreateInstance <Quest>();

            data.Init(title, id, questStatus, nextQuest, objectives, description, summary, rewardExperience, rewardCredits, experience, credits, items);

            return(data);
        }
Ejemplo n.º 23
0
 public void Setup(QuestStatus status)
 {
     this.status         = status;
     questTitle.text     = status.GetQuest().Title();
     questProgress.text  = status.GetCompletedObjectives().Count + "/" + status.GetQuest().Objectives().Count;
     questTitle.color    = (status.IsComplete()) ? completedColor : activeColor;
     questProgress.color = (status.IsComplete()) ? completedColor : activeColor;
 }
Ejemplo n.º 24
0
    public void Setup(QuestStatus status)
    {
        this.status = status;
        Quest quest = status.GetQuest();

        title.text    = quest.GetTitle();
        progress.text = $"{status.GetCompletedCount()}/{quest.GetObjectiveCount()}";
    }
Ejemplo n.º 25
0
 protected virtual void DoNotifyQuestStatusChanged(QuestStatus before)
 {
     QuestManager.instance.NotifyQuestStatusChanged(before, this);
     if (OnStatusChanged != null)
     {
         OnStatusChanged(before, this);
     }
 }
Ejemplo n.º 26
0
 protected override void DoNotifyQuestStatusChanged(QuestStatus before)
 {
     QuestManager.instance.NotifyAchievementStatusChanged(before, this);
     if (OnStatusChanged != null)
     {
         OnStatusChanged(before, this);
     }
 }
Ejemplo n.º 27
0
    /**
     * Fungsi ini digunakan untuk mengecek task yang diambil, jika task telah selesai
     * di objective maka akan memanggil StartNextObjectives() untuk memanggil objective baru
     */
    public bool CheckTask(GameObject target, MonsterName monsterName = MonsterName.All)
    {
        Objective o = QuestDictionary.Instance.GetObjective(label);

        if (o == null)
        {
            return(false);
        }

        Task _currentTask = o.GetTask(_index);

        if (_currentTask == null)
        {
            return(false);
        }

        if (currentTask.monsters.Length == 0)
        {
            currentTask.monsters = new MosnterRequire[_currentTask.monsters.Length];
            for (int i = 0; i < _currentTask.monsters.Length; i++)
            {
                currentTask.monsters[i]       = new MosnterRequire();
                currentTask.monsters[i].label = _currentTask.monsters[i].label;

                // cek mosnter
                if (monsterName != MonsterName.All && currentTask.monsters[i].label == monsterName)
                {
                    currentTask.monsters[i].amount = 1;
                }
                else
                {
                    currentTask.monsters[i].amount = 0;
                }
            }
        }

        if (!_currentTask.CheckRequirement(target, currentTask.monsters))
        {
            return(false);
        }

        // memnyelesaikan current task
        _currentTask.CompletedTask();

        // Index bertambah karena requirement terpenuhi
        _index++;

        Debug.Log("Index sekarang adalah " + _index);

        if (isCompleted)
        {
            status = QuestStatus.Finished;
            Debug.Log("Finish satu");
            StartNextObjectives();
        }

        return(true);
    }
Ejemplo n.º 28
0
        void SetQuest(string id, QuestStatus status)
        {
            QuestEntryDetails quest = _GetQuest(id);

            if (quest != null)
            {
                quest.status = status;
            }
        }
Ejemplo n.º 29
0
 public Quest(int _id, string _name, string _description, bool _isactive, QuestStatus _status)
 {
     Id            = _id;
     Name          = _name;
     Description   = _description;
     isActive      = _isactive;
     Status        = _status;
     DialogOccured = false;
 }
Ejemplo n.º 30
0
        void SetQuest(string id, string idTask, QuestStatus status)
        {
            QuestTaskDetails task = _GetQuest(id, idTask);

            if (task != null)
            {
                task.status = status;
            }
        }
Ejemplo n.º 31
0
        /// <summary>
        /// Verifies a task is of a specific status
        /// </summary>
        /// <returns><c>true</c> if this instance is task status the specified id status; otherwise, <c>false</c>.</returns>
        /// <param name="id">Identifier.</param>
        /// <param name="status">Status.</param>
        bool IsTaskStatus(string id, QuestStatus status)
        {
            QuestTaskDetails task = ctrl._GetTask(id);
            if (task != null) {
                return task.status == status;
            }

            return false;
        }
Ejemplo n.º 32
0
        /// <summary>
        /// Verifies a quest is of a specific status
        /// </summary>
        /// <returns><c>true</c> if this instance is quest status the specified id status; otherwise, <c>false</c>.</returns>
        /// <param name="id">Identifier.</param>
        /// <param name="status">Status.</param>
        bool IsQuestStatus(string id, QuestStatus status)
        {
            QuestEntryDetails quest = ctrl._GetQuest(id) ;
            if (quest != null) {
                return quest.status == status;
            }

            return false;
        }
Ejemplo n.º 33
0
 void SetQuest(string id, string idTask, QuestStatus status)
 {
     QuestTaskDetails task = _GetQuest(id, idTask);
     if (task != null) {
         task.status = status;
     }
 }
Ejemplo n.º 34
0
        /// <inheritdoc />
        public override void UpdateItems(IEnumerable<Watch> itemsAdresses)
        {
            IEnumerable<Watch> statusWatch = itemsAdresses.Where<Watch>(w => ((long)w.Address) == QuestStatusPanel.address);
            if (statusWatch.Any<Watch>())
            {
                currentStatus = (QuestStatus)Convert.ToUInt32(statusWatch.First<Watch>().Value);
                otherStatus.Text = string.Empty;
            }
            foreach (QuestStatus status in handledStatus.Keys)
            {
                if ((status & currentStatus) == status)
                {
                    handledStatus[status].Effect = null;
                }
                else
                {
                    handledStatus[status].Effect = grayscaleEffect;
                }
            }

            //In fact, this ugly shit runs faster than the loop I wrote previously
            if ((currentStatus & QuestStatus.Unknow1) == QuestStatus.Unknow1)
            {
                otherStatus.Text = string.Format("{0},{1}", otherStatus.Text, QuestStatus.Unknow1.ToString());
            }
            if ((currentStatus & QuestStatus.Unknow2) == QuestStatus.Unknow2)
            {
                otherStatus.Text = string.Format("{0},{1}", otherStatus.Text, QuestStatus.Unknow2.ToString());
            }
            if ((currentStatus & QuestStatus.Unknow3) == QuestStatus.Unknow3)
            {
                otherStatus.Text = string.Format("{0},{1}", otherStatus.Text, QuestStatus.Unknow3.ToString());
            }
            if ((currentStatus & QuestStatus.Unknow4) == QuestStatus.Unknow4)
            {
                otherStatus.Text = string.Format("{0},{1}", otherStatus.Text, QuestStatus.Unknow4.ToString());
            }
            if ((currentStatus & QuestStatus.Unknow5) == QuestStatus.Unknow5)
            {
                otherStatus.Text = string.Format("{0},{1}", otherStatus.Text, QuestStatus.Unknow5.ToString());
            }
            if ((currentStatus & QuestStatus.Unknow6) == QuestStatus.Unknow6)
            {
                otherStatus.Text = string.Format("{0},{1}", otherStatus.Text, QuestStatus.Unknow6.ToString());
            }
            if ((currentStatus & QuestStatus.Unknow7) == QuestStatus.Unknow7)
            {
                otherStatus.Text = string.Format("{0},{1}", otherStatus.Text, QuestStatus.Unknow7.ToString());
            }
            if ((currentStatus & QuestStatus.Unknow8) == QuestStatus.Unknow8)
            {
                otherStatus.Text = string.Format("{0},{1}", otherStatus.Text, QuestStatus.Unknow8.ToString());
            }
            if ((currentStatus & QuestStatus.Unknow9) == QuestStatus.Unknow9)
            {
                otherStatus.Text = string.Format("{0},{1}", otherStatus.Text, QuestStatus.Unknow9.ToString());
            }
            if ((currentStatus & QuestStatus.Unknow10) == QuestStatus.Unknow10)
            {
                otherStatus.Text = string.Format("{0},{1}", otherStatus.Text, QuestStatus.Unknow10.ToString());
            }
            if ((currentStatus & QuestStatus.Unknow11) == QuestStatus.Unknow11)
            {
                otherStatus.Text = string.Format("{0},{1}", otherStatus.Text, QuestStatus.Unknow11.ToString());
            }
            if ((currentStatus & QuestStatus.Unknow12) == QuestStatus.Unknow12)
            {
                otherStatus.Text = string.Format("{0},{1}", otherStatus.Text, QuestStatus.Unknow12.ToString());
            }
        }
Ejemplo n.º 35
0
 void SetQuest(string id, QuestStatus status)
 {
     QuestEntryDetails quest = _GetQuest(id);
     if (quest != null) {
         quest.status = status;
     }
 }
Ejemplo n.º 36
0
        /// <summary>
        /// Sends packet, which informs client about IQuestHolder's status.
        /// </summary>
        /// <param name="qg">The qg.</param>
        /// <param name="status">The status.</param>
        /// <param name="chr">The client.</param>
        public static void SendQuestGiverStatus(IQuestHolder qg, QuestStatus status, Character chr)
        {
            qg.OnQuestGiverStatusQuery(chr);
            using (var pckt = new RealmPacketOut(RealmServerOpCode.SMSG_QUESTGIVER_STATUS))
            {
                pckt.Write(qg.EntityId);
                pckt.Write((byte)status);

                chr.Client.Send(pckt);
            }
        }
Ejemplo n.º 37
0
    public void SetBlock()
    {
        OldStatus = Status;
        Status = QuestStatus.blocked;

    }