using UnityEngine; using System.Collections.Generic; public class Quests : MonoBehaviour { private string questName; private string questDescription; private int requiredLevel; private int rewardGold; private int rewardExperience; private int requiredQuantity; private Quests[] prerequisites; private List completedQuests = new List(); private List activeQuests = new List(); private List availableQuests = new List(); // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } public Quests(string name, string description, int level, int gold, int experience, int quantity, Quests[] prerequisites) { this.questName = name; this.questDescription = description; this.requiredLevel = level; this.rewardGold = gold; this.rewardExperience = experience; this.requiredQuantity = quantity; this.prerequisites = prerequisites; } public void StartQuest() { // Logic to start the quest activeQuests.Add(this); } public void CompleteQuest() { // Logic to complete the quest activeQuests.Remove(this); completedQuests.Add(this); } public void AbandonQuest() { // Logic to abandon the quest activeQuests.Remove(this); } public void FailQuest() { // Logic to fail the quest activeQuests.Remove(this); } public Quests[] GetPrerequisites() { return prerequisites; } public void GetQuestDetails() { // Logic to get quest details Debug.Log($"Quest Name: {questName}"); Debug.Log($"Description: {questDescription}"); Debug.Log($"Required Level: {requiredLevel}"); Debug.Log($"Reward Gold: {rewardGold}"); Debug.Log($"Reward Experience: {rewardExperience}"); Debug.Log($"Required Quantity: {requiredQuantity}"); } public void CheckQuestStatus() { // Logic to check the status of the quest if (activeQuests.Contains(this)) { Debug.Log($"Quest '{questName}' is currently active."); } else if (completedQuests.Contains(this)) { Debug.Log($"Quest '{questName}' has been completed."); } else { Debug.Log($"Quest '{questName}' is not active or completed."); } } public void GetAvailableQuests() { // Logic to get available quests based on prerequisites and player level // This is a placeholder implementation; you would typically check the player's level and completed quests availableQuests.Clear(); if (prerequisites == null || prerequisites.Length == 0) { availableQuests.Add(this); } else { bool allPrerequisitesCompleted = true; foreach (var prerequisite in prerequisites) { if (!completedQuests.Contains(prerequisite)) { allPrerequisitesCompleted = false; break; } } if (allPrerequisitesCompleted) { availableQuests.Add(this); } } } }