243 lines
6.2 KiB
C#
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()
|
|
{
|
|
}
|
|
}
|
|
|
|
}
|