47 lines
1.5 KiB
C#
47 lines
1.5 KiB
C#
using System;
|
||
using UnityEngine;
|
||
using BaseGames.Dialogue;
|
||
|
||
namespace BaseGames.Quest
|
||
{
|
||
/// <summary>
|
||
/// 任务定义 SO(架构 22_QuestChallengeModule §2)。
|
||
/// 资产路径: Assets/ScriptableObjects/Quest/Quest_{questId}.asset
|
||
/// </summary>
|
||
[CreateAssetMenu(menuName = "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
|
||
}
|
||
}
|