Files
caliverse_server/ServerCommon/MetaData/QuestAssignData.cs
2025-05-01 07:20:41 +09:00

243 lines
6.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MetaAssets;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace ServerCommon
{
[JsonConverter(typeof(StringEnumConverter))]
public enum EQuestEventTargetType
{
NONE = 0,
AVATARPROFILE = 1,
BEACONDIALOGUE,
BUFF,
CHAIR,
CHANNEL,
CHAT,
CONCERT,
COSTUME,
COUNTER, //쓸지 안쓸지 모르겠는데?
CRAFTING,
CUTSCENE,
DIALOGUE,
DRESSROOM,
FARMING,
FRIEND,
GUI,
INSTANCE,
INTERIORMODE,
ITEM,
MAIL,
MANNEQUIN,
MOVEMENT,
MYHOME,
NPC,
PARTY,
PROP,
QUEST,
RENTAL,
REWARD,
SOCIALACTION,
SPECIALGUIDE,
TASK,
TATTOO,
TAXI,
TOOL,
TRIGGER,
TIMER,
TPS,
UGQ,
VIDEO,
WAITING,
}
[JsonConverter(typeof(StringEnumConverter))]
public enum EQuestEventNameType
{
NONE = 0,
ACTIVED,
ADDED ,
ARRIVED,
BOUGHT,
CHANGED,
COMPLETED,
CONVERSIONED,
DELETED,
EDITED,
ENDED,
ENHANCED,
EQUIPED,
EXITED,
ENTERED,
JUMP,
MAX,
PICTURED,
POPUP,
RECEIVED,
REGISTERED,
REQUESTED,
SENDED,
SOLD,
SPRINT,
STARTED,
STOPPED,
SWITCHED,
USED,
VISITED,
PLAYERKILL,
FEVER,
}
[JsonConverter(typeof(StringEnumConverter))]
public enum EQuestFunctionTargetType
{
NONE = 0,
CONCERT,
COUNTER,
CUTSCENE,
DIALOGUE,
DRESSROOM,
ELEVATOR,
FRIEND,
GUI,
GUIDE,
INSTANCE,
INVENTORY,
ITEM,
MAIL,
MAINMENU,
MAP,
MYHOME,
NPC,
PARTY,
PROP,
QUEST,
REWARD,
SHOP,
SOCIALACTION,
SPECIALGUIDE,
TASK,
TAXI,
TOOL,
TRIGGER,
WARP,
BUFF,
TIMER,
VIDEO,
PARALLEL,
WAITING,
}
[JsonConverter(typeof(StringEnumConverter))]
public enum EQuestFunctionNameType
{
NONE = 0,
ACTIVE = 1,
ARRIVE = 2,
ASSIGN = 3,
CHANGE = 4,
COMPLETE = 5,
DECREASE = 6,
DELETE = 7,
DIALOGUE_CLEAR = 8,
DIALOGUE_SET = 9,
ENTER = 10,
EXIT = 11,
GIVE = 12,
INVISIBLE = 13,
INCREASE = 14,
LOCATION = 15,
POPUP = 16,
PLAY = 17,
SET = 18,
START = 19,
SWITCH = 20,
TELEPORT = 21,
TITLE_UPDATE = 22,
USE = 23,
}
public class QuestBaseInfo
{
public UInt32 QuestId { get; set; }
public UInt32 QuestRevision { get; set; } = 0;
public UgqStateType UgqState { get; set; } = UgqStateType.None;
public string QuestType { get; set; } = string.Empty;
public bool Reveal { get; set; }
public string AssignType { get; set; } = string.Empty;
public string RequirementType { get; set; } = string.Empty;
public UInt32 RequirementValue { get; set; }
public OncePeriodRangeType OncePeriodRangeType { get; set; } = OncePeriodRangeType.NONE;
public bool NormalPoolActive { get; set; }
public bool ForceAccept { get; set; }
public int RewardGroupId { get; set; }
public string Dialogue { get; set; } = string.Empty;
public string DialogueResult { get; set; } = string.Empty;
public List<UInt32> AssignableQuestsAfterEnd { get; set; } = new();
//public int firstTaskIdx { get; set; } //24-06-19 개선을 위해 주석 처리
//public int firstTaskNum { get; set; } 24-06-19 개선을 위해 주석 처리
public Dictionary<int, QuestTaskGroup> QuestTaskGroupList { get; set; } = new();
}
public class QuestTaskGroup
{
public int TaskNum { get; set; }
//public int NextTaskNum { get; set; } 24-06-19 개선을 위해 주석 처리
//public int NextTaskIdx { get; set; } 24-06-19 개선을 위해 주석 처리
public bool HasCounter { get; set; }
public int MinCounter { get; set; }
public int MaxCounter { get; set; }
public bool HasTimer { get; set; }
public long RemainTime { get; set; }
public bool HasAssignableQuest { get; set; } = false;
public List<UInt32> AssignableQuestIds { get; set; } = new();
public bool IsParallel { get; set; }
//public Dictionary<int, QuestEventInfo> QuestEventGroup { get; set; } = new(); //24-06-19 개선 가능한지 확인해볼것 이거 필요한지 모르겟다. 나중에 다시확인 해볼것
public Dictionary<string, QuestEventInfo> QuestEventGroupByEventString { get; set; } = new(); //<eventstring, eventInfo>
public List<string> EventStringList { get; set; } = new();
}
public class QuestEventInfo
{
public int EventIdx { get; set; }
public string EventTarget { get; set; } = string.Empty;
public string EventName { get; set; } = string.Empty;
public string EventCondition1 { get; set; } = string.Empty;
public string EventCondition2 { get; set; } = string.Empty;
public string EventCondition3 { get; set; } = string.Empty;
public List<QuestEventFunction> QuestEventFunctionList { get; set; } = new();
}
public class QuestEventFunction
{
public int Idx { get; set; } //24-06-19 이게 필요한가??
public string FunctionTarget { get; set; } = string.Empty;
public string FunctionName { get; set; } = string.Empty;
public string FunctionCondition1 { get; set; } = string.Empty;
public string FunctionCondition2 { get; set; } = string.Empty;
public string FunctionCondition3 { get; set; } = string.Empty;
public QuestEventFunction()
{
}
}
}