using CodeStage.AntiCheat.ObscuredTypes; using Newtonsoft.Json; using System.Collections.Generic; public class NPCConfigTableData : TableDataBase { ObscuredInt _NPCID; public int n_NPCID { get { return _NPCID; } set { _NPCID = value; _NPCID.RandomizeCryptoKey(); } } public int n_NPCGrade; public string s_NPCImg; ObscuredInt _AppearRate; public int n_AppearRate { get { return _AppearRate; } set { _AppearRate = value; _AppearRate.RandomizeCryptoKey(); } } ObscuredInt _BattleMonsterID; public int n_BattleMonsterID { get { return _BattleMonsterID; } set { _BattleMonsterID = value; _BattleMonsterID.RandomizeCryptoKey(); } } public eNPCType e_NPCType; ObscuredInt _NPC​RequestItemID; public int n_NPC​RequestItemID { get { return _NPC​RequestItemID; } set { _NPC​RequestItemID = value; _NPC​RequestItemID.RandomizeCryptoKey(); } } ObscuredInt _NPCRewardID; public int n_NPCRewardID { get { return _NPCRewardID; } set { _NPCRewardID = value; _NPCRewardID.RandomizeCryptoKey(); } } public int n_AppearTalkID; public int n_BattleTalkID; public int n_LeaveTalkID; public int n_NPC​RequestItemTalkID; public int n_NPCGiftTalkID; public int n_NoGiftTalkID; public int n_StealFailTalkID; public int n_DieTalkID; } public class table_NPCConfig : table_base { public static table_NPCConfig Ins; List tableDatas; protected override void Awake() { Ins = this; base.Awake(); } protected override void Start() { tableDatas = JsonConvert.DeserializeObject>(json_last); base.Start(); } public List Get_DataList() { return tableDatas; } public NPCConfigTableData Get_Data(int id) { return tableDatas.Find(f => f.n_NPCID == id); } public NPCConfigTableData Get_RandomData(int grade) { var list = tableDatas.FindAll(x => x.n_NPCGrade == grade); return DSUtil.WeightedPick(list, x => x.n_AppearRate); } public NPCConfigTableData Get_RandomData() { return DSUtil.WeightedPick(tableDatas, x => x.n_AppearRate); } }