using System; using UnityEngine; using BaseGames.Dialogue; namespace BaseGames.Quest { /// /// 任务定义 SO(架构 22_QuestChallengeModule §2)。 /// 资产路径: Assets/ScriptableObjects/Quest/Quest_{questId}.asset /// [CreateAssetMenu(menuName = "BaseGames/Quest/Quest")] public class QuestSO : ScriptableObject { [Header("标识")] public string questId; // 唯一 ID,如 "Quest_FindMushroom" public string displayName; [TextArea(2, 6)] public string description; public Sprite icon; [Header("目标链")] public QuestObjectiveSO[] objectives; // 按顺序完成,全部完成 = 可交完 [Header("前置条件")] public string[] prerequisiteQuestIds; // 所有前置任务 Completed 后才可接 public int minAffinityToAccept; // NPC 好感度门槛(0 = 无限制) [Header("奖励")] public RewardSO reward; [Header("失败条件(可选)")] public bool canFail; public QuestObjectiveSO failCondition; [Header("完成后续任务(分支)")] public QuestBranch[] branches; } [Serializable] public class QuestBranch { public string conditionQuestId; // 若此任务已完成 → 走本分支(空 = 默认) public QuestSO nextQuest; public string npcDialogueKey; // 触发 NPC 对话 key } }