// 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(); }
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; } } }
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(); }
protected virtual void OnSelectedQuestStatusChanged(QuestStatus before, Quest quest) { if (window.isVisible) { Repaint(quest); } }
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 }
/// <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); }
/// <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); }
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)); }
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]); }
// 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; } }
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); } } }
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); }
public void SetStatus(QuestStatus status) { _status = status; if (OnStatusChange != null) { OnStatusChange(status); } }
public static bool IsAvailable(this QuestStatus status) { if (status != QuestStatus.NotAvailable) { return(status != QuestStatus.TooHighLevel); } return(false); }
public void Setup(QuestStatus status) { QuestStatus = status; title.text = status.Quest.Title; progress.text = status.Progress + " / " + status.Quest.TotalObjectives; }
public static bool CanFinish(this QuestStatus status) { if (status != QuestStatus.Completable && status != QuestStatus.CompletableNoMinimap) { return(status == QuestStatus.RepeateableCompletable); } return(true); }
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; }
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; }
public Quest(int questID, IEntity questObject, QuestStatus questStatus, int reward, string key) { QuestID = questID; QuestObject = questObject as InventoryItem; QuestStatus = questStatus; Reward = reward; KeyReward = key; }
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); }
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; }
public void Setup(QuestStatus status) { this.status = status; Quest quest = status.GetQuest(); title.text = quest.GetTitle(); progress.text = $"{status.GetCompletedCount()}/{quest.GetObjectiveCount()}"; }
protected virtual void DoNotifyQuestStatusChanged(QuestStatus before) { QuestManager.instance.NotifyQuestStatusChanged(before, this); if (OnStatusChanged != null) { OnStatusChanged(before, this); } }
protected override void DoNotifyQuestStatusChanged(QuestStatus before) { QuestManager.instance.NotifyAchievementStatusChanged(before, this); if (OnStatusChanged != null) { OnStatusChanged(before, this); } }
/** * 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); }
void SetQuest(string id, QuestStatus status) { QuestEntryDetails quest = _GetQuest(id); if (quest != null) { quest.status = status; } }
public Quest(int _id, string _name, string _description, bool _isactive, QuestStatus _status) { Id = _id; Name = _name; Description = _description; isActive = _isactive; Status = _status; DialogOccured = false; }
void SetQuest(string id, string idTask, QuestStatus status) { QuestTaskDetails task = _GetQuest(id, idTask); if (task != null) { task.status = status; } }
/// <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; }
/// <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; }
/// <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()); } }
/// <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); } }
public void SetBlock() { OldStatus = Status; Status = QuestStatus.blocked; }