少年修仙传客户端代码仓库
client_Lhy
2019-06-13 5f96222da876151bd7ab1649c038902b30ef8e1c
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
1 文件已复制
1个文件已删除
1 文件已重命名
2个文件已添加
36个文件已修改
1820 ■■■■ 已修改文件
Core/GameEngine/Model/Config/AppointItemConfig.cs 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/AppointItemConfig.cs.meta 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/ItemConfig.cs 437 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/SpiritWeaponPropertyConfig.cs 227 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/SpiritWeaponPropertyConfig.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/AI/Process/PN_OpenDialog.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/StageLoad.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/AppointItemConfigWrap.cs 387 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/SnxxzUITreasureSkillModelWrap.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/XLuaGenAutoRegister.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Alchemy/AlchemyModel.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Chat/ChatExtentWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/EquipStar/EquipStarModel.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyCreateWin.cs 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/BossHomeVipLackWin.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/DemonJarBriefInfoBehaviour.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/DemonJarModel.cs 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/DemonJarWin.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/WorldBossWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ItemTip/ItemTipUtility.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ItemTip/SpiritWeaponTipWin.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ItemTip/TipSpiritWeaponPropertyWidget.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ItemTip/TipSpiritWeaponPropertyWidget.cs.meta 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ItemTip/WingTipWin.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/ItemLogicUtility.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/ItemModel.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/ItemOperateUtility.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/LegendPropertyUtility.cs 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/LowSettingTip.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/MainInterfaceWin.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/MainPositionTween.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/TaskFeedbackModel.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainWin/HighSettingFadeInFadeOut.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Skill/TreasureSkillModel.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Skill/TreasureSkillWin.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Tip/ExperienceFloat.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/RechargeBehaviour.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Vip/VipRechargeWin.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowJump/WindowJumpMgr.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WorldMap/WorldMapWin.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/ConfigInitiator.cs 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/AppointItemConfig.cs
@@ -1,6 +1,6 @@
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           Wednesday, May 15, 2019
//    [  Date ]:           Thursday, June 13, 2019
//--------------------------------------------------------
using System.Collections.Generic;
@@ -14,12 +14,8 @@
{
    public readonly int ID;
    public readonly int SuiteLv;
    public readonly int CancelUseLimit;
    public readonly int[] LegendAttrID;
    public readonly int[] LegendAttrValue;
    public readonly int[] OutOfPrintAttr;
    public readonly int[] OutOfPrintAttrValue;
    public AppointItemConfig()
    {
@@ -33,36 +29,18 @@
            int.TryParse(tables[0],out ID); 
            int.TryParse(tables[1],out SuiteLv);
            int.TryParse(tables[2],out CancelUseLimit);
            string[] LegendAttrIDStringArray = tables[3].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            string[] LegendAttrIDStringArray = tables[1].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            LegendAttrID = new int[LegendAttrIDStringArray.Length];
            for (int i=0;i<LegendAttrIDStringArray.Length;i++)
            {
                 int.TryParse(LegendAttrIDStringArray[i],out LegendAttrID[i]);
            }
            string[] LegendAttrValueStringArray = tables[4].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            string[] LegendAttrValueStringArray = tables[2].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            LegendAttrValue = new int[LegendAttrValueStringArray.Length];
            for (int i=0;i<LegendAttrValueStringArray.Length;i++)
            {
                 int.TryParse(LegendAttrValueStringArray[i],out LegendAttrValue[i]);
            }
            string[] OutOfPrintAttrStringArray = tables[5].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            OutOfPrintAttr = new int[OutOfPrintAttrStringArray.Length];
            for (int i=0;i<OutOfPrintAttrStringArray.Length;i++)
            {
                 int.TryParse(OutOfPrintAttrStringArray[i],out OutOfPrintAttr[i]);
            }
            string[] OutOfPrintAttrValueStringArray = tables[6].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            OutOfPrintAttrValue = new int[OutOfPrintAttrValueStringArray.Length];
            for (int i=0;i<OutOfPrintAttrValueStringArray.Length;i++)
            {
                 int.TryParse(OutOfPrintAttrValueStringArray[i],out OutOfPrintAttrValue[i]);
            }
        }
        catch (Exception ex)
Core/GameEngine/Model/Config/AppointItemConfig.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 309cbbabde0ad7e478eb2b56fca5fcb9
timeCreated: 1557892703
timeCreated: 1560396144
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Core/GameEngine/Model/Config/ItemConfig.cs
@@ -14,78 +14,78 @@
{
    public readonly int ID;
    public readonly int LV;
    public readonly string ItemName;
    public readonly int Type;
    public readonly int EquipPlace;
    public readonly int CanRepair;
    public readonly int PackCount;
    public readonly int UseLV;
    public readonly int CanSell;
    public readonly int CanTrade;
    public readonly int[] JumpComposeCondi;
    public readonly int CanDrop;
    public readonly int CanBind;
    public readonly int CDType;
    public readonly int CDTime;
    public readonly int GoldPrice;
    public readonly int GoldPaperPrice;
    public readonly int SilverPrice;
    public readonly int UseTag;
    public readonly int Effect1;
    public readonly int EffectValueA1;
    public readonly int EffectValueB1;
    public readonly int EffectValueC1;
    public readonly int Effect2;
    public readonly int EffectValueA2;
    public readonly int EffectValueB2;
    public readonly int EffectValueC2;
    public readonly int Effect3;
    public readonly int EffectValueA3;
    public readonly int EffectValueB3;
    public readonly int EffectValueC3;
    public readonly int Effect4;
    public readonly int EffectValueA4;
    public readonly int EffectValueB4;
    public readonly int EffectValueC4;
    public readonly int Effect5;
    public readonly int EffectValueA5;
    public readonly int EffectValueB5;
    public readonly int EffectValueC5;
    public readonly int AddSkill1;
    public readonly int AddSkill2;
    public readonly int JobLimit;
    public readonly int RealmLimit;
    public readonly int ItemColor;
    public readonly int StarLevel;
    public readonly int MaxHoleCount;
    public readonly int CanBreak;
    public readonly int MaxEndure;
    public readonly int EndureReduceType;
    public readonly int BindType;
    public readonly int MaxSkillCnt;
    public readonly int ExpireTime;
    public readonly int MaxFitLV;
    public readonly int SuiteiD;
    public readonly string DropinstantEffName;
    public readonly string IconKey;
    public readonly int ChangeOrd;
    public readonly string Description;
    public readonly string QualityName;
    public readonly int QualityEchoType;
    public readonly int LimitSTR;
    public readonly int LimitPHY;
    public readonly int LimitPNE;
    public readonly string Template;
    public readonly int DropItemPattern;
    public readonly int SellTip;
    public readonly int BatchUse;
    public readonly int Jump;
    public readonly int[] GetWay;
    public readonly string ItemTypeName;
    public readonly int[] UseCondiType;
    public readonly int LV;
    public readonly string ItemName;
    public readonly int Type;
    public readonly int EquipPlace;
    public readonly int CanRepair;
    public readonly int PackCount;
    public readonly int UseLV;
    public readonly int CanSell;
    public readonly int CanTrade;
    public readonly int[] JumpComposeCondi;
    public readonly int CanDrop;
    public readonly int CanBind;
    public readonly int CDType;
    public readonly int CDTime;
    public readonly int GoldPrice;
    public readonly int GoldPaperPrice;
    public readonly int SilverPrice;
    public readonly int UseTag;
    public readonly int Effect1;
    public readonly int EffectValueA1;
    public readonly int EffectValueB1;
    public readonly int EffectValueC1;
    public readonly int Effect2;
    public readonly int EffectValueA2;
    public readonly int EffectValueB2;
    public readonly int EffectValueC2;
    public readonly int Effect3;
    public readonly int EffectValueA3;
    public readonly int EffectValueB3;
    public readonly int EffectValueC3;
    public readonly int Effect4;
    public readonly int EffectValueA4;
    public readonly int EffectValueB4;
    public readonly int EffectValueC4;
    public readonly int Effect5;
    public readonly int EffectValueA5;
    public readonly int EffectValueB5;
    public readonly int EffectValueC5;
    public readonly int AddSkill1;
    public readonly int AddSkill2;
    public readonly int JobLimit;
    public readonly int RealmLimit;
    public readonly int ItemColor;
    public readonly int StarLevel;
    public readonly int MaxHoleCount;
    public readonly int CanBreak;
    public readonly int MaxEndure;
    public readonly int EndureReduceType;
    public readonly int BindType;
    public readonly int MaxSkillCnt;
    public readonly int ExpireTime;
    public readonly int MaxFitLV;
    public readonly int SuiteiD;
    public readonly string DropinstantEffName;
    public readonly string IconKey;
    public readonly int ChangeOrd;
    public readonly string Description;
    public readonly string QualityName;
    public readonly int QualityEchoType;
    public readonly int LimitSTR;
    public readonly int LimitPHY;
    public readonly int LimitPNE;
    public readonly string Template;
    public readonly int DropItemPattern;
    public readonly int SellTip;
    public readonly int BatchUse;
    public readonly int Jump;
    public readonly int[] GetWay;
    public readonly string ItemTypeName;
    public readonly int[] UseCondiType;
    public ItemConfig()
    public ItemConfig()
    {
    }
@@ -95,162 +95,162 @@
        {
            var tables = input.Split('\t');
            int.TryParse(tables[0],out ID);
            int.TryParse(tables[0], out ID);
            int.TryParse(tables[1],out LV);
            int.TryParse(tables[1], out LV);
            ItemName = tables[2];
            ItemName = tables[2];
            int.TryParse(tables[3],out Type);
            int.TryParse(tables[3], out Type);
            int.TryParse(tables[4],out EquipPlace);
            int.TryParse(tables[4], out EquipPlace);
            int.TryParse(tables[5],out CanRepair);
            int.TryParse(tables[5], out CanRepair);
            int.TryParse(tables[6],out PackCount);
            int.TryParse(tables[6], out PackCount);
            int.TryParse(tables[7],out UseLV);
            int.TryParse(tables[7], out UseLV);
            int.TryParse(tables[8],out CanSell);
            int.TryParse(tables[8], out CanSell);
            int.TryParse(tables[9],out CanTrade);
            int.TryParse(tables[9], out CanTrade);
            string[] JumpComposeCondiStringArray = tables[10].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            JumpComposeCondi = new int[JumpComposeCondiStringArray.Length];
            for (int i=0;i<JumpComposeCondiStringArray.Length;i++)
            {
                 int.TryParse(JumpComposeCondiStringArray[i],out JumpComposeCondi[i]);
            }
            string[] JumpComposeCondiStringArray = tables[10].Trim().Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries);
            JumpComposeCondi = new int[JumpComposeCondiStringArray.Length];
            for (int i = 0; i < JumpComposeCondiStringArray.Length; i++)
            {
                int.TryParse(JumpComposeCondiStringArray[i], out JumpComposeCondi[i]);
            }
            int.TryParse(tables[11],out CanDrop);
            int.TryParse(tables[11], out CanDrop);
            int.TryParse(tables[12],out CanBind);
            int.TryParse(tables[12], out CanBind);
            int.TryParse(tables[13],out CDType);
            int.TryParse(tables[13], out CDType);
            int.TryParse(tables[14],out CDTime);
            int.TryParse(tables[14], out CDTime);
            int.TryParse(tables[15],out GoldPrice);
            int.TryParse(tables[15], out GoldPrice);
            int.TryParse(tables[16],out GoldPaperPrice);
            int.TryParse(tables[16], out GoldPaperPrice);
            int.TryParse(tables[17],out SilverPrice);
            int.TryParse(tables[17], out SilverPrice);
            int.TryParse(tables[18],out UseTag);
            int.TryParse(tables[18], out UseTag);
            int.TryParse(tables[19],out Effect1);
            int.TryParse(tables[19], out Effect1);
            int.TryParse(tables[20],out EffectValueA1);
            int.TryParse(tables[20], out EffectValueA1);
            int.TryParse(tables[21],out EffectValueB1);
            int.TryParse(tables[21], out EffectValueB1);
            int.TryParse(tables[22],out EffectValueC1);
            int.TryParse(tables[22], out EffectValueC1);
            int.TryParse(tables[23],out Effect2);
            int.TryParse(tables[23], out Effect2);
            int.TryParse(tables[24],out EffectValueA2);
            int.TryParse(tables[24], out EffectValueA2);
            int.TryParse(tables[25],out EffectValueB2);
            int.TryParse(tables[25], out EffectValueB2);
            int.TryParse(tables[26],out EffectValueC2);
            int.TryParse(tables[26], out EffectValueC2);
            int.TryParse(tables[27],out Effect3);
            int.TryParse(tables[27], out Effect3);
            int.TryParse(tables[28],out EffectValueA3);
            int.TryParse(tables[28], out EffectValueA3);
            int.TryParse(tables[29],out EffectValueB3);
            int.TryParse(tables[29], out EffectValueB3);
            int.TryParse(tables[30],out EffectValueC3);
            int.TryParse(tables[30], out EffectValueC3);
            int.TryParse(tables[31],out Effect4);
            int.TryParse(tables[31], out Effect4);
            int.TryParse(tables[32],out EffectValueA4);
            int.TryParse(tables[32], out EffectValueA4);
            int.TryParse(tables[33],out EffectValueB4);
            int.TryParse(tables[33], out EffectValueB4);
            int.TryParse(tables[34],out EffectValueC4);
            int.TryParse(tables[34], out EffectValueC4);
            int.TryParse(tables[35],out Effect5);
            int.TryParse(tables[35], out Effect5);
            int.TryParse(tables[36],out EffectValueA5);
            int.TryParse(tables[36], out EffectValueA5);
            int.TryParse(tables[37],out EffectValueB5);
            int.TryParse(tables[37], out EffectValueB5);
            int.TryParse(tables[38],out EffectValueC5);
            int.TryParse(tables[38], out EffectValueC5);
            int.TryParse(tables[39],out AddSkill1);
            int.TryParse(tables[39], out AddSkill1);
            int.TryParse(tables[40],out AddSkill2);
            int.TryParse(tables[40], out AddSkill2);
            int.TryParse(tables[41],out JobLimit);
            int.TryParse(tables[41], out JobLimit);
            int.TryParse(tables[42],out RealmLimit);
            int.TryParse(tables[42], out RealmLimit);
            int.TryParse(tables[43],out ItemColor);
            int.TryParse(tables[43], out ItemColor);
            int.TryParse(tables[44],out StarLevel);
            int.TryParse(tables[44], out StarLevel);
            int.TryParse(tables[45],out MaxHoleCount);
            int.TryParse(tables[45], out MaxHoleCount);
            int.TryParse(tables[46],out CanBreak);
            int.TryParse(tables[46], out CanBreak);
            int.TryParse(tables[47],out MaxEndure);
            int.TryParse(tables[47], out MaxEndure);
            int.TryParse(tables[48],out EndureReduceType);
            int.TryParse(tables[48], out EndureReduceType);
            int.TryParse(tables[49],out BindType);
            int.TryParse(tables[49], out BindType);
            int.TryParse(tables[50],out MaxSkillCnt);
            int.TryParse(tables[50], out MaxSkillCnt);
            int.TryParse(tables[51],out ExpireTime);
            int.TryParse(tables[51], out ExpireTime);
            int.TryParse(tables[52],out MaxFitLV);
            int.TryParse(tables[52], out MaxFitLV);
            int.TryParse(tables[53],out SuiteiD);
            int.TryParse(tables[53], out SuiteiD);
            DropinstantEffName = tables[54];
            DropinstantEffName = tables[54];
            IconKey = tables[55];
            IconKey = tables[55];
            int.TryParse(tables[56],out ChangeOrd);
            int.TryParse(tables[56], out ChangeOrd);
            Description = tables[57];
            Description = tables[57];
            QualityName = tables[58];
            QualityName = tables[58];
            int.TryParse(tables[59],out QualityEchoType);
            int.TryParse(tables[59], out QualityEchoType);
            int.TryParse(tables[60],out LimitSTR);
            int.TryParse(tables[60], out LimitSTR);
            int.TryParse(tables[61],out LimitPHY);
            int.TryParse(tables[61], out LimitPHY);
            int.TryParse(tables[62],out LimitPNE);
            int.TryParse(tables[62], out LimitPNE);
            Template = tables[63];
            Template = tables[63];
            int.TryParse(tables[64],out DropItemPattern);
            int.TryParse(tables[64], out DropItemPattern);
            int.TryParse(tables[65],out SellTip);
            int.TryParse(tables[65], out SellTip);
            int.TryParse(tables[66],out BatchUse);
            int.TryParse(tables[66], out BatchUse);
            int.TryParse(tables[67],out Jump);
            int.TryParse(tables[67], out Jump);
            string[] GetWayStringArray = tables[68].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            GetWay = new int[GetWayStringArray.Length];
            for (int i=0;i<GetWayStringArray.Length;i++)
            {
                 int.TryParse(GetWayStringArray[i],out GetWay[i]);
            }
            string[] GetWayStringArray = tables[68].Trim().Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries);
            GetWay = new int[GetWayStringArray.Length];
            for (int i = 0; i < GetWayStringArray.Length; i++)
            {
                int.TryParse(GetWayStringArray[i], out GetWay[i]);
            }
            ItemTypeName = tables[69];
            ItemTypeName = tables[69];
            string[] UseCondiTypeStringArray = tables[70].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            UseCondiType = new int[UseCondiTypeStringArray.Length];
            for (int i=0;i<UseCondiTypeStringArray.Length;i++)
            {
                 int.TryParse(UseCondiTypeStringArray[i],out UseCondiType[i]);
            }
            string[] UseCondiTypeStringArray = tables[70].Trim().Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries);
            UseCondiType = new int[UseCondiTypeStringArray.Length];
            for (int i = 0; i < UseCondiTypeStringArray.Length; i++)
            {
                int.TryParse(UseCondiTypeStringArray[i], out UseCondiType[i]);
            }
        }
        catch (Exception ex)
        {
@@ -260,13 +260,13 @@
    static Dictionary<string, ItemConfig> configs = new Dictionary<string, ItemConfig>();
    public static ItemConfig Get(string id)
    {
        if (!inited)
    {
        if (!inited)
        {
            Debug.Log("ItemConfig 还未完成初始化。");
            return null;
        }
        if (configs.ContainsKey(id))
        {
            return configs[id];
@@ -279,10 +279,15 @@
            rawDatas.Remove(id);
        }
        if (id != "0" && config == null)
        {
            Debug.LogErrorFormat("尝试去获得不存在的物品:id->{0},请联系<color==yellow>贞亮和陈有</color>。", id);
        }
        return config;
    }
    public static ItemConfig Get(int id)
    public static ItemConfig Get(int id)
    {
        return Get(id.ToString());
    }
@@ -309,25 +314,25 @@
        return values;
    }
    public static bool Has(string id)
    public static bool Has(string id)
    {
        return configs.ContainsKey(id) || rawDatas.ContainsKey(id);
    }
    public static bool Has(int id)
    public static bool Has(int id)
    {
        return Has(id.ToString());
    }
    public static bool inited { get; private set; }
    public static bool inited { get; private set; }
    protected static Dictionary<string, string> rawDatas = new Dictionary<string, string>();
    public static void Init(bool sync=false)
    public static void Init(bool sync = false)
    {
        inited = false;
        var path = string.Empty;
        inited = false;
        var path = string.Empty;
        if (AssetSource.refdataFromEditor)
        {
            path = ResourcesPath.CONFIG_FODLER +"/Item.txt";
            path = ResourcesPath.CONFIG_FODLER + "/Item.txt";
        }
        else
        {
@@ -335,7 +340,7 @@
        }
        configs.Clear();
        var tempConfig = new ItemConfig();
        var tempConfig = new ItemConfig();
        var preParse = tempConfig is IConfigPostProcess;
        if (sync)
@@ -347,67 +352,67 @@
            }
            for (int i = 3; i < lines.Length; i++)
            {
                try
                {
                    var line = lines[i];
                    var index = line.IndexOf("\t");
                    if (index == -1)
                    {
                        continue;
                    }
                    var id = line.Substring(0, index);
                try
                {
                    var line = lines[i];
                    var index = line.IndexOf("\t");
                    if (index == -1)
                    {
                        continue;
                    }
                    var id = line.Substring(0, index);
                    if (preParse)
                    {
                        var config = new ItemConfig(line);
                        configs[id] = config;
                        (config as IConfigPostProcess).OnConfigParseCompleted();
                    }
                    else
                    {
                        rawDatas[id] = line;
                    }
                }
                catch (System.Exception ex)
                    if (preParse)
                    {
                        var config = new ItemConfig(line);
                        configs[id] = config;
                        (config as IConfigPostProcess).OnConfigParseCompleted();
                    }
                    else
                    {
                        rawDatas[id] = line;
                    }
                }
                catch (System.Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
            inited = true;
            inited = true;
        }
        else
        {
            ThreadPool.QueueUserWorkItem((object _object) =>
            {
                var lines = File.ReadAllLines(path);
                if (!preParse)
                {
                    rawDatas = new Dictionary<string, string>(lines.Length - 3);
                }
                if (!preParse)
                {
                    rawDatas = new Dictionary<string, string>(lines.Length - 3);
                }
                for (int i = 3; i < lines.Length; i++)
                {
                    try
                    {
                       var line = lines[i];
                        var index = line.IndexOf("\t");
                        if (index == -1)
                        {
                            continue;
                        }
                        var id = line.Substring(0, index);
                    try
                    {
                        var line = lines[i];
                        var index = line.IndexOf("\t");
                        if (index == -1)
                        {
                            continue;
                        }
                        var id = line.Substring(0, index);
                        if (preParse)
                        {
                            var config = new ItemConfig(line);
                            configs[id] = config;
                            (config as IConfigPostProcess).OnConfigParseCompleted();
                        }
                        else
                        {
                            rawDatas[id] = line;
                        }
                    }
                    catch (System.Exception ex)
                        if (preParse)
                        {
                            var config = new ItemConfig(line);
                            configs[id] = config;
                            (config as IConfigPostProcess).OnConfigParseCompleted();
                        }
                        else
                        {
                            rawDatas[id] = line;
                        }
                    }
                    catch (System.Exception ex)
                    {
                        Debug.LogError(ex);
                    }
Core/GameEngine/Model/Config/SpiritWeaponPropertyConfig.cs
New file
@@ -0,0 +1,227 @@
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           Thursday, June 13, 2019
//--------------------------------------------------------
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System;
using UnityEngine;
[XLua.LuaCallCSharp]
public partial class SpiritWeaponPropertyConfig
{
    public readonly int ItemID;
    public readonly int[] AttrIDList;
    public readonly int[] AttrValueList;
    public readonly int[] AttrColorList;
    public readonly int AttrScore;
    public SpiritWeaponPropertyConfig()
    {
    }
    public SpiritWeaponPropertyConfig(string input)
    {
        try
        {
            var tables = input.Split('\t');
            int.TryParse(tables[0],out ItemID);
            string[] AttrIDListStringArray = tables[1].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            AttrIDList = new int[AttrIDListStringArray.Length];
            for (int i=0;i<AttrIDListStringArray.Length;i++)
            {
                 int.TryParse(AttrIDListStringArray[i],out AttrIDList[i]);
            }
            string[] AttrValueListStringArray = tables[2].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            AttrValueList = new int[AttrValueListStringArray.Length];
            for (int i=0;i<AttrValueListStringArray.Length;i++)
            {
                 int.TryParse(AttrValueListStringArray[i],out AttrValueList[i]);
            }
            string[] AttrColorListStringArray = tables[3].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            AttrColorList = new int[AttrColorListStringArray.Length];
            for (int i=0;i<AttrColorListStringArray.Length;i++)
            {
                 int.TryParse(AttrColorListStringArray[i],out AttrColorList[i]);
            }
            int.TryParse(tables[4],out AttrScore);
        }
        catch (Exception ex)
        {
            DebugEx.Log(ex);
        }
    }
    static Dictionary<string, SpiritWeaponPropertyConfig> configs = new Dictionary<string, SpiritWeaponPropertyConfig>();
    public static SpiritWeaponPropertyConfig Get(string id)
    {
        if (!inited)
        {
            Debug.Log("SpiritWeaponPropertyConfig 还未完成初始化。");
            return null;
        }
        if (configs.ContainsKey(id))
        {
            return configs[id];
        }
        SpiritWeaponPropertyConfig config = null;
        if (rawDatas.ContainsKey(id))
        {
            config = configs[id] = new SpiritWeaponPropertyConfig(rawDatas[id]);
            rawDatas.Remove(id);
        }
        return config;
    }
    public static SpiritWeaponPropertyConfig Get(int id)
    {
        return Get(id.ToString());
    }
    public static List<string> GetKeys()
    {
        var keys = new List<string>();
        keys.AddRange(configs.Keys);
        keys.AddRange(rawDatas.Keys);
        return keys;
    }
    public static List<SpiritWeaponPropertyConfig> GetValues()
    {
        var values = new List<SpiritWeaponPropertyConfig>();
        values.AddRange(configs.Values);
        var keys = new List<string>(rawDatas.Keys);
        foreach (var key in keys)
        {
            values.Add(Get(key));
        }
        return values;
    }
    public static bool Has(string id)
    {
        return configs.ContainsKey(id) || rawDatas.ContainsKey(id);
    }
    public static bool Has(int id)
    {
        return Has(id.ToString());
    }
    public static bool inited { get; private set; }
    protected static Dictionary<string, string> rawDatas = new Dictionary<string, string>();
    public static void Init(bool sync=false)
    {
        inited = false;
        var path = string.Empty;
        if (AssetSource.refdataFromEditor)
        {
            path = ResourcesPath.CONFIG_FODLER +"/SpiritWeaponProperty.txt";
        }
        else
        {
            path = AssetVersionUtility.GetAssetFilePath("config/SpiritWeaponProperty.txt");
        }
        configs.Clear();
        var tempConfig = new SpiritWeaponPropertyConfig();
        var preParse = tempConfig is IConfigPostProcess;
        if (sync)
        {
            var lines = File.ReadAllLines(path);
            if (!preParse)
            {
                rawDatas = new Dictionary<string, string>(lines.Length - 3);
            }
            for (int i = 3; i < lines.Length; i++)
            {
                try
                {
                    var line = lines[i];
                    var index = line.IndexOf("\t");
                    if (index == -1)
                    {
                        continue;
                    }
                    var id = line.Substring(0, index);
                    if (preParse)
                    {
                        var config = new SpiritWeaponPropertyConfig(line);
                        configs[id] = config;
                        (config as IConfigPostProcess).OnConfigParseCompleted();
                    }
                    else
                    {
                        rawDatas[id] = line;
                    }
                }
                catch (System.Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
            inited = true;
        }
        else
        {
            ThreadPool.QueueUserWorkItem((object _object) =>
            {
                var lines = File.ReadAllLines(path);
                if (!preParse)
                {
                    rawDatas = new Dictionary<string, string>(lines.Length - 3);
                }
                for (int i = 3; i < lines.Length; i++)
                {
                    try
                    {
                       var line = lines[i];
                        var index = line.IndexOf("\t");
                        if (index == -1)
                        {
                            continue;
                        }
                        var id = line.Substring(0, index);
                        if (preParse)
                        {
                            var config = new SpiritWeaponPropertyConfig(line);
                            configs[id] = config;
                            (config as IConfigPostProcess).OnConfigParseCompleted();
                        }
                        else
                        {
                            rawDatas[id] = line;
                        }
                    }
                    catch (System.Exception ex)
                    {
                        Debug.LogError(ex);
                    }
                }
                inited = true;
            });
        }
    }
}
Core/GameEngine/Model/Config/SpiritWeaponPropertyConfig.cs.meta
copy from Lua/Gen/AppointItemConfigWrap.cs.meta copy to Core/GameEngine/Model/Config/SpiritWeaponPropertyConfig.cs.meta
File was copied from Lua/Gen/AppointItemConfigWrap.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 1f054f6c19ed4fc4daa96e584d28eb73
timeCreated: 1557818430
guid: f9b0ccc7d480fff4eafa16d2c5443d60
timeCreated: 1560392719
licenseType: Pro
MonoImporter:
  serializedVersion: 2
Fight/Actor/AI/Process/PN_OpenDialog.cs
@@ -18,6 +18,8 @@
        var _model = ModelCenter.Instance.GetModel<GuideDialogueModel>();
        _model.dialogID = intParam;
        _model.onClose = DialogFinish;
        WindowCenter.Instance.CloseOthers<GuideDialogueWin>();
        WindowCenter.Instance.Open<GuideDialogueWin>();
        WindowCenter.Instance.Close<MainInterfaceWin>();
Fight/Stage/StageLoad.cs
@@ -109,6 +109,10 @@
            if (needLoadResource)
            {
                tasks.Enqueue(new StageLoadProcessor.PreProcessTask(command));
                if (command.isClientLoadMap)
                {
                    tasks.Enqueue(new StageLoadProcessor.WaitSecondsTask(command, 0.5f));
                }
                tasks.Enqueue(new StageLoadProcessor.UnLoadAndGCTask(command));
            }
Lua/Gen/AppointItemConfigWrap.cs
File was deleted
Lua/Gen/SnxxzUITreasureSkillModelWrap.cs
@@ -50,7 +50,6 @@
            
            Utils.RegisterFunc(L, Utils.GETTER_IDX, "selectSkill", _g_get_selectSkill);
            Utils.RegisterFunc(L, Utils.GETTER_IDX, "serverInited", _g_get_serverInited);
            Utils.RegisterFunc(L, Utils.GETTER_IDX, "skillLevelUpLimitLevel", _g_get_skillLevelUpLimitLevel);
            Utils.RegisterFunc(L, Utils.GETTER_IDX, "requireRemind", _g_get_requireRemind);
            Utils.RegisterFunc(L, Utils.GETTER_IDX, "newSatisfyActiveExpertDirty", _g_get_newSatisfyActiveExpertDirty);
            Utils.RegisterFunc(L, Utils.GETTER_IDX, "selectActivePriority", _g_get_selectActivePriority);
@@ -652,20 +651,6 @@
            
                Snxxz.UI.TreasureSkillModel gen_to_be_invoked = (Snxxz.UI.TreasureSkillModel)translator.FastGetCSObj(L, 1);
                LuaAPI.lua_pushboolean(L, gen_to_be_invoked.serverInited);
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
            return 1;
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _g_get_skillLevelUpLimitLevel(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.TreasureSkillModel gen_to_be_invoked = (Snxxz.UI.TreasureSkillModel)translator.FastGetCSObj(L, 1);
                LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.skillLevelUpLimitLevel);
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
Lua/Gen/XLuaGenAutoRegister.cs
@@ -73,7 +73,6 @@
            translator.DelayWrapLoader(typeof(ApkUpdateUrlConfig), ApkUpdateUrlConfigWrap.__Register);
        
        
            translator.DelayWrapLoader(typeof(AppointItemConfig), AppointItemConfigWrap.__Register);
        
        
            translator.DelayWrapLoader(typeof(AreaCameraConfig), AreaCameraConfigWrap.__Register);
System/Alchemy/AlchemyModel.cs
@@ -110,8 +110,9 @@
                CheckRedpoint();
            }
            if (m_AlchemyDrugs.Contains(itemId))
            if (AttrFruitConfig.Has(itemId))
            {
                CheckRedpoint();
                RefreshUseDrugRedpoint();
            }
        }
@@ -550,6 +551,7 @@
                alchemyDrugUseRefresh();
            }
            CheckRedpoint();
            RefreshUseDrugRedpoint();
        }
@@ -654,6 +656,29 @@
                    {
                        continue;
                    }
                    var config = AlchemyConfig.Get(id);
                    AlchemyDrugUseLimit drugUseLimit;
                    if (TryGetAlchemyUseLimit(config.AlchemItemID, out drugUseLimit))
                    {
                        if (drugUseLimit.IsReachLimit())
                        {
                            continue;
                        }
                    }
                    else
                    {
                        var drugConfig = AttrFruitConfig.Get(config.AlchemItemID);
                        if (drugConfig != null)
                        {
                            if (packModel.GetItemTotalUsedTimes(config.AlchemItemID)
                               >= drugConfig.basicUseLimit)
                            {
                                continue;
                            }
                        }
                    }
                    Item item;
                    if (IsAlchemyEnoughMaterial(id, out item))
                    {
System/Chat/ChatExtentWin.cs
@@ -312,7 +312,7 @@
                {
                    foreach (var _equip in equipBodyDict.Values)
                    {
                        if (_equip.equipPlace <= (int)RoleEquipType.Guard)
                        if (_equip.config.EquipPlace <= (int)RoleEquipType.Guard)
                        {
                            m_DisplayItems.Add(_equip);
                        }
System/EquipStar/EquipStarModel.cs
@@ -554,11 +554,12 @@
                {
                    if (config.CostItemDict.x > 0)
                    {
                        specialMaterial.value = Mathf.RoundToInt(packModel.GetItemCountByID(PackType.Item, config.CostItemDict.x) >= config.CostItemDict.y ? 1f : 0f * 100);
                        var own = packModel.GetItemCountByID(PackType.Item, config.CostItemDict.x);
                        probability = own >= config.CostItemDict.y ? 1f : 0f;
                    }
                    else
                    {
                        specialMaterial.value = 0;
                        probability = 0f;
                    }
                }
                else
@@ -568,9 +569,9 @@
                        var itemGuid = GetMaterialLogicStringByIndex(i).value;
                        probability += GetMaterialSuccessRate(equipPosition, itemGuid);
                    }
                    starUpgradeProbability.value = Mathf.RoundToInt(probability * 100);
                }
                starUpgradeProbability.value = Mathf.RoundToInt(probability * 100);
            }
            else
            {
System/FairyAu/FairyCreateWin.cs
@@ -41,9 +41,8 @@
        protected override void OnPreOpen()
        {
            PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFariyInfo;
            m_CreateRemind1.text = Language.Get("L1132", model.createFairyLv);
            m_CreateRemind2.text = Language.Get("L1133", model.createFairyCost);
            model.fairyCreateTimesUpdate += FairyCreateTimesUpdate;
            DisplayCreateRemind();
            creationInput.text = string.Empty;
        }
@@ -54,13 +53,33 @@
        protected override void OnPreClose()
        {
            PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFariyInfo;
            model.fairyCreateTimesUpdate -= FairyCreateTimesUpdate;
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        private void FairyCreateTimesUpdate()
        {
            DisplayCreateRemind();
        }
        void DisplayCreateRemind()
        {
            m_CreateRemind1.text = Language.Get("L1132", model.createFairyLv);
            if (model.fairyCreateTimes < model.createFairyFreeCount)
            {
                m_CreateRemind2.text = StringUtility.Contact(Language.Get("L1133", model.createFairyCost),
                    Language.Get("CreateFamilyFreeCount", model.createFairyFreeCount));
            }
            else
            {
                m_CreateRemind2.text = Language.Get("L1133", model.createFairyCost);
            }
        }
        private void OnCreatConfirm()
        {
            if (PlayerDatas.Instance.baseData.LV < model.createFairyLv)
System/FindPrecious/BossHomeVipLackWin.cs
@@ -14,8 +14,13 @@
    public class BossHomeVipLackWin : Window
    {
        [SerializeField] Text m_Remind;
        [SerializeField] Text m_VipLevel;
        [SerializeField] Button m_ViewVip;
        [SerializeField] Button m_Close;
        BossHomeModel model { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } }
        VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } }
        #region Built-in
        protected override void BindController()
@@ -30,6 +35,7 @@
        protected override void OnPreOpen()
        {
            Display();
        }
        protected override void OnAfterOpen()
@@ -45,6 +51,16 @@
        }
        #endregion
        void Display()
        {
            var floor = model.selectedFloor;
            var vipLevel = model.GetFloorVipRequirement(model.selectedFloor);
            var requireMoney = vipModel.GetVipPreExp(vipLevel);
            m_Remind.text = Language.Get("W_BossHomeVip4", requireMoney, vipLevel, Language.Get("Num_CHS_8_" + floor));
            m_VipLevel.text = vipLevel.ToString();
        }
        private void ViewVip()
        {
            if (VersionConfig.Get().isBanShu)
System/FindPrecious/DemonJarBriefInfoBehaviour.cs
@@ -16,6 +16,9 @@
        [SerializeField] ItemBehaviour m_ItemBehaviour;
        [SerializeField] Text m_Participant;
        [SerializeField] Transform m_Attention;
        [SerializeField] RectTransform m_ContainerRealmUnlock;
        [SerializeField] RectTransform m_ContainerLevelUnlock;
        [SerializeField] Text m_UnlockLevel;
        DemonJarModel model { get { return ModelCenter.Instance.GetModel<DemonJarModel>(); } }
@@ -27,7 +30,7 @@
        protected override InteractorableState interactorableState {
            get {
                var selected = selectedBossId == bossId;
                var dieOrLocked = !findPreciousModel.IsBossUnlock(bossId) || !findPreciousModel.IsBossAlive(bossId);
                var dieOrLocked = !model.IsBossUnlock(bossId) || !findPreciousModel.IsBossAlive(bossId);
                if (!dieOrLocked)
                {
@@ -45,8 +48,12 @@
        protected override bool isRebornRightNow {
            get {
                return findPreciousModel.IsBossUnlock(bossId) && base.isRebornRightNow;
                return model.IsBossUnlock(bossId) && base.isRebornRightNow;
            }
        }
        protected override bool isUnLocked {
            get { return model.IsBossUnlock(bossId); }
        }
        public override void Display(object _data)
@@ -119,6 +126,53 @@
            m_Participant.text = Language.Get("FindPrecious_8", bossData.participant);
        }
        protected override void DrawBossBaseInfo(string icon, string name, int level, int realm)
        {
            m_Portrait.SetSprite(icon);
            m_Portrait.SetNativeSize();
            this.m_BossName.text = name;
            m_BossLevel.text = Language.Get("Z1024", level);
            m_RealmContainer.gameObject.SetActive(isUnLocked);
            m_UnLockCondition.gameObject.SetActive(!isUnLocked);
            if (!isUnLocked)
            {
                var realmOk = model.IsPlayerRealmEnough(bossId);
                m_ContainerRealmUnlock.gameObject.SetActive(!realmOk);
                m_ContainerLevelUnlock.gameObject.SetActive(realmOk);
                if (!realmOk)
                {
                    var unLockRealm = findPreciousModel.GetBossUnLockRealm(bossId);
                    var config = RealmConfig.Get(unLockRealm);
                    m_UnLockRealm.SetSprite(config.Img);
                }
                else
                {
                    m_UnlockLevel.text = Language.Get("DemonJarBossUnlockCondition2", level);
                }
            }
            else
            {
                if (m_Realm != null && m_RealmContainer != null)
                {
                    if (realm > 0 && RealmConfig.Has(realm))
                    {
                        m_RealmContainer.gameObject.SetActive(true);
                        var realmConfig = RealmConfig.Get(realm);
                        if (realmConfig != null)
                        {
                            m_Realm.SetSprite(realmConfig.Img);
                        }
                    }
                    else
                    {
                        m_RealmContainer.gameObject.SetActive(false);
                    }
                }
            }
        }
    }
}
System/FindPrecious/DemonJarModel.cs
@@ -2,12 +2,9 @@
//    [Author]:           第二世界
//    [  Date ]:           Thursday, December 21, 2017
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
using LitJson;
using System;
using System.Collections.Generic;
namespace Snxxz.UI
{
@@ -192,6 +189,23 @@
            return bosses;
        }
        public bool IsBossUnlock(int bossId)
        {
            return findPreciousModel.IsBossUnlock(bossId) && IsPlayerLevelEnough(bossId);
        }
        public bool IsPlayerLevelEnough(int bossId)
        {
            var config = NPCConfig.Get(bossId);
            return PlayerDatas.Instance.baseData.LV >= config.NPCLV;
        }
        public bool IsPlayerRealmEnough(int bossId)
        {
            var config = NPCConfig.Get(bossId);
            return PlayerDatas.Instance.baseData.realmLevel >= config.Realm;
        }
        public int GetBossIdByLine(int _line)
        {
            if (lineToBoss.ContainsKey(_line))
@@ -212,7 +226,7 @@
                for (int i = sortedBossIds.Count - 1; i >= 0; i--)
                {
                    var bossId = sortedBossIds[i];
                    if (findPreciousModel.IsBossUnlock(bossId))
                    if (IsBossUnlock(bossId))
                    {
                        if (preferBoss == 0)
                        {
@@ -244,7 +258,7 @@
            for (int i = sortedBossIds.Count - 1; i >= 0; i--)
            {
                var bossId = sortedBossIds[i];
                if (findPreciousModel.IsBossUnlock(bossId))
                if (IsBossUnlock(bossId))
                {
                    return bossId;
                }
@@ -370,6 +384,13 @@
                        var bossId = GetLastUnlockBoss();
                        AutoSubscribeLastUnLockBoss(bossId);
                    }
                    break;
                case PlayerDataType.LV:
                    if (FuncOpen.Instance.IsFuncOpen(76))
                    {
                        var bossId = GetLastUnlockBoss();
                        AutoSubscribeLastUnLockBoss(bossId);
                    }
                    if (PlayerDatas.Instance.baseData.LV == GeneralDefine.demonJarRedPoint)
                    {
System/FindPrecious/DemonJarWin.cs
@@ -193,13 +193,8 @@
                switch (error)
                {
                    case 1:
                        DemonJarBossData bossData = null;
                        if (model.TryGetBossData(model.selectedBoss, out bossData))
                        {
                            var config = NPCConfig.Get(model.selectedBoss);
                            var realmConfig = RealmConfig.Get(config.Realm);
                            SysNotifyMgr.Instance.ShowTip("DemonJarLvChallenge", realmConfig.Name);
                        }
                        var npcConfig = NPCConfig.Get(model.selectedBoss);
                        SysNotifyMgr.Instance.ShowTip("BossRealmHint3", npcConfig.NPCLV);
                        break;
                    case 2:
                        dungeonModel.currentDungeon = new Dungeon(DemonJarModel.DATA_MAPID, 0);
@@ -221,8 +216,8 @@
                            {
                                if (_ok)
                                {
                                    var config = DemonJarConfig.Get(model.selectedBoss);
                                    dungeonModel.SingleChallenge(DemonJarModel.DATA_MAPID, config.LineID);
                                    var demonJarConfig = DemonJarConfig.Get(model.selectedBoss);
                                    dungeonModel.SingleChallenge(DemonJarModel.DATA_MAPID, demonJarConfig.LineID);
                                }
                                if (_toggle)
@@ -287,14 +282,13 @@
        {
            if (!findPreciousModel.IsBossUnlock(model.selectedBoss))
            {
                _error = 6;
                return false;
            }
                if (!model.IsPlayerRealmEnough(model.selectedBoss))
                {
                    _error = 6;
                    return false;
                }
            DemonJarBossData bossData = null;
            if (model.TryGetBossData(model.selectedBoss, out bossData))
            {
                if (!findPreciousModel.IsBossUnlock(model.selectedBoss))
                if (!model.IsPlayerLevelEnough(model.selectedBoss))
                {
                    _error = 1;
                    return false;
System/FindPrecious/WorldBossWin.cs
@@ -142,7 +142,7 @@
        private bool TestGotoKillBoss(out int _error)
        {
            if (findPreciousModel.IsBossUnlock(model.selectedBoss))
            if (!findPreciousModel.IsBossUnlock(model.selectedBoss))
            {
                _error = 4;
                return false;
System/ItemTip/ItemTipUtility.cs
@@ -33,6 +33,7 @@
            public BaseInfo baseInfo;
            public BaseProperty baseProperty;
            public BaseProperty petMountBaseProperty;
            public SpiritWeaponProperty spiritWeaponProperty;
            public LegendProperty legendProperty;
            public SkillInfo skillInfo;
            public SuitInfo suitInfo;
@@ -70,6 +71,11 @@
            public List<Int2> baseProperties;
            public int star;
            public List<Int2> starProperties;
        }
        public struct SpiritWeaponProperty
        {
            public List<Int3> properties;
        }
        public struct LegendProperty
@@ -411,7 +417,8 @@
                guid = guid,
                baseInfo = GetBaseInfo(guid),
                baseProperty = GetBaseProperty(guid),
                baseProperty = GetBaseProperty(guid),
                spiritWeaponProperty = GetSpiritWeaponProperty(item.itemId),
                legendProperty = GetLegendProperty(guid),
                skillInfo = GetSkillInfo(item.itemId),
                suitInfo = GetSuitInfo(guid),
@@ -432,7 +439,8 @@
                baseInfo = GetBaseInfo(itemId),
                baseProperty = GetBaseProperty(itemId),
                legendProperty = GetLegendProperty(itemId),
                legendProperty = GetLegendProperty(itemId),
                spiritWeaponProperty = GetSpiritWeaponProperty(itemId),
                skillInfo = GetSkillInfo(itemId),
                suitInfo = GetSuitInfo(itemId),
                gemInfo = GetGemInfo(itemId),
@@ -624,7 +632,8 @@
                goodId = goodId,
                baseInfo = GetBaseInfo(itemId),
                baseProperty = GetBaseProperty(itemId),
                baseProperty = GetBaseProperty(itemId),
                spiritWeaponProperty = GetSpiritWeaponProperty(itemId),
                legendProperty = GetLegendProperty(itemId),
                skillInfo = GetSkillInfo(itemId),
                suitInfo = GetSuitInfo(itemId),
@@ -648,7 +657,8 @@
                guid = guid,
                baseInfo = GetBaseInfo(guid),
                baseProperty = GetBaseProperty(item.itemId),
                baseProperty = GetBaseProperty(item.itemId),
                spiritWeaponProperty = GetSpiritWeaponProperty(item.itemId),
                legendProperty = GetLegendProperty(item.itemId),
                skillInfo = GetSkillInfo(item.itemId),
                suitInfo = GetSuitInfo(item.itemId),
@@ -671,6 +681,7 @@
                baseInfo = GetBaseInfo(guid),
                baseProperty = GetBaseProperty(item.itemId),
                spiritWeaponProperty = GetSpiritWeaponProperty(item.itemId),
                legendProperty = GetLegendProperty(guid),
                petMountBaseProperty = GetPetMountBaseProperty(item.itemId),
                operates = operatable ? GetOperates(guid) : null,
@@ -684,7 +695,8 @@
            {
                itemId = itemId,
                baseInfo = GetBaseInfo(itemId),
                baseProperty = GetBaseProperty(itemId),
                baseProperty = GetBaseProperty(itemId),
                spiritWeaponProperty = GetSpiritWeaponProperty(itemId),
                legendProperty = GetLegendProperty(itemId),
                petMountBaseProperty = GetPetMountBaseProperty(itemId),
                getWay = GetGetWay(itemId),
@@ -1027,21 +1039,6 @@
            var config = ItemConfig.Get(itemId);
            switch (config.Type)
            {
                case 113:
                    data.trueCount = LegendPropertyUtility.GetWingPropertyCount(config.LV);
                    var ids = LegendPropertyUtility.GetWingProperties(config.LV);
                    var values = LegendPropertyUtility.GetWingProperties(config.LV);
                    data.properties = new List<Int2>();
                    if (!ids.IsNullOrEmpty() && !values.IsNullOrEmpty())
                    {
                        var min = Mathf.Min(ids.Count, values.Count);
                        for (int i = 0; i < min; i++)
                        {
                            data.properties.Add(new Int2(ids[i], values[i]));
                        }
                    }
                    break;
                case 119:
                case 120:
                case 121:
@@ -1065,6 +1062,25 @@
            return data;
        }
        private static SpiritWeaponProperty GetSpiritWeaponProperty(int itemId)
        {
            var config = SpiritWeaponPropertyConfig.Get(itemId);
            if (config == null)
            {
                return default(SpiritWeaponProperty);
            }
            var properties = new List<Int3>();
            for (var i = 0; i < config.AttrIDList.Length; i++)
            {
                properties.Add(new Int3(config.AttrIDList[i], config.AttrValueList[i], config.AttrColorList[i]));
            }
            var spiritWeaponProperty = new SpiritWeaponProperty();
            spiritWeaponProperty.properties = properties;
            return spiritWeaponProperty;
        }
        private static LegendProperty GetLegendProperty(string guid)
        {
            var item = packModel.GetItemByGuid(guid);
System/ItemTip/SpiritWeaponTipWin.cs
@@ -16,6 +16,7 @@
    {
        [SerializeField] TipItemBaseInfoWidget m_BaseInfoWidget;
        [SerializeField] TipBasePropertyWidget m_BasePropertyWidget;
        [SerializeField] TipSpiritWeaponPropertyWidget m_SpiritWeaponPropertyWidget;
        [SerializeField] TipItemDescriptionWidget m_DescriptionWidget;
        [SerializeField] TipBuyItemWidget m_BuyItemWidget;
        [SerializeField] TipGetWayEntranceWidget m_GetWayEntranceWidget;
@@ -57,6 +58,7 @@
            DisplayBaseInfo();
            DisplayBaseProperty();
            DisplaySpiritWeaponProperty();
            DisplayItemDescription();
            DisplayBuyItem();
            DisplayJobAndPlace();
@@ -78,6 +80,12 @@
            m_BasePropertyWidget.Display(baseProperty);
        }
        private void DisplaySpiritWeaponProperty()
        {
            var property = ItemTipUtility.mainTipData.spiritWeaponProperty;
            m_SpiritWeaponPropertyWidget.Display(property);
        }
        private void DisplayItemDescription()
        {
            var itemId = ItemTipUtility.mainTipData.baseInfo.itemId;
System/ItemTip/TipSpiritWeaponPropertyWidget.cs
New file
@@ -0,0 +1,31 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class TipSpiritWeaponPropertyWidget : MonoBehaviour
    {
        [SerializeField] Text m_PropertyBehaviour;
        public void Display(ItemTipUtility.SpiritWeaponProperty data)
        {
            var count = data.properties.Count;
            var lines = new string[count];
            var lineIndex = 0;
            foreach (var property in data.properties)
            {
                var config = PlayerPropertyConfig.Get(property.x);
                var name = config.Name;
                var valueDescription = PlayerPropertyConfig.GetValueDescription(property.x, property.y);
                lines[lineIndex++] = UIHelper.AppendColor(property.z, string.Format("{0}: {1}", name, valueDescription));
            }
            m_PropertyBehaviour.text = string.Join("\r\n", lines);
        }
    }
}
System/ItemTip/TipSpiritWeaponPropertyWidget.cs.meta
File was renamed from Lua/Gen/AppointItemConfigWrap.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 1f054f6c19ed4fc4daa96e584d28eb73
timeCreated: 1557818430
guid: e8a2a13359501454a909545b991ddcb3
timeCreated: 1560392049
licenseType: Pro
MonoImporter:
  serializedVersion: 2
System/ItemTip/WingTipWin.cs
@@ -14,12 +14,11 @@
    public class WingTipWin : Window
    {
        [SerializeField] TipItemBaseInfoWidget m_BaseInfoWidget;
        [SerializeField] ScrollRect m_SrollRect;
        [SerializeField] TipBasePropertyWidget m_BasePropertyWidget;
        [SerializeField] TipLegendPropertyWidget m_LegendPropertyWidget;
        [SerializeField] TipSpiritWeaponPropertyWidget m_SpiritWeaponPropertyWidget;
        [SerializeField] TipWingRefineMaterialsWidget m_RefineMaterialsWidget;
        [SerializeField] TipItemDescriptionWidget m_DescriptionWidget;
        [SerializeField] TipBuyItemWidget m_BuyItemWidget;
@@ -63,7 +62,7 @@
            m_SrollRect.verticalNormalizedPosition = 1f;
            DisplayBaseInfo();
            DisplayBaseProperty();
            DisplayLegendProperty();
            DisplaySpiritWeaponProperty();
            DisplayRefineMaterials();
            DisplayItemDescription();
            DisplayBuyItem();
@@ -86,14 +85,10 @@
            m_BasePropertyWidget.Display(baseProperty);
        }
        private void DisplayLegendProperty()
        private void DisplaySpiritWeaponProperty()
        {
            var legendProperty = ItemTipUtility.mainTipData.legendProperty;
            m_LegendPropertyWidget.gameObject.SetActive(!legendProperty.properties.IsNullOrEmpty());
            if (!legendProperty.properties.IsNullOrEmpty())
            {
                m_LegendPropertyWidget.Display(legendProperty);
            }
            var property = ItemTipUtility.mainTipData.spiritWeaponProperty;
            m_SpiritWeaponPropertyWidget.Display(property);
        }
        private void DisplayRefineMaterials()
System/KnapSack/Logic/ItemLogicUtility.cs
@@ -194,7 +194,6 @@
                var config = AppointItemConfig.Get(itemId);
                AddRange(config.LegendAttrID, config.LegendAttrValue);
                AddRange(config.OutOfPrintAttr, config.OutOfPrintAttrValue);
            }
            public bool ContainsKey(int id)
@@ -240,9 +239,6 @@
                    case RoleEquipType.Jade:
                        properties.AddRange(GetEquipLegendProperties(itemId));
                        break;
                    case RoleEquipType.Wing:
                        properties.AddRange(GetWingsLegendProperties(itemId));
                        break;
                }
                return CalculateEquipScore(type, itemId, properties);
@@ -273,25 +269,6 @@
                foreach (var item in legendProperties)
                {
                    properties[item.x] = item.y;
                }
            }
            return properties;
        }
        private Dictionary<int, int> GetWingsLegendProperties(int itemId)
        {
            var config = ItemConfig.Get(itemId);
            var properties = new Dictionary<int, int>();
            var level = config.LV;
            var count = LegendPropertyUtility.GetWingPropertyCount(level);
            var ids = LegendPropertyUtility.GetWingProperties(level);
            if (ids != null)
            {
                for (var i = 0; properties.Count < count && i < properties.Count; i++)
                {
                    var propertyId = ids[i];
                    properties[propertyId] = LegendPropertyUtility.GetWingPropertyValues(level, propertyId)[0];
                }
            }
@@ -384,13 +361,19 @@
                skillScore += equipSkillScores[config.AddSkill2];
            }
            var spiritWeaponScore = 0;
            if (SpiritWeaponPropertyConfig.Has(itemId))
            {
                spiritWeaponScore = SpiritWeaponPropertyConfig.Get(itemId).AttrScore;
            }
            switch (type)
            {
                case PackType.DogzEquip:
                case PackType.DogzItem:
                    return Equation.Instance.Eval<int>(dogzGSFormula);
                default:
                    return skillScore + Equation.Instance.Eval<int>(normalGSFormula);
                    return spiritWeaponScore + skillScore + Equation.Instance.Eval<int>(normalGSFormula);
            }
        }
@@ -859,21 +842,22 @@
            Dictionary<int, ItemModel> pairs = singlePack.GetAllItems();
            foreach (var model in pairs.Values)
            {
                var equipServerIndex = EquipSet.ClientPlaceToServerPlace(new Int2(model.config.LV, model.config.EquipPlace));
                if (model.config.EquipPlace > 0
                    && model.config.EquipPlace != (int)RoleEquipType.Guard
                    && model.config.RealmLimit <= realmLv
                    && !IsOverdue(model.guid)
                    && IsFightUp(model.itemId, model.score) == 1)
                {
                    if (!RealmBetterDict.ContainsKey(model.equipPlace))
                    if (!RealmBetterDict.ContainsKey(equipServerIndex))
                    {
                        RealmBetterDict.Add(model.equipPlace, model);
                        RealmBetterDict.Add(equipServerIndex, model);
                    }
                    else
                    {
                        if (model.score > RealmBetterDict[model.equipPlace].score)
                        if (model.score > RealmBetterDict[equipServerIndex].score)
                        {
                            RealmBetterDict[model.equipPlace] = model;
                            RealmBetterDict[equipServerIndex] = model;
                        }
                    }
                }
System/KnapSack/Logic/ItemModel.cs
@@ -14,23 +14,6 @@
        public int score { get; private set; }
        public Dictionary<int, List<int>> useDataDict { get; private set; }
        public int equipPlace {
            get {
                if (ItemLogicUtility.Instance.IsRealmEquip(itemId))
                {
                    return EquipSet.ClientPlaceToServerPlace(new Int2(config.LV, config.EquipPlace));
                }
                else if (config.Type >= 113 && config.Type <= 117)
                {
                    return EquipSet.ClientPlaceToServerPlace(new Int2(0, config.EquipPlace));
                }
                else
                {
                    return 0;
                }
            }
        }
        public string guid { get { return itemInfo == null ? string.Empty : itemInfo.guid; } }
        public int itemId { get { return itemInfo == null ? 0 : itemInfo.itemId; } }
        public int count { get { return itemInfo == null ? 0 : itemInfo.count; } }
System/KnapSack/Logic/ItemOperateUtility.cs
@@ -38,19 +38,20 @@
            {
                SysNotifyMgr.Instance.ShowTip("GeRen_lhs_31379");
                return;
            }
            }
            var equipServerIndex = EquipSet.ClientPlaceToServerPlace(new Int2(item.config.LV, item.config.EquipPlace));
            var putOnLimits = item.GetUseData((int)ItemUseDataKey.cancelUseLimit);
            if (putOnLimits != null && putOnLimits[0] == 1)
            {
                PutOnEquip(item.equipPlace, item.guid);
                PutOnEquip(equipServerIndex, item.guid);
                return;
            }
            var wearable = IsWearable(itemId);
            if (wearable)
            {
                PutOnEquip(item.equipPlace, item.guid);
                PutOnEquip(equipServerIndex, item.guid);
            }
        }
@@ -420,7 +421,8 @@
            if (ItemLogicUtility.Instance.IsSpiritWeapon(useItemModel.itemId))
            {
                PutOnEquip(useItemModel.equipPlace, guid);
                var serverIndex = EquipSet.ClientPlaceToServerPlace(new Int2(useItemModel.config.LV, useItemModel.config.EquipPlace));
                PutOnEquip(serverIndex, guid);
                return;
            }
@@ -1009,7 +1011,7 @@
            {
                var isOverdue = ItemLogicUtility.Instance.IsOverdue(guid);
                var isLimit = ItemLogicUtility.Instance.IsJobCompatibleItem(item.itemId) ? true : false;
                var equipedItem = packModel.GetItemByIndex(PackType.Equip, item.equipPlace);
                var equipedItem = packModel.GetItemByIndex(PackType.Equip, item.gridIndex);
                if (!isLimit || isOverdue || (equipedItem != null && item.score < equipedItem.score))
                {
System/KnapSack/Logic/LegendPropertyUtility.cs
@@ -9,8 +9,6 @@
    static PropertyMap dogzPropertyMap;
    static PropertyCount dogzPropertyCount;
    static QualityPropertyValue dogzQualityPropertyValue;
    static WingPropertyCount wingPropertyCount;
    static WingPropertyValue wingPropertyValue;
    public static void Init()
    {
@@ -19,9 +17,6 @@
            FuncConfigConfig.Get("DogzLegendAttrRulePreview").Numerical1);
        dogzPropertyCount = new PropertyCount(FuncConfigConfig.Get("DogzLegendAttrCountPreview").Numerical1);
        dogzQualityPropertyValue = new QualityPropertyValue(FuncConfigConfig.Get("DogzLegendAttrValueByColorPreview").Numerical1);
        wingPropertyCount = new WingPropertyCount();
        wingPropertyValue = new WingPropertyValue();
    }
    public static List<Int2> GetEquipProperties(int itemId)
@@ -58,11 +53,6 @@
        return legendPropertyConfig.propertyCount;
    }
    public static string GetWingPropertyColor(int propertyId, int value)
    {
        return propertyColor.GetWingPropertyColor(propertyId, value);
    }
    public static LegendAttrType GetDogzPropertyType(int propertyId)
    {
        return dogzPropertyMap.GetPropertyType(propertyId);
@@ -86,36 +76,6 @@
    public static int GetDogzQualityPropertyValue(int property, int quality)
    {
        return dogzQualityPropertyValue.GetValue(property, quality);
    }
    public static int GetWingPropertyCount(int level)
    {
        return wingPropertyCount.GetValue(level);
    }
    public static int GetWingPropertyMinValue(int level, int property)
    {
        return wingPropertyValue.GetMin(level, property);
    }
    public static int GetWingPropertyMaxValue(int level, int property)
    {
        return wingPropertyValue.GetMax(level, property);
    }
    public static bool HasWingProperties(int level)
    {
        return wingPropertyValue.Has(level);
    }
    public static List<int> GetWingProperties(int level)
    {
        return wingPropertyValue.GetProperties(level);
    }
    public static List<int> GetWingPropertyValues(int level, int property)
    {
        return wingPropertyValue.GetValues(level, property);
    }
    public class PropertyColor
@@ -408,134 +368,6 @@
        }
    }
    public class WingPropertyCount
    {
        Dictionary<int, int> counts = new Dictionary<int, int>();
        public WingPropertyCount()
        {
            var json = JsonMapper.ToObject(FuncConfigConfig.Get("WingLegendAttrCountPreview").Numerical1);
            for (int i = 0; i < json.Count; i++)
            {
                counts[(int)json[i][0]] = (int)json[i][1];
            }
        }
        public bool Has(int level)
        {
            return counts.ContainsKey(level);
        }
        public int GetValue(int level)
        {
            if (Has(level))
            {
                return counts[level];
            }
            else
            {
                return 0;
            }
        }
    }
    public class WingPropertyValue
    {
        Dictionary<int, Dictionary<int, List<int>>> levelPropertyValues = new Dictionary<int, Dictionary<int, List<int>>>();
        public WingPropertyValue()
        {
            var json = JsonMapper.ToObject(FuncConfigConfig.Get("WingLegendAttrValuePreview").Numerical1);
            foreach (var key in json.Keys)
            {
                var levelValues = new Dictionary<int, List<int>>();
                levelPropertyValues.Add(int.Parse(key), levelValues);
                var subJson = json[key];
                foreach (var propertyId in subJson.Keys)
                {
                    var count = subJson[propertyId].Count;
                    var values = new List<int>();
                    levelValues[int.Parse(propertyId)] = values;
                    if (subJson[propertyId].IsArray)
                    {
                        for (var i = 0; i < subJson[propertyId].Count; i++)
                        {
                            values.Add((int)subJson[propertyId][i]);
                        }
                    }
                }
            }
        }
        public bool Has(int level)
        {
            return levelPropertyValues.ContainsKey(level);
        }
        public bool Has(int level, int propertyId)
        {
            if (!levelPropertyValues.ContainsKey(level))
            {
                return false;
            }
            return levelPropertyValues[level].ContainsKey(propertyId);
        }
        public int GetMin(int level, int propertyId)
        {
            if (Has(level, propertyId))
            {
                return levelPropertyValues[level][propertyId][0];
            }
            else
            {
                return 0;
            }
        }
        public int GetMax(int level, int propertyId)
        {
            if (Has(level, propertyId))
            {
                var count = levelPropertyValues[level][propertyId].Count;
                return levelPropertyValues[level][propertyId][count - 1];
            }
            else
            {
                return 0;
            }
        }
        public List<int> GetProperties(int level)
        {
            if (Has(level))
            {
                return new List<int>(levelPropertyValues[level].Keys);
            }
            else
            {
                return null;
            }
        }
        public List<int> GetValues(int level, int propertyId)
        {
            if (Has(level, propertyId))
            {
                return levelPropertyValues[level][propertyId];
            }
            else
            {
                return null;
            }
        }
    }
}
System/MainInterfacePanel/LowSettingTip.cs
@@ -98,7 +98,16 @@
            }
            else
            {
                WindowCenter.Instance.Open<SkillWin>();
                var funcInfos = WindowConfig.GetWindowFunctionInfos("SkillWin");
                for (int i = 0; i < funcInfos.Count; i++)
                {
                    if (funcInfos[i].functionId == 0
                        || FuncOpen.Instance.IsFuncOpen(funcInfos[i].functionId))
                    {
                        WindowCenter.Instance.Open<SkillWin>(false, funcInfos[i].order);
                        return;
                    }
                }
            }
        }
System/MainInterfacePanel/MainInterfaceWin.cs
@@ -437,10 +437,12 @@
            }
            else
            {
                if (_unflod)
                m_MainPositionTween.SwitchFunctions(new MainPositionTween.SwitchParam()
                {
                    m_MainPositionTween.SwitchFunctions(new MainPositionTween.SwitchParam() { showDefault = true, immediately = false });
                }
                    bottomState = _unflod ? MainPositionTween.RightBottomState.Function : MainPositionTween.RightBottomState.Skill,
                    showDefault = true,
                    immediately = false
                });
            }
        }
System/MainInterfacePanel/MainPositionTween.cs
@@ -135,7 +135,7 @@
        static float resetToDefaultTimer = 0;
        public static void SetRecoverToSkillTimer()
        {
            resetToDefaultTimer = 20f;
            resetToDefaultTimer = 5f;
        }
        public void SwitchFunctions(SwitchParam switchParams)
@@ -151,14 +151,9 @@
        {
            var mapId = PlayerDatas.Instance.baseData.MapID;
            var isDungeon = MapUtility.IsDungeon(mapId);
            var isNeutralMap = false;
            var isNeutralMap = GeneralDefine.neutralBossMaps.Contains(mapId);
            var isBossArea = PlayerDatas.Instance.hero != null && MapArea.IsInMapArea(PlayerDatas.Instance.hero.CurMapArea, MapArea.E_Type.Boss);
            var isGuiding = NewBieCenter.Instance.inGuiding;
            if (GeneralDefine.neutralBossMaps.Contains(mapId))
            {
                isNeutralMap = true;
            }
            m_ContainerBossList.gameObject.SetActive(isNeutralMap);
@@ -201,10 +196,19 @@
                    break;
            }
            var rightBottomState = resetToDefaultTimer <= 0f
                && switchParams.showDefault
                && !isGuiding
                && !treasureModel.newGotShowing ? RightBottomState.Skill : RightBottomState.Function;
            var rightBottomState = RightBottomState.Skill;
            switch (switchParams.bottomState)
            {
                case RightBottomState.None:
                    rightBottomState = resetToDefaultTimer <= 0f
                    && switchParams.showDefault
                    && !isGuiding
                    && !treasureModel.newGotShowing ? RightBottomState.Skill : RightBottomState.Function;
                    break;
                default:
                    rightBottomState = switchParams.bottomState;
                    break;
            }
            switch (rightBottomState)
            {
@@ -235,7 +239,7 @@
            }
            isDefaultState = rightBottomState == RightBottomState.Skill;
            resetToDefaultTimer = !isDefaultState ? 20f : 0f;
            resetToDefaultTimer = !isDefaultState ? 5f : 0f;
            m_RayMask.gameObject.SetActive(!isDefaultState);
            if (switchParams.immediately)
@@ -281,6 +285,7 @@
        public enum RightBottomState
        {
            None,
            Function,
            Skill,
        }
@@ -297,6 +302,7 @@
            public bool showDefault;
            public bool immediately;
            public bool manual;
            public RightBottomState bottomState;
        }
    }
System/MainInterfacePanel/TaskFeedbackModel.cs
@@ -252,6 +252,31 @@
                            }
                        }
                        break;
                    case TaskFeedbackType.OnekeyHangUp:
                        {
                            if (PlayerDatas.Instance.extersion.bossState == 1)
                            {
                                SysNotifyMgr.Instance.ShowTip("Task_Transfer1");
                                return;
                            }
                            var mapModel = ModelCenter.Instance.GetModel<MapModel>();
                            var point = mapModel.GetRecommendHangPoint();
                            var mapEventConfig = MapEventPointConfig.Get(point);
                            var flyBootOwn = ModelCenter.Instance.GetModel<PackModel>().GetItemCountByID(PackType.Item, GeneralDefine.flyBootItemId);
                            var isVipFreeTransfer = ModelCenter.Instance.GetModel<VipModel>().GetVipPrivilegeCnt(VipPrivilegeType.FreeTransfer) > 0;
                            if (isVipFreeTransfer || flyBootOwn > 0)
                            {
                                var mapId = MapUtility.GetMapId(mapEventConfig.DataMapID, mapEventConfig.LineId);
                                MapTransferUtility.Instance.MissionFlyTo(mapId, mapEventConfig.NPCID);
                            }
                            else
                            {
                                MapTransferUtility.Instance.MoveToNPC(mapEventConfig.NPCID);
                            }
                        }
                        break;
                }
            }
        }
@@ -559,6 +584,7 @@
        DemonTreasure = 10,
        AlchemyItem = 11,
        HasFairy = 12,
        OnekeyHangUp = 13,
    }
}
System/MainWin/HighSettingFadeInFadeOut.cs
@@ -38,7 +38,7 @@
        public static void SetAutoCloseTimer()
        {
            closeTimer = 20f;
            closeTimer = 5f;
        }
        void Start()
System/Skill/TreasureSkillModel.cs
@@ -34,8 +34,6 @@
        public bool serverInited { get; private set; }
        public int skillLevelUpLimitLevel { get; private set; }
        public bool requireRemind { get; private set; }
        public bool newSatisfyActiveExpertDirty { get; set; }
@@ -154,7 +152,7 @@
        private void OnFuncStateChangeEvent(int id)
        {
            if (id == 82)
            if (id == 82 || id == 177)
            {
                UpdateRedpoint();
            }
@@ -221,9 +219,6 @@
                    }
                }
            }
            var funcConfig = FuncConfigConfig.Get("TreasureSkillLevelUp");
            skillLevelUpLimitLevel = int.Parse(funcConfig.Numerical1);
        }
        public bool TryGetSkills(out List<int> skills)
@@ -532,7 +527,7 @@
            foreach (var skill in treasureSkills.Values)
            {
                var error = 0;
                if (requireRemind && funcOpen && PlayerDatas.Instance.baseData.LV >= skillLevelUpLimitLevel
                if (requireRemind && funcOpen && FuncOpen.Instance.IsFuncOpen(177)
                    && TryLevelUpTreasureSkill(skill.skillId, out error)
                    && skill.level > 0)
                {
System/Skill/TreasureSkillWin.cs
@@ -78,8 +78,8 @@
            model.skillLevelUpRefresh += SkillLevelUpRefresh;
            packModel.refreshItemCountEvent += RefreshItemCountEvent;
            model.expertSkillRefresh += ExpertSkillRefresh;
            PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent;
            WindowCenter.Instance.windowAfterCloseEvent += WindowAfterCloseEvent;
            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
        }
        protected override void OnAfterOpen()
@@ -93,8 +93,8 @@
            model.skillLevelUpRefresh -= SkillLevelUpRefresh;
            packModel.refreshItemCountEvent -= RefreshItemCountEvent;
            model.expertSkillRefresh -= ExpertSkillRefresh;
            PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent;
            WindowCenter.Instance.windowAfterCloseEvent -= WindowAfterCloseEvent;
            FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
            model.SetAlreadyRemind();
        }
@@ -163,7 +163,7 @@
        void DisplayButtonState()
        {
            m_LevelUp.SetColorful(m_LevelUpLabel, PlayerDatas.Instance.baseData.LV >= model.skillLevelUpLimitLevel);
            m_LevelUp.SetColorful(m_LevelUpLabel, FuncOpen.Instance.IsFuncOpen(177));
        }
        void DisplaySkillDetial()
@@ -227,9 +227,9 @@
        private void LevelUp()
        {
            if (PlayerDatas.Instance.baseData.LV < model.skillLevelUpLimitLevel)
            if (!FuncOpen.Instance.IsFuncOpen(177))
            {
                SysNotifyMgr.Instance.ShowTip("FuncLimit_JNSJ", model.skillLevelUpLimitLevel);
                FuncOpen.Instance.ProcessorFuncErrorTip(177);
                return;
            }
            TreasureSkillLevelUpWin.skillId = model.selectSkill;
@@ -293,9 +293,9 @@
            }
        }
        private void PlayerDataRefreshEvent(PlayerDataType dataType)
        private void OnFuncStateChangeEvent(int id)
        {
            if (dataType == PlayerDataType.LV)
            if (id == 177)
            {
                DisplayButtonState();
            }
System/Tip/ExperienceFloat.cs
@@ -51,6 +51,9 @@
                    case 4:
                        m_ExperienceRate.text = StringUtility.Contact("(", experienceRateBuf / 100 + 100, "%)?");
                        break;
                    case 6:
                        m_ExperienceRate.text = "!";
                        break;
                    default:
                        m_ExperienceRate.text = "";
                        break;
@@ -108,7 +111,7 @@
                var instance = pool.Request();
                var experienceFloat = instance.GetComponent<ExperienceFloat>();
                experienceFloat.SetEnable(true);
                experienceFloat.pattern= _pattern;
                experienceFloat.pattern = _pattern;
                return experienceFloat;
            }
            else
System/Vip/RechargeBehaviour.cs
@@ -45,12 +45,16 @@
            }
            chargeId = _id;
            m_ChargeIcon.SetSprite(config.Icon);
            m_PriceValue.text = StringUtility.Contact("¥", model.GetPayRmb(config.RecordID));
            m_GetGoldValue.gameObject.SetActive(config.GainGold > 0);
            if(config.GainGold > 0)
            m_PriceValue.text = StringUtility.Contact(model.GetPayRmb(config.RecordID), "x");
            if (m_GetGoldValue != null)
            {
                m_GetGoldValue.text = config.GainGold.ToString();
                m_GetGoldValue.gameObject.SetActive(config.GainGold > 0);
                if (config.GainGold > 0)
                {
                    m_GetGoldValue.text = "x" + config.GainGold;
                }
            }
            VipModel.RechargeCount _rechargeCount;
            bool _firstRecharge = true;
            if (model.TryGetRechargeCount(_id, out _rechargeCount))
System/Vip/VipRechargeWin.cs
@@ -14,8 +14,6 @@
    public class VipRechargeWin : Window
    {
        [SerializeField] Button leftBtn;
        [SerializeField] Button rightBtn;
        [SerializeField] Button closeBtn;
        [SerializeField] FunctionButton vipPayTitleBtn;
        [SerializeField] FunctionButton vipTitleBtn;
@@ -43,8 +41,6 @@
        protected override void AddListeners()
        {
            leftBtn.onClick.AddListener(buttonGroup.TriggerLast);
            rightBtn.onClick.AddListener(buttonGroup.TriggerNext);
            closeBtn.onClick.AddListener(OnClose);
            vipPayTitleBtn.onClick.AddListener(OnVipPay);
            vipTitleBtn.onClick.AddListener(OnVip);
System/WindowJump/WindowJumpMgr.cs
@@ -596,6 +596,11 @@
                ModelCenter.Instance.GetModel<OSRedEnvelopeModel>().JumpType = int.Parse(_tagWinSearchModel.SelectActive) + 1;
                SetJumpLogic<OpenServerActivityWin>(_tagWinSearchModel.TABID);
                break;
            case JumpUIType.MonthInvest:
            case JumpUIType.WeekInvest:
                ModelCenter.Instance.GetModel<MonthWeekInvestModel>().jumpType = int.Parse(_tagWinSearchModel.SelectActive);
                SetJumpLogic<OpenServerActivityWin>(_tagWinSearchModel.TABID);
                break;
            case JumpUIType.BestXB:
            case JumpUIType.RuneXB:
            case JumpUIType.XBStore:
@@ -1691,6 +1696,8 @@
    AlchemyFairy = 321,
    RolePromote = 322,
    UseFairyDrug = 323,
    MonthInvest = 324,
    WeekInvest = 325,
    DhszTs = 1001,//定海神针功法提升界面
    HyqTs = 1002,//皓月枪功法提升界面
System/WorldMap/WorldMapWin.cs
@@ -215,10 +215,14 @@
            {
                var unLockEffectId = config.Effect[0];
                var effect = EffectMgr.Instance.PlayUIEffect(unLockEffectId, 3500, this.transform, false);
                while (effect.IsPlaying)
                var timer = 0f;
                while (timer < 5f)
                {
                    timer += Time.deltaTime;
                    yield return null;
                }
                EffectMgr.Instance.RecyleUIEffect(unLockEffectId, effect.gameObject);
            }
            EffectMgr.Instance.PlayUIEffect(3053, 3500, areaBehaviour.transform, false);
Utility/ConfigInitiator.cs
@@ -20,10 +20,8 @@
        HelpInfoConfig.Init(true);
    }
    public static bool IsLoginConfigInited
    {
        get
        {
    public static bool IsLoginConfigInited {
        get {
            return IconConfig.inited
                && LoginSeverListConfig.inited
                && LanguageConfig.inited
@@ -33,17 +31,16 @@
        }
    }
    public static bool IsCreateRoleConfigInited
    {
        get
        {
    public static bool IsCreateRoleConfigInited {
        get {
            return ItemConfig.inited
                  && DirtyWordConfig.inited
                  && CreateRoleConfig.inited
                  && JobSetupConfig.inited
                  && ModelResConfig.inited
                  && GodWeaponConfig.inited
                  && GodWeaponEffectConfig.inited;
                  && GodWeaponEffectConfig.inited
                  && EquipControlConfig.inited;
        }
    }
@@ -88,14 +85,15 @@
        priorTasks.Add(new ConfigInitTask("AudioConfig", () => { AudioConfig.Init(); }, () => { return AudioConfig.inited; }));
        priorTasks.Add(new ConfigInitTask("ItemConfig", () => { ItemConfig.Init(); }, () => { return ItemConfig.inited; }));
        priorTasks.Add(new ConfigInitTask("DirtyWordConfig", () => { DirtyWordConfig.Init(); }, () => { return DirtyWordConfig.inited; }));
        priorTasks.Add(new ConfigInitTask("CreateRoleConfig", () => { CreateRoleConfig.Init(); }, () => { return CreateRoleConfig.inited; }));
        priorTasks.Add(new ConfigInitTask("CreateRoleConfig", () => { CreateRoleConfig.Init(); }, () => { return CreateRoleConfig.inited; }));
        priorTasks.Add(new ConfigInitTask("EquipControlConfig", () => { EquipControlConfig.Init(); }, () => { return EquipControlConfig.inited; }));
        priorTasks.Add(new ConfigInitTask("JobSetupConfig", () => { JobSetupConfig.Init(); }, () => { return JobSetupConfig.inited; }));
        priorTasks.Add(new ConfigInitTask("ModelResConfig", () => { ModelResConfig.Init(); }, () => { return ModelResConfig.inited; }));
        priorTasks.Add(new ConfigInitTask("GodWeaponConfig", () => { GodWeaponConfig.Init(); }, () => { return GodWeaponConfig.inited; }));
        priorTasks.Add(new ConfigInitTask("GodWeaponEffectConfig", () => { GodWeaponEffectConfig.Init(); }, () => { return GodWeaponEffectConfig.inited; }));
        priorTasks.Add(new ConfigInitTask("TASKINFOConfig", () => { TASKINFOConfig.Init(); }, () => { return TASKINFOConfig.inited; }));
        priorTasks.Add(new ConfigInitTask("mapnpcConfig", () => { mapnpcConfig.Init(); }, () => { return mapnpcConfig.inited; }));
        priorTasks.Add(new ConfigInitTask("SkillConfig", () => { SkillConfig.Init(); }, () => { return SkillConfig.inited; }));
        priorTasks.Add(new ConfigInitTask("SkillConfig", () => { SkillConfig.Init(); }, () => { return SkillConfig.inited; }));
    }
    private static void NormalTasks()
@@ -277,7 +275,6 @@
        normalTasks.Add(new ConfigInitTask("AuctionItemConfig", () => { AuctionItemConfig.Init(); }, () => { return AuctionItemConfig.inited; }));
        normalTasks.Add(new ConfigInitTask("AuctionIndexConfig", () => { AuctionIndexConfig.Init(); }, () => { return AuctionIndexConfig.inited; }));
        normalTasks.Add(new ConfigInitTask("EquipPlaceMapConfig", () => { EquipPlaceMapConfig.Init(); }, () => { return EquipPlaceMapConfig.inited; }));
        normalTasks.Add(new ConfigInitTask("EquipControlConfig", () => { EquipControlConfig.Init(); }, () => { return EquipControlConfig.inited; }));
        normalTasks.Add(new ConfigInitTask("EquipSuitConfig", () => { EquipSuitConfig.Init(); }, () => { return EquipSuitConfig.inited; }));
        normalTasks.Add(new ConfigInitTask("EquipStarConfig", () => { EquipStarConfig.Init(); }, () => { return EquipStarConfig.inited; }));
        normalTasks.Add(new ConfigInitTask("WashLevelMaxConfig", () => { WashLevelMaxConfig.Init(); }, () => { return WashLevelMaxConfig.inited; }));
@@ -294,7 +291,8 @@
        normalTasks.Add(new ConfigInitTask("TreasureChapterConfig", () => { TreasureChapterConfig.Init(); }, () => { return TreasureChapterConfig.inited; }));
        normalTasks.Add(new ConfigInitTask("TaskFeedbackConfig", () => { TaskFeedbackConfig.Init(); }, () => { return TaskFeedbackConfig.inited; }));
        normalTasks.Add(new ConfigInitTask("TaskFeedbackFuncConfig", () => { TaskFeedbackFuncConfig.Init(); }, () => { return TaskFeedbackFuncConfig.inited; }));
        normalTasks.Add(new ConfigInitTask("VipPrivilegeInfoConfig", () => { VipPrivilegeInfoConfig.Init(); }, () => { return VipPrivilegeInfoConfig.inited; }));
        normalTasks.Add(new ConfigInitTask("VipPrivilegeInfoConfig", () => { VipPrivilegeInfoConfig.Init(); }, () => { return VipPrivilegeInfoConfig.inited; }));
        normalTasks.Add(new ConfigInitTask("SpiritWeaponPropertyConfig", () => { SpiritWeaponPropertyConfig.Init(); }, () => { return SpiritWeaponPropertyConfig.inited; }));
    }
    static List<ConfigInitTask> doingTasks = new List<ConfigInitTask>();