using CodeStage.AntiCheat.ObscuredTypes; using Newtonsoft.Json; using System; using System.Collections.Generic; [Serializable] public class BreakingLimitTableData : TableDataBase { // ObscuredInt 적용 ObscuredInt _LimitLv; public int n_LimitLv { get { return _LimitLv; } set { _LimitLv = value; _LimitLv.RandomizeCryptoKey(); } } // 초월(한계 돌파) 달성 레벨 ObscuredInt _RequireTotalStat; public int n_RequireTotalStat { get { return _RequireTotalStat; } set { _RequireTotalStat = value; _RequireTotalStat.RandomizeCryptoKey(); } } // 초월에 필요한 스탯 총 요구량 ObscuredInt _RequireLevel; public int n_RequireLevel { get { return _RequireLevel; } set { _RequireLevel = value; _RequireLevel.RandomizeCryptoKey(); } } // 초월에 필요한 레벨 요구량 ObscuredInt _MaxAbilityPoint; public int n_MaxAbilityPoint { get { return _MaxAbilityPoint; } set { _MaxAbilityPoint = value; _MaxAbilityPoint.RandomizeCryptoKey(); } } // 최대 특성 보유량 ObscuredInt _Equip_Upgrade_Limit; public int n_Equip_Upgrade_Limit { get { return _Equip_Upgrade_Limit; } set { _Equip_Upgrade_Limit = value; _Equip_Upgrade_Limit.RandomizeCryptoKey(); } } // 장비 강화 최대 레벨 ObscuredInt _limitSlotMagic; public int n_limitSlotMagic { get { return _limitSlotMagic; } set { _limitSlotMagic = value; _limitSlotMagic.RandomizeCryptoKey(); } } // 최대 마법부여 슬롯 (슬롯 개방 레벨은 n_LimitLv을 참조) // ObscuredFloat 적용 ObscuredFloat _Monster_DMG_Multiplier; public float f_Monster_DMG_Multiplier { get { return _Monster_DMG_Multiplier; } set { _Monster_DMG_Multiplier = value; _Monster_DMG_Multiplier.RandomizeCryptoKey(); } } // 일반 몬스터 피해 증가량 ObscuredFloat _Boss_DMG_Multiplier; public float f_Boss_DMG_Multiplier { get { return _Boss_DMG_Multiplier; } set { _Boss_DMG_Multiplier = value; _Boss_DMG_Multiplier.RandomizeCryptoKey(); } } // 보스 피해량 증가량 ObscuredFloat _ALL_STAT_Multiplier; public float f_ALL_STAT_Multiplier { get { return _ALL_STAT_Multiplier; } set { _ALL_STAT_Multiplier = value; _ALL_STAT_Multiplier.RandomizeCryptoKey(); } } // 모든 스탯 증가량 public float Get_StatValue(eStat stat) { switch (stat) { case eStat.Monster_DMG_Multiplier: return f_Monster_DMG_Multiplier; case eStat.BOSS_DMG_Multiplier: return f_Monster_DMG_Multiplier; case eStat.ALL_STAT_Multiplier: return f_ALL_STAT_Multiplier; } return 0f; } } public class table_breakinglimit : table_missionbase { public static table_breakinglimit Ins; List tableDatas; Dictionary dic_Data = new Dictionary(); // 슬롯, 레벨 Dictionary dic_SlotOpenData = new Dictionary(); protected override void Awake() { base.Awake(); Ins = this; } protected override void Start() { tableDatas = JsonConvert.DeserializeObject>(json_last); for (int i = 0; i < Get_DataList().Count; i++) { var temp = Get_DataList()[i]; dic_Data.Add(temp.n_LimitLv, temp); if (temp.n_limitSlotMagic > 0) { if (!dic_SlotOpenData.ContainsKey(temp.n_limitSlotMagic)) dic_SlotOpenData.Add(temp.n_limitSlotMagic, temp.n_LimitLv); } } base.Start(); } public BreakingLimitTableData Get_Data_orNull(int lv) { return dic_Data.ContainsKey(lv) ? dic_Data[lv] : null; } public List Get_DataList() { return tableDatas; } public int Get_SlotOpenLv(int slot) { return dic_SlotOpenData[slot]; } }