private void QuestView_CellClick(object sender, DataGridViewCellEventArgs e) { int i = e.RowIndex; IQuest q = IQuest.QuestID(Int32.Parse(QuestView.Rows[i].Cells[3].Value.ToString())); if (_player.Inventory.FirstOrDefault(itm => itm.Itm == q.ItemToComplete.Item) != null) { InventoryItem qItm = _player.Inventory.FirstOrDefault(itm => itm.Itm == q.ItemToComplete.Item); if (qItm.ItmQty >= q.ItemToComplete.ReqdQty) { try { if (_player.PlayerLocation.NpcHere.GiveQuests.Contains(q)) { if (qItm.ItmQty > q.ItemToComplete.ReqdQty) { _player.Inventory[_player.Inventory.IndexOf(qItm)].ItmQty -= q.ItemToComplete.ReqdQty; } else { _player.Inventory.Remove(qItm); } UpdateInventory(); _player.Xp += q.RewardXp; if (q.RewardGold > 0) { _player.Gold += q.RewardGold; infoBox.Text = "Quest Completed: " + q.QuestName + "\n\n\"" + q.RewardDialogue + "\"\n\nYou receive " + q.RewardXp + " experience and " + q.RewardGold + " gold."; } else { infoBox.Text = "Quest Completed: " + q.QuestName + "\n\n\"" + q.RewardDialogue + "\"\n\nYou receive " + q.RewardXp + " experience."; } if (q.RewardItem != null) { AddInventoryItem(q.RewardItem); } int questIndex = _player.QuestLog.IndexOf(q); _player.QuestLog[questIndex].Completed = true; _player.PlayerLocation.NpcHere.GiveQuests.Remove(q); UpdateQuests(); } } catch { } } } }
private void UpdateQuests() { QuestView.Rows.Clear(); foreach (IQuest q in _player.QuestLog) { if (!q.Completed) { IItem reqdItm = q.ItemToComplete.Item; string playerQty; try { playerQty = _player.Inventory.FirstOrDefault(i => i.Itm == reqdItm).ItmQty.ToString(); } catch { playerQty = "0"; } int reqdQty = q.ItemToComplete.ReqdQty; QuestView.Rows.Add(new[] { q.QuestName, q.QuestDesc, q.ItemToComplete.Item.ItmName.ToString() + " " + playerQty + " / " + reqdQty, q.ID.ToString() }); } } for (int i = 0; i < QuestView.RowCount; i++) { IQuest q = IQuest.QuestID(Int32.Parse(QuestView.Rows[i].Cells[3].Value.ToString())); int qIndex = _player.QuestLog.IndexOf(q); if (_player.Inventory.FirstOrDefault(itm => itm.Itm == q.ItemToComplete.Item) != null) { InventoryItem qItm = _player.Inventory.FirstOrDefault(itm => itm.Itm == q.ItemToComplete.Item); if (qItm.ItmQty >= q.ItemToComplete.ReqdQty) { try { if (_player.PlayerLocation.NpcHere.GiveQuests.Contains(q)) { QuestView.Rows[i].DefaultCellStyle.BackColor = System.Drawing.Color.Green; } else { QuestView.Rows[i].DefaultCellStyle.BackColor = System.Drawing.Color.Yellow; } } catch { QuestView.Rows[i].DefaultCellStyle.BackColor = System.Drawing.Color.Yellow; } } } } }