From 4bcda00aa3cb3678f5b42ab86d8624f32a1ec24c Mon Sep 17 00:00:00 2001
From: client_Zxw <826696702@qq.com>
Date: 星期四, 24 一月 2019 11:22:11 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into SpringFestival

---
 Core/GameEngine/Model/ConfigManager.cs                                                             |    4 
 UI/Common/SortTable.cs                                                                             |   25 
 Core/NetworkPackage/DTCFile/ServerPack/HA8_Item/DTCA815_tagMCZhuXianDecomposeResult.cs             |   21 
 System/JadeDynastyKnapSack/JadeDynastyEquipGetPathsWin.cs                                          |  154 ++
 System/JadeDynastyTower/JadyDynastyTowerVictoryWin.cs                                              |    2 
 Fight/Actor/HeroBehaviour.cs                                                                       |    3 
 System/JadeDynastySkill/JadeDynastySkillWin.cs                                                     |    3 
 System/OpenServerActivity/OpenServiceAchievementModel.cs                                           |    8 
 Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0614_tagUseSkillPos.cs                   |    9 
 System/JadeDynastyTower/JadeDynastyTowerRewardBehaviour.cs                                         |    2 
 Lua/Gen/link.xml                                                                                   |    1 
 System/JadeDynastyKnapSack/JadeDynastyItemBeh.cs                                                   |   36 
 System/KnapSack/Logic/PackModelInterface.cs                                                        |   78 
 Core/GameEngine/Model/Config/SkillFrameAnimationConfig.cs                                          |   12 
 Core/GameEngine/DataToCtl/PackageRegedit.cs                                                        |    1 
 Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA332_tagCMZhuXianEquipDecompose.cs.meta |   12 
 Fight/Actor/AI/HeroAI_KillUntilDie.cs                                                              |    6 
 System/JadeDynastyKnapSack/JadeDynastyEquipGetPathsWin.cs.meta                                     |   12 
 System/KnapSack/BetterItemGetBehaviour.cs                                                          |   62 
 Lua/Gen/SnxxzUIJadeDynastyBossModelWrap.cs                                                         |   31 
 Lua/Gen/SnxxzUIJadeDynastySkillModelWrap.cs.meta                                                   |   12 
 System/JadeDynastyKnapSack/JadeDynastySuitAttrBeh.cs                                               |   42 
 Core/NetworkPackage/DTCFile/ServerPack/HA8_Item/DTCA815_tagMCZhuXianDecomposeResult.cs.meta        |   12 
 System/Rank/RankHeadCell.cs                                                                        |    1 
 Lua/Gen/DelegatesGensBridge.cs                                                                     |  842 +++++++---
 Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0403_tagPlayerLoginLoadOK.cs                   |    2 
 System/Realm/RealmPropertyUpWin.cs                                                                 |    2 
 System/JadeDynastyKnapSack/JadeDynastyEquipWin.cs                                                  |   87 +
 Lua/Gen/XLuaGenAutoRegister.cs                                                                     |   21 
 Lua/Gen/DebugUtilityWrap.cs.meta                                                                   |    2 
 System/JadeDynastyTower/JadeDynastyTowerModel.cs                                                   |   71 
 Lua/Gen/SnxxzUIJadeDynastySkillModelWrap.cs                                                        |  483 ++++++
 System/KnapSack/Logic/EquipTip.cs                                                                  |   32 
 System/Login/ServerListCenter.cs                                                                   |   68 
 Core/NetworkPackage/ServerPack/HA8_Item/HA815_tagMCZhuXianDecomposeResult.cs                       |   31 
 Fight/Actor/UserInputHandler.cs                                                                    |   15 
 Utility/EnumHelper.cs                                                                              |    1 
 System/FairyAu/FairyMemberCell.cs                                                                  |   44 
 Core/GameEngine/Login/Launch.cs                                                                    | 1071 ++++++++++---
 System/JadeDynastyKnapSack/JadeDynastyDecomposeGetItemWin.cs.meta                                  |   12 
 System/Login/ServerListParser.cs.meta                                                              |   12 
 Lua/Gen/ServerListCenterWrap.cs                                                                    |   60 
 Utility/StageLoadTimeOutCatcher.cs                                                                 |   31 
 Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA332_tagCMZhuXianEquipDecompose.cs      |   24 
 Lua/Gen/SnxxzUIRankModelWrap.cs                                                                    |   90 +
 System/Launch/LaunchWin.cs                                                                         |  127 +
 UI/Common/FrameEffect.cs                                                                           |    2 
 Fight/Stage/StageManager.cs                                                                        |   47 
 System/JadeDynastyTower/JadeDynastyTowerWin.cs                                                     |    3 
 Fight/GameActor/GActorPlayerBase.cs                                                                |    5 
 System/JadeDynastyTower/JadeDynastyTowerRankBehaviour.cs                                           |    2 
 System/Login/ServerListParser.cs                                                                   |   66 
 System/JadeDynastyBoss/JadeDynastyBossVictoryWin.cs                                                |   16 
 System/KnapSack/Logic/ItemTipsModel.cs                                                             |  118 +
 System/JadeDynastyKnapSack/JadeDynastyDecomposeWin.cs                                              |   16 
 System/JadeDynastyKnapSack/JadeDynastyEquipBeh.cs                                                  |   22 
 Core/GameEngine/Model/Config/SkillFrameAnimationConfig.cs.meta                                     |    2 
 Fight/Stage/Dungeon/DungeonStage.cs                                                                |  107 
 System/JadeDynastyTower/TowerWin.cs                                                                |    3 
 Fight/GameActor/GActor.cs                                                                          |    9 
 /dev/null                                                                                          |    9 
 System/KnapSack/Logic/PackSendQuestMgr.cs                                                          |   39 
 System/JadeDynastyKnapSack/JadeDynastyDecomposeGetItemWin.cs                                       |   84 +
 System/WindowJump/WindowJumpMgr.cs                                                                 |    4 
 System/JadeDynastyKnapSack/JadeDynastyEquipModel.cs                                                |   72 
 Core/NetworkPackage/ServerPack/HA8_Item/HA815_tagMCZhuXianDecomposeResult.cs.meta                  |   12 
 System/JadeDynastyKnapSack/JadeDynastyDecomposeModel.cs                                            |   73 
 System/JadeDynastyBoss/JadeDynastyBossModel.cs                                                     |   32 
 68 files changed, 3,537 insertions(+), 883 deletions(-)

diff --git a/Core/GameEngine/DataToCtl/PackageRegedit.cs b/Core/GameEngine/DataToCtl/PackageRegedit.cs
index c3c3d29..b87f5bd 100644
--- a/Core/GameEngine/DataToCtl/PackageRegedit.cs
+++ b/Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -210,6 +210,7 @@
         Register(typeof(HC102_tagMCCrossRealmPKAwardState), typeof(DTCC102_tagMCCrossRealmPKAwardState));
         Register(typeof(HC005_tagGCCrossRealmPKBillboardInfo), typeof(DTCC005_tagGCCrossRealmPKBillboardInfo));
         Register(typeof(HC006_tagGCCrossRealmPKSeasonState), typeof(DTCC006_tagGCCrossRealmPKSeasonState));
+        Register(typeof(HA815_tagMCZhuXianDecomposeResult), typeof(DTCA815_tagMCZhuXianDecomposeResult));
 
         #region 鑳屽寘
         Register(typeof(H0724_tagRolePackCanUseCount), typeof(DTC0724_tagRolePackCanUseCount));
diff --git a/Core/GameEngine/Login/Launch.cs b/Core/GameEngine/Login/Launch.cs
index ac50e21..5d443ff 100644
--- a/Core/GameEngine/Login/Launch.cs
+++ b/Core/GameEngine/Login/Launch.cs
@@ -10,32 +10,15 @@
 public class Launch : MonoBehaviour
 {
     static LaunchStage m_CurrentStage = LaunchStage.None;
-    static public LaunchStage currentStage { get { return m_CurrentStage; } }
 
-    static float m_Progress = 0f;
-    static public float progress {
-        get { return m_Progress; }
-        set {
-            if (m_Progress != value)
-            {
-                m_Progress = value;
-
-                if (progressEvent != null)
-                {
-                    progressEvent(m_CurrentStage, m_Progress);
-                }
-            }
-        }
-    }
-
-    public static event Action<LaunchStage, float> progressEvent;
+    public static ProgressInfo progressInfo { get; private set; }
 
     private void Awake()
     {
         ResourcesPath.Instance.Init();
         SnxxzGame.Instance.gameObject.name = "__SnxxzGame__";
 
-        Application.backgroundLoadingPriority = ThreadPriority.BelowNormal;
+
         Screen.sleepTimeout = SleepTimeout.NeverSleep;
 
         SDKUtility.Instance.Init();
@@ -139,157 +122,256 @@
         GlobalTimeEvent.Instance.Begin();
     }
 
-    private byte m_Step = 0;
+    float timer = 0f;
+    float progressRateOfIncrease = 1f;
+    float originalExpectTotalTime = -1f;
+    float expectTotalTime = 0f;
+    public float totalTime {
+        get {
+            return Mathf.Lerp(originalExpectTotalTime, expectTotalTime, Mathf.Clamp01(timer / expectTotalTime));
+        }
+    }
+
+    Queue<LaunchTask> tasks = new Queue<LaunchTask>();
+    LaunchTask currentTask = null;
+    bool launchComplete = false;
 
     void Start()
     {
-        m_Step = 0;
+        Application.backgroundLoadingPriority = ThreadPriority.High;
         SoundPlayer.Instance.PlayLoginMusic();
         Config.Instance.PreLoadConfigs();
-
-        WindowCenter.Instance.OpenFromLocal<LaunchWin>();
+        SystemSetting.Instance.LetFPSUnLimit();
+        Config.Instance.RegisterGlobalEvent();
+        PackageRegedit.Init();
         DebugUtility.Instance.CreateDebugRoot();
 
-        StartCoroutine(Co_Lanuch());
+        WindowCenter.Instance.OpenFromLocal<LaunchWin>();
+
+        var sdkInitedTask = new SDKInitedTask();
+        var assetCopyTask = new AssetCopyTask();
+        var assetDecompressTask = new AssetDecompressTask();
+        var getVersionInfoTask = new GetVersionInfoTask();
+        var checkAssetValidTask = new CheckAssetValidTask();
+        var downLoadAssetTask = new DownLoadAssetTask();
+        var assetBundleInitTask = new AssetBundleInitTask();
+        var configInitTask = new ConfigInitTask();
+        var launchFadeOutTask = new LaunchFadeOutTask();
+
+#if !UNITY_EDITOR
+        tasks.Enqueue(sdkInitedTask);
+#endif
+
+#if UNITY_ANDROID
+#if  !UNITY_EDITOR
+        tasks.Enqueue(assetCopyTask);
+        tasks.Enqueue(assetDecompressTask);
+#endif
+        tasks.Enqueue(getVersionInfoTask);
+#endif
+
+#if UNITY_IOS
+        tasks.Enqueue(getVersionInfoTask);
+        tasks.Enqueue(assetCopyTask);
+#endif
+
+        tasks.Enqueue(checkAssetValidTask);
+        tasks.Enqueue(downLoadAssetTask);
+        tasks.Enqueue(assetBundleInitTask);
+        tasks.Enqueue(configInitTask);
+        tasks.Enqueue(launchFadeOutTask);
+
+        CalculateExpectTotalTime();
+        originalExpectTotalTime = expectTotalTime;
     }
 
     void Update()
     {
-        if (m_Step == 1)
+        if (!launchComplete)
         {
-            ServerListCenter.Instance.RequestJumpUrl();
-            m_Step = 2;
+            if (currentTask == null)
+            {
+                if (tasks.Count > 0)
+                {
+                    currentTask = tasks.Dequeue();
+                    currentTask.Begin();
+                }
+                else
+                {
+                    launchComplete = true;
+                }
+            }
+
+            if (currentTask != null)
+            {
+                currentTask.Update();
+            }
+
+            if (currentTask != null && currentTask.done)
+            {
+                currentTask.End();
+                CalculateExpectTotalTime();
+                currentTask = null;
+            }
+
+            if (m_CurrentStage == LaunchStage.DownLoad)
+            {
+                progressInfo = new ProgressInfo(m_CurrentStage, progressInfo.totalProgress, 0f);
+            }
+            else
+            {
+                timer += Time.deltaTime;
+                var progress = progressInfo.totalProgress + progressRateOfIncrease * Time.deltaTime / totalTime;
+
+                var partProgress = 0f;
+                if (currentTask == null)
+                {
+                    partProgress = 0f;
+                }
+                else
+                {
+                    var temp = currentTask.timer / Mathf.Min(1f, currentTask.duration);
+                    partProgress = temp - (int)temp;
+                }
+
+                progressInfo = new ProgressInfo(m_CurrentStage, Mathf.Clamp01(progress), partProgress);
+            }
+        }
+
+        if (launchComplete)
+        {
+            Debug.LogFormat("鍚姩鑰楁椂锛歿0}", timer);
+            progressInfo = new ProgressInfo(m_CurrentStage, 1f, 1f);
+            this.enabled = false;
+            StageManager.Instance.LoadLoginStage();
         }
     }
 
-    IEnumerator Co_Lanuch()
+    void CalculateExpectTotalTime()
     {
-        var startTime = Time.time;
-        var progressBuf = progress;
-        var timer = 0f;
-        var duration = 1f;
-
-#if !UNITY_EDITOR
-        while (!SDKUtility.Instance.InitFinished)
+        var time = timer;
+        foreach (var item in tasks)
         {
+            time += item.expectTime;
+        }
+
+        expectTotalTime = time;
+        if (originalExpectTotalTime <= 0f)
+        {
+            originalExpectTotalTime = expectTotalTime;
+        }
+
+        progressRateOfIncrease = (expectTotalTime - timer) / (originalExpectTotalTime - timer);
+    }
+
+    public enum LaunchStage
+    {
+        None = 0,
+        SDKInit = 1,
+        AssetCopy = 2,
+        ClientVersion = 3,
+        CheckAsset = 4,
+        DownLoad = 5,
+        AssetBundleInit = 6,
+        ConfigInit = 7,
+        Complete = 8,
+    }
+
+    public abstract class LaunchTask
+    {
+        public float timer { get; protected set; }
+        public float duration { get; protected set; }
+        bool exceptionReported = false;
+
+        public bool done { get; protected set; }
+        public float progress { get; protected set; }
+        public virtual float expectTime { get; protected set; }
+
+        protected float outTime = 15f;
+
+        public abstract void Begin();
+        public abstract void Update();
+        public abstract void End();
+
+        public void ExceptionReport()
+        {
+            if (!exceptionReported && timer > outTime && !done)
+            {
+                var content = string.Format("浠诲姟锛歿0};缃戠粶鐘舵�侊細{1}", this.GetType().Name, Application.internetReachability);
+                ExceptionCatcher.ReportException("娓告垙鍚姩鎵ц瓒呮椂!", content);
+                exceptionReported = true;
+            }
+        }
+
+    }
+
+    public class SDKInitedTask : LaunchTask
+    {
+        public override float expectTime {
+            get { return LocalSave.GetFloat("SDKInitedTask_ExpectTime", 1f); }
+            protected set { LocalSave.SetFloat("SDKInitedTask_ExpectTime", value); }
+        }
+
+        public override void Begin()
+        {
+            m_CurrentStage = LaunchStage.SDKInit;
+            duration = Mathf.Max(0.1f, expectTime);
+        }
+
+        public override void End()
+        {
+            expectTime = timer;
+            DebugEx.LogFormat("{0}鎵ц鏃堕暱锛歿1}锛�", this.GetType().Name, timer);
+
+            OperationLogCollect.Instance.RecordLauchEvent(1);
+            OperationLogCollect.Instance.RecordEvent(1);
+
+            var cpu = 2;
+            var memory = 2048;
+            DeviceUtility.GetCpuAndMemory(out cpu, out memory);
+            DebugEx.LogFormat("鑾峰緱鏈哄櫒淇℃伅锛歝pu {0}----鍐呭瓨 {1}", cpu, memory);
+            GameNotice.OpenGameNotice();
+        }
+
+        public override void Update()
+        {
+            if (done)
+            {
+                return;
+            }
+
             timer += Time.deltaTime;
-            progress = Mathf.Clamp(progressBuf + timer / duration * 0.1f, progressBuf, progressBuf + 0.1f);
-            yield return null;
+            if (SDKUtility.Instance.InitFinished)
+            {
+                done = true;
+            }
+            else
+            {
+                done = false;
+                progress = timer / duration;
+            }
+
+            ExceptionReport();
         }
-#endif
+    }
 
-        m_Step = 1;
-        var cpu = 2;
-        var memory = 2048;
-        DeviceUtility.GetCpuAndMemory(out cpu, out memory);
+    public class AssetCopyTask : LaunchTask
+    {
+        int completedCount = 0;
+        int totalCount = 1;
+        List<FileInfo> copyTasks = new List<FileInfo>();
 
-        DebugEx.LogFormat("鑾峰緱鏈哄櫒淇℃伅锛歝pu {0}----鍐呭瓨 {1}", cpu, memory);
+        public override float expectTime {
+            get { return LocalSave.GetFloat("AssetCopyTask_ExpectTime", 30f); }
+            protected set { LocalSave.SetFloat("AssetCopyTask_ExpectTime", value); }
+        }
 
-        OperationLogCollect.Instance.RecordLauchEvent(1);
-        OperationLogCollect.Instance.RecordEvent(1);
-        SystemSetting.Instance.LetFPSUnLimit();
-        Config.Instance.RegisterGlobalEvent();
-
-        PackageRegedit.Init();
-        GameNotice.OpenGameNotice();
-
-#if UNITY_ANDROID && !UNITY_EDITOR
-        switch (VersionConfig.Get().assetAccess)
+        public override void Begin()
         {
-            case InstalledAsset.FullAsset:
-            case InstalledAsset.HalfAsset:
-            case InstalledAsset.IngoreDownLoad:
-                progressBuf = progress;
-                timer = 0f;
-                duration = 30f;
-
-                if (!SDKUtility.Instance.AssetCopyFinished)
-                {
-                    m_CurrentStage = LaunchStage.AssetCopy;
-                    SDKUtility.Instance.CopyAsset();
-                    while (!SDKUtility.Instance.AssetCopyFinished)
-                    {
-                        timer += Time.deltaTime;
-                        progress = Mathf.Clamp(progressBuf + timer / duration * 0.7f, progressBuf, progressBuf + 0.7f);
-                        yield return null;
-                    }
-                }
-
-                if (!AssetDeCompressTask.assetDeCompressCompleted)
-                {
-                    progressBuf = progress;
-                    var decompressProgress = AssetDeCompressTask.DecompressAync(ResourcesPath.Instance.ExternalStorePath);
-                    while (!decompressProgress.done)
-                    {
-                        progress = progressBuf + decompressProgress.progress * 0.2f;
-                        yield return null;
-                    }
-
-                    AssetDeCompressTask.assetDeCompressVersion = VersionConfig.Get().version;
-
-                    progressBuf = progress;
-                    timer = 0f;
-                    while (timer < 2f)
-                    {
-                        timer += Time.deltaTime;
-                        progress = progressBuf + timer * 0.5f * 0.1f;
-                        yield return null;
-                    }
-
-                    AssetDeCompressTask.Delete7zFiles(ResourcesPath.Instance.ExternalStorePath);
-                }
-                break;
-            case InstalledAsset.NullAsset:
-                progress = 1f;
-                break;
-        }
-
-#endif
-
-        progress = 0f;
+            m_CurrentStage = LaunchStage.AssetCopy;
+            duration = Mathf.Max(0.1f, expectTime);
+            outTime = 50f;
 #if UNITY_ANDROID
-        m_CurrentStage = LaunchStage.ClientVersion;
-        if (!Application.isEditor || InGameDownTestUtility.enable)
-        {
-            VersionUtility.Instance.RequestVersionCheck();
-            progressBuf = progress;
-            timer = 0f;
-            duration = 1f;
-
-            while (!VersionUtility.Instance.completed)
-            {
-                timer += Time.deltaTime;
-                progress = Mathf.Clamp(progressBuf + timer / duration * 0.1f, progressBuf, progressBuf + 0.1f);
-                yield return null;
-            }
-        }
-#endif
-
-#if UNITY_IOS
-        if (!VersionUtility.Instance.InIosAuditTime())
-        {
-            m_CurrentStage = LaunchStage.ClientVersion;
-            if (!Application.isEditor || InGameDownTestUtility.enable)
-            {
-                VersionUtility.Instance.RequestVersionCheck();
-                progressBuf = progress;
-                timer = 0f;
-                duration = 1f;
-
-                while (!VersionUtility.Instance.completed)
-                {
-                    timer += Time.deltaTime;
-                    progress = Mathf.Clamp(progressBuf + timer / duration * 0.1f, progressBuf, progressBuf + 0.1f);
-                    yield return null;
-                }
-            }
-        }
-#endif
-
-#if UNITY_IOS && !UNITY_EDITOR
-
-        if (VersionUtility.Instance.versionInfo != null && VersionUtility.Instance.versionInfo.downAsset == 1)
-        {
             switch (VersionConfig.Get().assetAccess)
             {
                 case InstalledAsset.FullAsset:
@@ -297,168 +379,611 @@
                 case InstalledAsset.IngoreDownLoad:
                     if (!SDKUtility.Instance.AssetCopyFinished)
                     {
-                        m_CurrentStage = LaunchStage.AssetCopy;
-                        progressBuf = progress;
-
-                        var allFiles = new List<FileInfo>();
-                        FileExtersion.GetAllDirectoryFileInfos(ResourcesPath.Instance.StreamingAssetPath, allFiles);
-
-                        var count = allFiles.Count;
-                        var index = 0;
-                        while (index < count)
-                        {
-                            try
-                            {
-                                var fileInfo = allFiles[index];
-                                var destPath = fileInfo.FullName.Replace(ResourcesPath.Instance.StreamingAssetPath, ResourcesPath.Instance.ExternalStorePath);
-                                if (File.Exists(destPath))
-                                {
-                                    index++;
-                                    continue;
-                                }
-
-                                var destDirectoryName = Path.GetDirectoryName(destPath);
-                                if (!Directory.Exists(destDirectoryName))
-                                {
-                                    Directory.CreateDirectory(destDirectoryName);
-                                }
-
-                                DebugEx.LogFormat("鎷疯礉鏂囦欢锛歿0}", fileInfo.Name);
-                                File.Copy(fileInfo.FullName, destPath, true);
-                                index++;
-                            }
-                            catch (Exception ex)
-                            {
-                                DebugEx.Log(ex);
-                            }
-                            finally
-                            {
-                                progress = Mathf.Clamp(progressBuf + ((float)index / count) * 0.3f, progressBuf, progressBuf + 0.3f);
-                            }
-
-                            yield return null;
-                        }
-
-                        LocalSave.SetString("AssetCopyCompleted_IOS", VersionConfig.Get().version);
+                        SDKUtility.Instance.CopyAsset();
+                        done = false;
+                        progress = 0f;
+                    }
+                    else
+                    {
+                        done = true;
                     }
                     break;
                 case InstalledAsset.NullAsset:
-                    progress = 0.1f;
+                    done = true;
                     break;
+            }
+#endif
+
+#if UNITY_IOS
+            if (VersionUtility.Instance.versionInfo != null && VersionUtility.Instance.versionInfo.downAsset == 1)
+            {
+                switch (VersionConfig.Get().assetAccess)
+                {
+                    case InstalledAsset.FullAsset:
+                    case InstalledAsset.HalfAsset:
+                    case InstalledAsset.IngoreDownLoad:
+                        if (!SDKUtility.Instance.AssetCopyFinished)
+                        {
+                            copyTasks = new List<FileInfo>();
+                            FileExtersion.GetAllDirectoryFileInfos(ResourcesPath.Instance.StreamingAssetPath, copyTasks);
+
+                            for (var i = copyTasks.Count - 1; i >= 0; i--)
+                            {
+                                var fileInfo = copyTasks[i];
+                                var destPath = fileInfo.FullName.Replace(ResourcesPath.Instance.StreamingAssetPath, ResourcesPath.Instance.ExternalStorePath);
+                                if (File.Exists(destPath))
+                                {
+                                    copyTasks.RemoveAt(i);
+                                }
+                            }
+
+                            completedCount = 0;
+                            totalCount = copyTasks.Count;
+                        }
+
+                        if (totalCount > 0)
+                        {
+                            done = false;
+                            progress = 0f;
+                        }
+                        else
+                        {
+                            done = true;
+                        }
+                        break;
+                    case InstalledAsset.NullAsset:
+                        done = true;
+                        break;
+                }
+            }
+            else
+            {
+                done = true;
+            }
+#endif
+
+        }
+
+        public override void End()
+        {
+            expectTime = timer;
+            DebugEx.LogFormat("{0}鎵ц鏃堕暱锛歿1}锛�", this.GetType().Name, timer);
+#if UNITY_IOS
+            LocalSave.SetString("AssetCopyCompleted_IOS", VersionConfig.Get().version);
+#endif
+        }
+
+        public override void Update()
+        {
+            if (done)
+            {
+                return;
+            }
+
+            timer += Time.deltaTime;
+#if UNITY_ANDROID
+            if (!SDKUtility.Instance.AssetCopyFinished)
+            {
+                done = false;
+                progress = timer / duration;
+            }
+            else
+            {
+                done = true;
+            }
+#endif
+
+#if UNITY_IOS
+            if (totalCount > 0)
+            {
+                if (completedCount < totalCount)
+                {
+                    var fileInfo = copyTasks[0];
+                    var destPath = fileInfo.FullName.Replace(ResourcesPath.Instance.StreamingAssetPath, ResourcesPath.Instance.ExternalStorePath);
+                    var destDirectoryName = Path.GetDirectoryName(destPath);
+                    if (!Directory.Exists(destDirectoryName))
+                    {
+                        Directory.CreateDirectory(destDirectoryName);
+                    }
+
+                    DebugEx.LogFormat("鎷疯礉鏂囦欢锛歿0}", fileInfo.Name);
+                    File.Copy(fileInfo.FullName, destPath, true);
+                    copyTasks.RemoveAt(0);
+                    completedCount++;
+
+                    done = false;
+                    progress = (float)completedCount / totalCount;
+                }
+                else
+                {
+                    done = true;
+                }
+            }
+            else
+            {
+                done = true;
             }
         }
 
 #endif
+            ExceptionReport();
+        }
+    }
 
-        OperationLogCollect.Instance.RecordLauchEvent(2);
-        OperationLogCollect.Instance.RecordEvent(2);
+    public class AssetDecompressTask : LaunchTask
+    {
+        public override float expectTime {
+            get { return LocalSave.GetFloat("AssetDecompressTask_ExpectTime", 5f); }
+            protected set { LocalSave.SetFloat("AssetDecompressTask_ExpectTime", value); }
+        }
 
-        if (VersionUtility.Instance.NeedDownAsset())
+        AssetDeCompressTask.DecompressProgress deCompressProgress = null;
+        float waitTimer = 0f;
+
+        public override void Begin()
+        {
+            m_CurrentStage = LaunchStage.AssetCopy;
+            duration = Mathf.Max(0.1f, expectTime);
+
+            if (!AssetDeCompressTask.assetDeCompressCompleted)
+            {
+                deCompressProgress = AssetDeCompressTask.DecompressAync(ResourcesPath.Instance.ExternalStorePath);
+                done = false;
+            }
+            else
+            {
+                done = true;
+            }
+        }
+
+        public override void End()
+        {
+            AssetDeCompressTask.assetDeCompressVersion = VersionConfig.Get().version;
+            AssetDeCompressTask.Delete7zFiles(ResourcesPath.Instance.ExternalStorePath);
+        }
+
+        public override void Update()
+        {
+            if (done)
+            {
+                return;
+            }
+
+            timer += Time.deltaTime;
+            progress = timer / duration;
+            if (deCompressProgress == null || deCompressProgress.done)
+            {
+                waitTimer += Time.deltaTime;
+                if (waitTimer > 2f)
+                {
+                    done = true;
+                }
+            }
+        }
+
+    }
+
+    public class GetVersionInfoTask : LaunchTask
+    {
+        public override float expectTime {
+            get { return LocalSave.GetFloat("GetVersionInfoTask_ExpectTime", 1f); }
+            protected set { LocalSave.SetFloat("GetVersionInfoTask_ExpectTime", value); }
+        }
+
+        public override void Begin()
+        {
+            m_CurrentStage = LaunchStage.ClientVersion;
+            duration = expectTime;
+
+#if UNITY_ANDROID
+            if (InGameDownTestUtility.enable || !Application.isEditor)
+            {
+                VersionUtility.Instance.RequestVersionCheck();
+                done = false;
+                progress = 0f;
+            }
+            else
+            {
+                done = true;
+            }
+#endif
+
+#if UNITY_IOS
+            if (!VersionUtility.Instance.InIosAuditTime())
+            {
+                VersionUtility.Instance.RequestVersionCheck();
+                done = false;
+                progress = 0f;
+            }
+            else
+            {
+                done = true;
+            }
+#endif
+        }
+
+        public override void End()
+        {
+            expectTime = timer;
+            DebugEx.LogFormat("{0}鎵ц鏃堕暱锛歿1}锛�", this.GetType().Name, timer);
+        }
+
+        public override void Update()
+        {
+            if (done)
+            {
+                return;
+            }
+
+            timer += Time.deltaTime;
+            if (!VersionUtility.Instance.completed)
+            {
+                done = false;
+                progress = timer / expectTime;
+            }
+            else
+            {
+                done = true;
+            }
+
+            ExceptionReport();
+        }
+    }
+
+    public class CheckAssetValidTask : LaunchTask
+    {
+        public override float expectTime {
+            get { return LocalSave.GetFloat("CheckAssetValidTask_ExpectTime", 3f); }
+            protected set { LocalSave.SetFloat("CheckAssetValidTask_ExpectTime", value); }
+        }
+
+        public override void Begin()
+        {
+            m_CurrentStage = LaunchStage.CheckAsset;
+            duration = Mathf.Max(0.1f, expectTime);
+
+            ServerListCenter.Instance.RequestJumpUrl();
+            OperationLogCollect.Instance.RecordLauchEvent(2);
+            OperationLogCollect.Instance.RecordEvent(2);
+
+            if (VersionUtility.Instance.NeedDownAsset())
+            {
+                AssetVersionUtility.GetAssetVersionFile();
+                done = false;
+                progress = 0f;
+            }
+            else
+            {
+                done = true;
+            }
+        }
+
+        public override void End()
+        {
+            expectTime = timer;
+            DebugEx.LogFormat("{0}鎵ц鏃堕暱锛歿1}锛�", this.GetType().Name, timer);
+        }
+
+        public override void Update()
+        {
+            if (done)
+            {
+                return;
+            }
+
+            timer += Time.deltaTime;
+            if (!AssetVersionUtility.checkAssetCompleted)
+            {
+                done = false;
+                progress = timer / expectTime;
+            }
+            else
+            {
+                done = true;
+            }
+
+            ExceptionReport();
+        }
+    }
+
+    public class DownLoadAssetTask : LaunchTask
+    {
+        public override float expectTime {
+            get { return LocalSave.GetFloat("DownLoadAssetTask_ExpectTime", 3f); }
+            protected set { LocalSave.SetFloat("DownLoadAssetTask_ExpectTime", value); }
+        }
+
+        public override void Begin()
         {
             m_CurrentStage = LaunchStage.DownLoad;
-            progressBuf = progress;
-            timer = 0f;
-            duration = 1.5f;
 
-            AssetVersionUtility.GetAssetVersionFile();
-            while (!AssetVersionUtility.checkAssetCompleted)
+            duration = Mathf.Max(0.1f, expectTime);
+            if (VersionUtility.Instance.NeedDownAsset())
             {
-                timer += Time.deltaTime;
-                progress = Mathf.Clamp(progressBuf + timer / duration * 0.3f, progressBuf, progressBuf + 0.3f);
-                yield return null;
-            }
-
-            if (!AssetVersionUtility.priorAssetDownLoadDone)
-            {
-                AssetVersionUtility.BeginDownLoadTask(true);
-                while (!AssetVersionUtility.priorAssetDownLoadDone)
+                if (!AssetVersionUtility.priorAssetDownLoadDone)
                 {
-                    yield return null;
+                    AssetVersionUtility.BeginDownLoadTask(true);
+                    done = false;
+                    progress = 0f;
+                }
+                else
+                {
+                    done = true;
                 }
 
-                yield return WaitingForSecondConst.WaitMS200;
             }
+            else
+            {
+                done = true;
+            }
+        }
 
+        public override void End()
+        {
+            expectTime = timer;
+            DebugEx.LogFormat("{0}鎵ц鏃堕暱锛歿1}锛�", this.GetType().Name, timer);
             if (!AssetVersionUtility.unPriorAssetDownLoadDone)
             {
                 AssetVersionUtility.BeginDownLoadTask(false);
             }
         }
 
-        if (!AssetSource.allFromEditor)
+        public override void Update()
         {
-            StartCoroutine(AssetBundleUtility.Instance.Initialize());
-        }
-
-        m_CurrentStage = LaunchStage.ConfigLoad;
-        LaunchPostProcess.Instance.Begin();
-
-        progressBuf = progress;
-        while (!LaunchPostProcess.Instance.completed
-            && LaunchPostProcess.Instance.progress < (Application.platform == RuntimePlatform.WindowsEditor ? 1f : 0.8f))
-        {
-            progress = Mathf.Clamp(progressBuf + LaunchPostProcess.Instance.progress * (1 - progressBuf), progressBuf, 1f);
-            yield return null;
-        }
-
-        OperationLogCollect.Instance.RecordLauchEvent(3);
-        OperationLogCollect.Instance.RecordEvent(3);
-
-        LuaUtility.Instance.Init();
-        CSharpCallLua.Init();
-        ShaderUtility.WarmUpAll();
-        SpeechTranslate.Instance.RequestGetToken();
-
-        if (!AssetSource.allFromEditor)
-        {
-            progressBuf = progress;
-            timer = 0f;
-            duration = 3f;
-            while (!AssetBundleUtility.Instance.initialized)
+            if (done)
             {
-                timer += Time.deltaTime;
-                progress = Mathf.Clamp(progressBuf + timer / duration * 0.2f, progressBuf, 1f);
-                yield return null;
+                return;
             }
 
-            AssetBundleUtility.Instance.Sync_LoadAll("ui/prioritywindow");
-            SnxxzGame.Instance.StartCoroutine(AssetBundleUtility.Instance.InitalizeUIResources());
-        }
-
-        UI3DModelExhibition.CreateStage();
-
-        var launchWin = WindowCenter.Instance.Get<LaunchWin>();
-        if (launchWin != null)
-        {
-            launchWin.FadeOut();
-        }
-
-        WindowCenter.Instance.Open<LaunchBackGroundWin>(true);
-        var launchBackGroundWin = WindowCenter.Instance.Get<LaunchBackGroundWin>();
-        launchBackGroundWin.transform.SetAsFirstSibling();
-
-        progressBuf = progress;
-        timer = 0f;
-        duration = 1f;
-        while (timer < duration)
-        {
             timer += Time.deltaTime;
-            progress = Mathf.Clamp(progressBuf + timer / duration, progressBuf, 1f);
-            yield return null;
+            if (!AssetVersionUtility.priorAssetDownLoadDone)
+            {
+                done = false;
+                progress = 0f;
+            }
+            else
+            {
+                done = true;
+            }
+
+            ExceptionReport();
         }
 
-        StageManager.Instance.LoadLoginStage();
-        Debug.LogFormat("鍚姩鑰楁椂锛歿0}", Time.time - startTime);
     }
 
-    public enum LaunchStage
+    public class AssetBundleInitTask : LaunchTask
     {
-        None,
-        AssetCopy,
-        ClientVersion,
-        DownLoad,
-        ConfigLoad,
-        Complete,
+        public override float expectTime {
+            get { return LocalSave.GetFloat("AssetBundleInitTask_ExpectTime", 1f); }
+            protected set { LocalSave.SetFloat("AssetBundleInitTask_ExpectTime", value); }
+        }
+
+        public override void Begin()
+        {
+            m_CurrentStage = LaunchStage.AssetBundleInit;
+
+            duration = Mathf.Max(0.1f, expectTime);
+            if (!AssetSource.allFromEditor)
+            {
+                AssetBundleUtility.Instance.Sync_LoadAll("ui/prioritywindow");
+                SnxxzGame.Instance.StartCoroutine(AssetBundleUtility.Instance.Initialize());
+                SnxxzGame.Instance.StartCoroutine(AssetBundleUtility.Instance.InitalizeUIResources());
+                done = false;
+                progress = 0f;
+            }
+            else
+            {
+                done = true;
+            }
+        }
+
+        public override void End()
+        {
+            expectTime = timer;
+            DebugEx.LogFormat("{0}鎵ц鏃堕暱锛歿1}锛�", this.GetType().Name, timer);
+        }
+
+        public override void Update()
+        {
+            if (done)
+            {
+                return;
+            }
+
+            if (AssetBundleUtility.Instance.initialized && AssetBundleUtility.Instance.initializedUIAssetBundle)
+            {
+                done = true;
+            }
+            else
+            {
+                done = false;
+                progress = timer / duration;
+            }
+
+            ExceptionReport();
+        }
+    }
+
+    public class ConfigInitTask : LaunchTask
+    {
+        public override float expectTime {
+            get { return LocalSave.GetFloat("ConfigInitTask_ExpectTime", inferredTime); }
+            protected set { LocalSave.SetFloat("ConfigInitTask_ExpectTime", value); }
+        }
+
+        float threshold = 1f;
+        float inferredTime = 3f;
+
+        public override void Begin()
+        {
+            inferredTime = LocalSave.GetFloat("AssetCopyTask_ExpectTime", 30f) / 30f * 10f;
+
+            m_CurrentStage = LaunchStage.ConfigInit;
+            duration = Mathf.Max(0.1f, expectTime);
+            threshold = Application.platform == RuntimePlatform.WindowsEditor ? 1f : 0.9f;
+
+            LaunchPostProcess.Instance.Begin();
+        }
+
+        public override void End()
+        {
+            expectTime = timer;
+            DebugEx.LogFormat("{0}鎵ц鏃堕暱锛歿1}锛�", this.GetType().Name, timer);
+            OperationLogCollect.Instance.RecordLauchEvent(3);
+            OperationLogCollect.Instance.RecordEvent(3);
+        }
+
+        public override void Update()
+        {
+            if (done)
+            {
+                return;
+            }
+
+            timer += Time.deltaTime;
+            if (!LaunchPostProcess.Instance.completed && LaunchPostProcess.Instance.progress < threshold)
+            {
+                done = false;
+                progress = timer / duration;
+            }
+            else
+            {
+                done = true;
+            }
+
+            ExceptionReport();
+        }
+
+    }
+
+    public class LaunchFadeOutTask : LaunchTask
+    {
+        public override float expectTime {
+            get { return LocalSave.GetFloat("LaunchFadeOutTask_ExpectTime", 1f); }
+            protected set { LocalSave.SetFloat("LaunchFadeOutTask_ExpectTime", value); }
+        }
+
+        bool launchBackGroundLoadedOk = false;
+        bool openBackGround = false;
+
+        public override void Begin()
+        {
+            m_CurrentStage = LaunchStage.Complete;
+            duration = Mathf.Max(0.1f, expectTime);
+
+            LuaUtility.Instance.Init();
+            CSharpCallLua.Init();
+            ShaderUtility.WarmUpAll();
+            SpeechTranslate.Instance.RequestGetToken();
+            UI3DModelExhibition.CreateStage();
+
+            var launchWin = WindowCenter.Instance.Get<LaunchWin>();
+            if (launchWin != null)
+            {
+                launchWin.FadeOut();
+            }
+
+            UILoader.LoadWindowAsync("LaunchBackGroundWin",
+                (bool ok, UnityEngine.Object @object) =>
+                {
+                    if (ok)
+                    {
+                        launchBackGroundLoadedOk = true;
+                    }
+                });
+        }
+
+        public override void End()
+        {
+            expectTime = timer;
+            DebugEx.LogFormat("{0}鎵ц鏃堕暱锛歿1}锛�", this.GetType().Name, timer);
+            if (!openBackGround)
+            {
+                WindowCenter.Instance.Open<LaunchBackGroundWin>(true);
+            }
+
+            var launchBackGroundWin = WindowCenter.Instance.Get<LaunchBackGroundWin>();
+            launchBackGroundWin.transform.SetAsFirstSibling();
+        }
+
+        public override void Update()
+        {
+            if (done)
+            {
+                return;
+            }
+            timer += Time.deltaTime;
+
+            if (!openBackGround)
+            {
+                if (launchBackGroundLoadedOk)
+                {
+                    WindowCenter.Instance.Open<LaunchBackGroundWin>();
+                    openBackGround = true;
+                }
+            }
+
+            if (timer >= expectTime)
+            {
+                done = true;
+            }
+            else
+            {
+                done = false;
+                progress = Mathf.Clamp01(timer / expectTime);
+            }
+
+            ExceptionReport();
+        }
+
+    }
+
+    public class WaitTask : LaunchTask
+    {
+        public WaitTask(float seconds)
+        {
+            expectTime = Mathf.Max(0.1f, seconds);
+        }
+
+        public override void Begin()
+        {
+        }
+
+        public override void End()
+        {
+        }
+
+        public override void Update()
+        {
+            timer += Time.deltaTime;
+
+            if (timer >= expectTime)
+            {
+                done = true;
+            }
+            else
+            {
+                done = false;
+                progress = Mathf.Clamp01(timer / expectTime);
+            }
+        }
+
+    }
+
+    public struct ProgressInfo
+    {
+        public LaunchStage stage;
+        public float totalProgress;
+        public float partProgress;
+
+        public ProgressInfo(LaunchStage stage, float totalProgress, float partProgress)
+        {
+            this.stage = stage;
+            this.totalProgress = totalProgress;
+            this.partProgress = partProgress;
+        }
+
     }
 
 }
+
diff --git a/Core/GameEngine/Model/Config/SkillFrameAnimationConfig.cs b/Core/GameEngine/Model/Config/SkillFrameAnimationConfig.cs
index 0fcb490..60d3cd7 100644
--- a/Core/GameEngine/Model/Config/SkillFrameAnimationConfig.cs
+++ b/Core/GameEngine/Model/Config/SkillFrameAnimationConfig.cs
@@ -1,6 +1,6 @@
 锘�//--------------------------------------------------------
 //    [Author]:			绗簩涓栫晫
-//    [  Date ]:		   Tuesday, January 22, 2019
+//    [  Date ]:		   Wednesday, January 23, 2019
 //--------------------------------------------------------
 
 using UnityEngine;
@@ -14,7 +14,9 @@
 		public int skillTypeId { get ; private set ; }
 		public int totalTime { get ; private set ; }
 		public string[] spriteKeys;
-		public string descriptionIcon { get ; private set; } 
+		public string descriptionIcon { get ; private set; } 
+		public Vector3 sizeDelta { get ; private set; } 
+		public Vector3 position { get ; private set; } 
 
 		public override string getKey()
         {
@@ -30,7 +32,11 @@
 			
 				spriteKeys = rawContents[2].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
 			
-				descriptionIcon = rawContents[3].Trim();
+				descriptionIcon = rawContents[3].Trim();
+			
+				sizeDelta=rawContents[4].Vector3Parse();
+			
+				position=rawContents[5].Vector3Parse();
             }
             catch (Exception ex)
             {
diff --git a/Core/GameEngine/Model/Config/SkillFrameAnimationConfig.cs.meta b/Core/GameEngine/Model/Config/SkillFrameAnimationConfig.cs.meta
index 8dc1b55..6908448 100644
--- a/Core/GameEngine/Model/Config/SkillFrameAnimationConfig.cs.meta
+++ b/Core/GameEngine/Model/Config/SkillFrameAnimationConfig.cs.meta
@@ -1,6 +1,6 @@
 fileFormatVersion: 2
 guid: d2052f17dcdee634082ca8f214df0ecd
-timeCreated: 1548156734
+timeCreated: 1548246768
 licenseType: Pro
 MonoImporter:
   serializedVersion: 2
diff --git a/Core/GameEngine/Model/ConfigManager.cs b/Core/GameEngine/Model/ConfigManager.cs
index b8836cd..8239bbe 100644
--- a/Core/GameEngine/Model/ConfigManager.cs
+++ b/Core/GameEngine/Model/ConfigManager.cs
@@ -359,7 +359,7 @@
                     return 1;
                 }
             case RuntimePlatform.WindowsEditor:
-                return 50;
+                return 4;
             default:
                 return 1;
         }
@@ -396,7 +396,7 @@
                     return 1;
                 }
             case RuntimePlatform.WindowsEditor:
-                return 50;
+                return 20;
             default:
                 return 5;
         }
diff --git a/Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA332_tagCMZhuXianEquipDecompose.cs b/Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA332_tagCMZhuXianEquipDecompose.cs
new file mode 100644
index 0000000..14bcd20
--- /dev/null
+++ b/Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA332_tagCMZhuXianEquipDecompose.cs
@@ -0,0 +1,24 @@
+using UnityEngine;
+using System.Collections;
+
+// A3 32 诛仙装备分解 #tagCMZhuXianEquipDecompose

+

+public class CA332_tagCMZhuXianEquipDecompose : GameNetPackBasic {

+    public byte Count;    //材料所在背包索引的数量

+    public  ushort[] IndexList;    //材料所在背包索引列表

+    public  uint[] ItemIDList;    //材料所在背包物品ID列表

+    public byte IsAuto;    //是否自动分解

+

+    public CA332_tagCMZhuXianEquipDecompose () {

+        combineCmd = (ushort)0x03FE;

+        _cmd = (ushort)0xA332;

+    }

+

+    public override void WriteToBytes () {

+        WriteBytes (Count, NetDataType.BYTE);

+        WriteBytes (IndexList, NetDataType.WORD, Count);

+        WriteBytes (ItemIDList, NetDataType.DWORD, Count);

+        WriteBytes (IsAuto, NetDataType.BYTE);

+    }

+

+}

diff --git a/Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA332_tagCMZhuXianEquipDecompose.cs.meta b/Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA332_tagCMZhuXianEquipDecompose.cs.meta
new file mode 100644
index 0000000..40b0abc
--- /dev/null
+++ b/Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA332_tagCMZhuXianEquipDecompose.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 59fd31bf691c8de45befe15b1f45fd79
+timeCreated: 1548228630
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0403_tagPlayerLoginLoadOK.cs b/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0403_tagPlayerLoginLoadOK.cs
index f5dd881..a9ffc6c 100644
--- a/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0403_tagPlayerLoginLoadOK.cs
+++ b/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0403_tagPlayerLoginLoadOK.cs
@@ -15,6 +15,8 @@
     {
         base.Done(vNetPack);
         var vNetData = vNetPack as H0403_tagPlayerLoginLoadOK;
+        StageLoadTimeOutCatcher.RecordProtocol(vNetPack.socketType, "0403", DateTime.Now);
+
         GameNetSystem.Instance.netState = GameNetSystem.NetState.Connected;
         finishedLogin = true;
         GA_Hero.s_MapSwitching = false;
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0614_tagUseSkillPos.cs b/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0614_tagUseSkillPos.cs
index c1156ed..3fcdad8 100644
--- a/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0614_tagUseSkillPos.cs
+++ b/Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0614_tagUseSkillPos.cs
@@ -189,6 +189,13 @@
                             {
                                 SFXPlayUtility.Instance.PlayBattleEffect(_effectID, _cTarget.Root);
                             }
+                            if (int.TryParse(_funcConfig.Numerical2, out _effectID))
+                            {
+                                if (_effectID != 0)
+                                {
+                                    EffectMgr.Instance.PlayUIEffect(_effectID, 2500, Snxxz.UI.WindowCenter.Instance.uiRoot.normalCanvas, false);
+                                }
+                            }
                         }
                     }
 
@@ -631,7 +638,7 @@
                     {
                         if (_effectID != 0)
                         {
-                            EffectMgr.Instance.PlayUIEffect(_effectID, 2500, Snxxz.UI.WindowCenter.Instance.uiRoot.normalCanvas, true);
+                            EffectMgr.Instance.PlayUIEffect(_effectID, 2500, Snxxz.UI.WindowCenter.Instance.uiRoot.normalCanvas, false);
                         }
                     }
                 }
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HA8_Item/DTCA815_tagMCZhuXianDecomposeResult.cs b/Core/NetworkPackage/DTCFile/ServerPack/HA8_Item/DTCA815_tagMCZhuXianDecomposeResult.cs
new file mode 100644
index 0000000..108a09f
--- /dev/null
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HA8_Item/DTCA815_tagMCZhuXianDecomposeResult.cs
@@ -0,0 +1,21 @@
+using UnityEngine;
+using System.Collections;
+using Snxxz.UI;
+
+// A8 15 诛仙装备分解结果通知 #tagMCZhuXianDecomposeResult
+
+
+
+public class DTCA815_tagMCZhuXianDecomposeResult : DtcBasic {
+
+    public override void Done(GameNetPackBasic vNetPack) {
+
+        base.Done(vNetPack);
+
+        HA815_tagMCZhuXianDecomposeResult vNetData = vNetPack as HA815_tagMCZhuXianDecomposeResult;
+        var model = ModelCenter.Instance.GetModel<JadeDynastyDecomposeModel>();
+        model.UpdateJadeDynastyDecomposeResult(vNetData);
+    }
+
+}
+
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HA8_Item/DTCA815_tagMCZhuXianDecomposeResult.cs.meta b/Core/NetworkPackage/DTCFile/ServerPack/HA8_Item/DTCA815_tagMCZhuXianDecomposeResult.cs.meta
new file mode 100644
index 0000000..062d65d
--- /dev/null
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HA8_Item/DTCA815_tagMCZhuXianDecomposeResult.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 89773dd503eda2b46ada6ec382c07cb6
+timeCreated: 1548228630
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Core/NetworkPackage/ServerPack/HA8_Item/HA815_tagMCZhuXianDecomposeResult.cs b/Core/NetworkPackage/ServerPack/HA8_Item/HA815_tagMCZhuXianDecomposeResult.cs
new file mode 100644
index 0000000..8213659
--- /dev/null
+++ b/Core/NetworkPackage/ServerPack/HA8_Item/HA815_tagMCZhuXianDecomposeResult.cs
@@ -0,0 +1,31 @@
+using UnityEngine;
+using System.Collections;
+
+// A8 15 诛仙装备分解结果通知 #tagMCZhuXianDecomposeResult

+

+public class HA815_tagMCZhuXianDecomposeResult : GameNetPackBasic {

+    public byte Cnt;    //数量

+    public  tagMCZhuXianDecomposeItem[] ItemList;

+

+    public HA815_tagMCZhuXianDecomposeResult () {

+        _cmd = (ushort)0xA815;

+    }

+

+    public override void ReadFromBytes (byte[] vBytes) {

+        TransBytes (out Cnt, vBytes, NetDataType.BYTE);

+        ItemList = new tagMCZhuXianDecomposeItem[Cnt];

+        for (int i = 0; i < Cnt; i ++) {

+            ItemList[i] = new tagMCZhuXianDecomposeItem();

+            TransBytes (out ItemList[i].ItemID, vBytes, NetDataType.DWORD);

+            TransBytes (out ItemList[i].ItemCnt, vBytes, NetDataType.BYTE);

+            TransBytes (out ItemList[i].IsBind, vBytes, NetDataType.BYTE);

+        }

+    }

+

+    public struct tagMCZhuXianDecomposeItem {

+        public uint ItemID;        //物品ID

+        public byte ItemCnt;        //物品数量

+        public byte IsBind;        //是否绑定

+    }

+

+}

diff --git a/Core/NetworkPackage/ServerPack/HA8_Item/HA815_tagMCZhuXianDecomposeResult.cs.meta b/Core/NetworkPackage/ServerPack/HA8_Item/HA815_tagMCZhuXianDecomposeResult.cs.meta
new file mode 100644
index 0000000..e8a7653
--- /dev/null
+++ b/Core/NetworkPackage/ServerPack/HA8_Item/HA815_tagMCZhuXianDecomposeResult.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 52dfc4652741b4d45a851499d0df08b0
+timeCreated: 1548228630
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Fight/Actor/AI/HeroAI_KillUntilDie.cs b/Fight/Actor/AI/HeroAI_KillUntilDie.cs
index b646939..8e30c49 100644
--- a/Fight/Actor/AI/HeroAI_KillUntilDie.cs
+++ b/Fight/Actor/AI/HeroAI_KillUntilDie.cs
@@ -226,6 +226,12 @@
 
                 m_IsMovingToTarget = true;
 
+                if (!_hero.IsRushing && UserInputHandler.isTouched)
+                {
+                    m_LimitOnce = true;
+                    _hero.StopPathFind();
+                }
+
                 return;
             }
 
diff --git a/Fight/Actor/HeroBehaviour.cs b/Fight/Actor/HeroBehaviour.cs
index f6be85a..7020d67 100644
--- a/Fight/Actor/HeroBehaviour.cs
+++ b/Fight/Actor/HeroBehaviour.cs
@@ -139,7 +139,8 @@
             }
         }
 
-        if (m_Hero.aiHandler.currentType == E_HeroAIType.None)
+        if (m_Hero.aiHandler.currentType == E_HeroAIType.None
+         || m_Hero.aiHandler.currentType == E_HeroAIType.KillUntilDie)
         {
             byte _type = (byte)E_HeroAIType.KillUntilDie;
             KillUntilDieData _data = m_Hero.aiHandler.aiData[_type] as KillUntilDieData;
diff --git a/Fight/Actor/UserInputHandler.cs b/Fight/Actor/UserInputHandler.cs
index 8c7428c..0681ff0 100644
--- a/Fight/Actor/UserInputHandler.cs
+++ b/Fight/Actor/UserInputHandler.cs
@@ -278,6 +278,7 @@
                     _hero.Run();
 
                     _hero.State = E_ActorState.CtrlRun;
+                    _hero.Behaviour.StopKillUntilDieAI();
                 }
             }
         }
@@ -296,13 +297,17 @@
 
         GA_Hero _hero = PlayerDatas.Instance.hero;
 
-        if ((StatusMgr.IsValid()
-         && StatusMgr.Instance.CanMove(PlayerDatas.Instance.PlayerId)))
+        if (_hero != null)
         {
-            if (_hero != null
-             && _hero.State == E_ActorState.AutoRun)
+            _hero.Behaviour.StopKillUntilDieAI();
+
+            if ((StatusMgr.IsValid()
+             && StatusMgr.Instance.CanMove(PlayerDatas.Instance.PlayerId)))
             {
-                _hero.StopPathFind();
+                if (_hero.State == E_ActorState.AutoRun)
+                {
+                    _hero.StopPathFind();
+                }
             }
         }
     }
diff --git a/Fight/GameActor/GActor.cs b/Fight/GameActor/GActor.cs
index 4efee19..d7e6de2 100644
--- a/Fight/GameActor/GActor.cs
+++ b/Fight/GameActor/GActor.cs
@@ -282,11 +282,12 @@
         return m_Path.corners;
     }
 
-    public void MoveToTarget(GActor target, float keepDist = 0)
+    public void MoveToTarget(GActor target, float keepDist = 0, bool force = false)
     {
         if (PathFindStatus == E_PathFindStatus.Moving
          && m_SearchType == E_SearchType.Dynamic
-         && TargetActor == target)
+         && TargetActor == target
+         && !force)
         {
             return;
         }
@@ -335,16 +336,16 @@
 
     public void StopPathFind()
     {
+        PathFindStatus = E_PathFindStatus.Stop;
+
         if (State != E_ActorState.AutoRun)
         {
             return;
         }
 
-        PathFindStatus = E_PathFindStatus.Stop;
         TargetActor = null;
         DestPos = Vector3.zero;
         m_CornerIndex = 0;
-
 
         if (NextAction != GAStaticDefine.Act_Dead
          && NextAction != 200
diff --git a/Fight/GameActor/GActorPlayerBase.cs b/Fight/GameActor/GActorPlayerBase.cs
index 1cdf34f..7b102f5 100644
--- a/Fight/GameActor/GActorPlayerBase.cs
+++ b/Fight/GameActor/GActorPlayerBase.cs
@@ -1191,11 +1191,6 @@
         {
             if (null != m_Guard)
             {
-                if (m_Guard.itemID == guardID)
-                {
-                    return;
-                }
-
                 m_Guard.UnInit();
                 m_Guard = null;
             }
diff --git a/Fight/Stage/Dungeon/DungeonStage.cs b/Fight/Stage/Dungeon/DungeonStage.cs
index 78c0b66..a971180 100644
--- a/Fight/Stage/Dungeon/DungeonStage.cs
+++ b/Fight/Stage/Dungeon/DungeonStage.cs
@@ -231,6 +231,7 @@
                 break;
             case DemonJarModel.DEMONJAR_MAPID:
             case 31140:
+            case JadeDynastyBossModel.JADEDYNASTY_MAP:
                 WindowCenter.Instance.Open<DungeonPickUpItemCoolDownWin>();
                 break;
             case FairyLeagueModel.FAIRY_LEAGUE_DUNGEON:
@@ -249,7 +250,8 @@
         // 绛夊緟澶勭悊寮�鍚嚜鍔ㄦ垬鏂�
         DungeonModel _dungeonModel = ModelCenter.Instance.GetModel<DungeonModel>();
         if (PlayerDatas.Instance.baseData.MapID == 52020
-         || PlayerDatas.Instance.baseData.MapID == 52010)
+         || PlayerDatas.Instance.baseData.MapID == 52010
+         || PlayerDatas.Instance.baseData.MapID == JadeDynastyBossModel.JADEDYNASTY_MAP)
         {
             _dungeonModel.updateMissionEvent += HandleAutoFight;
         }
@@ -261,43 +263,41 @@
 
     private void HandleMapData()
     {
-        mapData = H2Engine.MapData.LoadFormFile(PlayerDatas.Instance.baseData.MapID);
-        if (mapData == null)
-        {
-            Debug.LogFormat("------------------ 鏁版嵁鏄┖鐨�");
-            return;
-        }
-        // 鐩墠鐗堟湰鍙鐞嗗埛鍦烘櫙鐗╀欢
-        foreach (var _trigger in mapData.triggers)
-        {
-            if (_trigger.triggerType != H2Engine.MapTrigger.E_TriggerType.EnterStage)
-            {
-                Debug.Log("_trigger.triggerType: " + _trigger.triggerType);
-                continue;
-            }
+        // mapData = H2Engine.MapData.LoadFormFile(PlayerDatas.Instance.baseData.MapID);
+        // if (mapData == null)
+        // {
+        //     return;
+        // }
+        // // 鐩墠鐗堟湰鍙鐞嗗埛鍦烘櫙鐗╀欢
+        // foreach (var _trigger in mapData.triggers)
+        // {
+        //     if (_trigger.triggerType != H2Engine.MapTrigger.E_TriggerType.EnterStage)
+        //     {
+        //         continue;
+        //     }
 
-            foreach (var _id in _trigger.evevntIDs)
-            {
-                var _event = mapData.eventDict[_id];
-                if (_event.type == H2Engine.Evt.E_EventType.SceneObject)
-                {
-                    var _refreshSceneObject = _event as H2Engine.Evt_RefreshSceneObject;
-                    if (_refreshSceneObject != null)
-                    {
-                        foreach (var _sceneObjData in _refreshSceneObject.sceneObjects)
-                        {
-                            var _prefab = InstanceResourcesLoader.LoadModelPrefab(InstanceResourcesLoader.raceSuffix, _sceneObjData.resName, false);
-                            if (_prefab)
-                            {
-                                var _go = GameObject.Instantiate(_prefab);
-                                _go.transform.position = _sceneObjData.position;
-                                _go.transform.eulerAngles = _sceneObjData.eulerAngles;
-                            }
-                        }
-                    }
-                }
-            }
-        }
+        //     foreach (var _id in _trigger.evevntIDs)
+        //     {
+        //         var _event = mapData.eventDict[_id];
+        //         if (_event.type == H2Engine.Evt.E_EventType.SceneObject)
+        //         {
+        //             var _refreshSceneObject = _event as H2Engine.Evt_RefreshSceneObject;
+        //             if (_refreshSceneObject != null)
+        //             {
+        //                 foreach (var _sceneObjData in _refreshSceneObject.sceneObjects)
+        //                 {
+        //                     var _prefab = InstanceResourcesLoader.LoadModelPrefab(InstanceResourcesLoader.raceSuffix, _sceneObjData.resName, false);
+        //                     if (_prefab)
+        //                     {
+        //                         var _go = GameObject.Instantiate(_prefab);
+        //                         _go.transform.position = _sceneObjData.position;
+        //                         _go.transform.eulerAngles = _sceneObjData.eulerAngles;
+        //                     }
+        //                 }
+        //             }
+        //         }
+        //     }
+        // }
     }
 
     private void HandleAutoFight()
@@ -464,9 +464,9 @@
     {
         for (var i = 100101; i <= 100109; i++)
         {
-            var config = Config.Instance.Get<SceneReplaceConfig>(i);
-            if (config != null)
+            if (Config.Instance.ContainKey<SceneReplaceConfig>(i))
             {
+                var config = Config.Instance.Get<SceneReplaceConfig>(i);
                 var groundTexture = SceneLoader.LoadTexture(config.folder, config.resourceName);
                 var @object = GameObject.Find(config.objectPath);
 
@@ -475,6 +475,35 @@
             }
         }
 
+        var _func = Config.Instance.Get<FuncConfigConfig>("MapObjectConfig");
+        if (_func != null)
+        {
+            var _json = LitJson.JsonMapper.ToObject(_func.Numerical1);
+            var _mapID = PlayerDatas.Instance.baseData.MapID.ToString();
+            if ((_json as IDictionary).Contains(_mapID))
+            {
+                _json = _json[_mapID];
+                bool _isShow = (bool)_json["show"];
+                if (_isShow)
+                {
+                    string _effectName = _json["obj"].ToString();
+                    string _parent = _json["parent"].ToString();
+
+                    var _prefab = InstanceResourcesLoader.LoadModelPrefab(InstanceResourcesLoader.raceSuffix, _effectName, false);
+                    if (_prefab)
+                    {
+                        var _go = GameObject.Instantiate(_prefab);
+
+                        var _parentNode = GameObject.Find(_parent);
+                        _go.transform.SetParent(_parentNode.transform);
+                        _go.transform.localPosition = Vector3.zero;
+                        _go.transform.localRotation = Quaternion.identity;
+                        _go.transform.localScale = Vector3.one;
+                    }
+                }
+            }
+        }
+
     }
 
 
diff --git a/Fight/Stage/StageManager.cs b/Fight/Stage/StageManager.cs
index 1d4026e..0fa1aec 100644
--- a/Fight/Stage/StageManager.cs
+++ b/Fight/Stage/StageManager.cs
@@ -318,7 +318,7 @@
             }
             catch (System.Exception ex)
             {
-                ExceptionCatcher.ReportException("鍦烘櫙鍔犺浇 Step6", ex);
+                ExceptionCatcher.ReportException("鍦烘櫙鍔犺浇 Step6 鎵ц鍒�: " + m_InitHeroStep, ex);
             }
         }
 
@@ -455,16 +455,24 @@
 
         yield return WaitingForSecondConst.WaitMS1000;
 
-        var mapConfig = Config.Instance.Get<MapConfig>(PlayerDatas.Instance.baseData.MapID);
-        if (mapConfig.MapFBType == (int)MapType.OpenCountry)
+        if (CrossServerUtility.IsCrossServer())
         {
-            var sjzMapConfig = Config.Instance.Get<MapConfig>(10010);
-            var position = new Vector3(sjzMapConfig.BornPoints[0].x, 0, sjzMapConfig.BornPoints[0].y);
-            MapTransferUtility.Send_WorldTransfer(10010, position, MapTransferType.WorldTransport, 255, 0);
+            var sendInfo = new CC003_tagCGForceQuitCrossState();
+            GameNetSystem.Instance.SendInfo(sendInfo);
         }
         else
         {
-            ModelCenter.Instance.GetModel<DungeonModel>().ExitCurrentDungeon();
+            var mapConfig = Config.Instance.Get<MapConfig>(PlayerDatas.Instance.baseData.MapID);
+            if (mapConfig.MapFBType == (int)MapType.OpenCountry)
+            {
+                var sjzMapConfig = Config.Instance.Get<MapConfig>(10010);
+                var position = new Vector3(sjzMapConfig.BornPoints[0].x, 0, sjzMapConfig.BornPoints[0].y);
+                MapTransferUtility.Send_WorldTransfer(10010, position, MapTransferType.WorldTransport, 255, 0);
+            }
+            else
+            {
+                ModelCenter.Instance.GetModel<DungeonModel>().ExitCurrentDungeon();
+            }
         }
 
         if (loadTimeOutCatcher != null)
@@ -487,8 +495,11 @@
         }
     }
 
+    private int m_InitHeroStep = 0;
+
     private void InitHero()
     {
+        m_InitHeroStep = 0;
         // 鍒濆鍖栨憚鍍忔満
         if (!CameraController.Instance)
         {
@@ -496,19 +507,19 @@
             CameraController.Instance.AcceptInput = false;
             CameraController.Instance.CameraObject.enabled = false;
         }
-
+        m_InitHeroStep = 1;
         GA_Hero _hero = PlayerDatas.Instance.hero;
         if (_hero == null)
         {
             _hero = GAMgr.Instance.RequestPlayer<GA_Hero>(PlayerDatas.Instance.PlayerId, E_ActorGroup.User, null);
         }
-
+        m_InitHeroStep = 2;
         _hero.State = E_ActorState.Idle;
         _hero.ActorInfo.ResetHp((int)PlayerDatas.Instance.baseData.HP, -1, (int)PlayerDatas.Instance.extersion.MaxHP);
         _hero.CalculateMoveSpeed((ushort)PlayerDatas.Instance.extersion.SpeedValue);
         _hero.CalculateAtkSpeed(PlayerDatas.Instance.extersion.battleValEx1);
         _hero.InitBornPos(PlayerDatas.Instance.baseData.PosX, PlayerDatas.Instance.baseData.PosY);
-
+        m_InitHeroStep = 3;
         CameraController.Instance.SetLookTarget(_hero.Root);
         CameraController.Instance.Apply();
 
@@ -517,7 +528,7 @@
 
         ItemModel _itemModel = _equipModel.GetItemModelByIndex((int)RoleEquipType.retClothes);
         ItemModel _fashion = _equipModel.GetItemModelByIndex((int)RoleEquipType.retFashionClothes);
-
+        m_InitHeroStep = 4;
         if (_fashion != null)
         {
             _hero.SwitchClothes((uint)_fashion.itemInfo.ItemID, (int)RoleEquipType.retFashionClothes);
@@ -530,7 +541,7 @@
         {
             _hero.SwitchClothes(0);
         }
-
+        m_InitHeroStep = 5;
         _itemModel = _equipModel.GetItemModelByIndex((int)RoleEquipType.retWeapon);
         _fashion = _equipModel.GetItemModelByIndex((int)RoleEquipType.retFashionWeapon);
 
@@ -547,6 +558,7 @@
             _hero.SwitchWeapon(0);
         }
 
+        m_InitHeroStep = 6;
         _itemModel = _equipModel.GetItemModelByIndex((int)RoleEquipType.retWeapon2);
         _fashion = _equipModel.GetItemModelByIndex((int)RoleEquipType.retFashionWeapon2);
 
@@ -562,6 +574,7 @@
         {
             _hero.SwitchSecondary(0);
         }
+        m_InitHeroStep = 7;
 
         _itemModel = _equipModel.GetItemModelByIndex((int)RoleEquipType.retWing);
 
@@ -570,6 +583,7 @@
             _hero.SwitchWing((uint)_itemModel.itemInfo.ItemID);
         }
 
+        m_InitHeroStep = 8;
         var _mapConfig = Config.Instance.Get<MapConfig>(PlayerDatas.Instance.baseData.MapID);
         if (_mapConfig.CanRide == 1)
         {
@@ -584,6 +598,7 @@
                 }
             }
         }
+        m_InitHeroStep = 9;
 
         _itemModel = _equipModel.GetItemModelByIndex((int)RoleEquipType.retSpiritAnimal);
 
@@ -592,12 +607,17 @@
             _hero.SwitchGuard((uint)_itemModel.itemInfo.ItemID);
         }
 
+        m_InitHeroStep = 10;
+
         _hero.SyncSuitEffect();
 
+        m_InitHeroStep = 11;
         _hero.IdleImmediate();
 
         _hero.SetFairyLeagueHeadUp(PlayerDatas.Instance.baseData.MapID == FairyLeagueModel.FAIRY_LEAGUE_DUNGEON);
         _hero.CheckAncientHeadUp();
+
+        m_InitHeroStep = 12;
         var titleId = 0;
         if (PlayerDatas.Instance.baseData.MapID != 31160)
         {
@@ -607,6 +627,7 @@
         }
         _hero.SwitchTitle((uint)titleId);
 
+        m_InitHeroStep = 13;
         // 鍒ゆ柇buff
         if (StatusMgr.Instance.IsExist(PlayerDatas.Instance.PlayerId, StatusMgr.Instance.redNameBuffID))
         {
@@ -615,6 +636,7 @@
 
         _hero.RequestLight();
 
+        m_InitHeroStep = 14;
         PlayerDatas.Instance.hero = _hero;
 
         var _preloadEffectList = GeneralDefine.PreloadSkillEffect[_hero.JobSetup.Job - 1];
@@ -625,6 +647,7 @@
                 InstanceResourcesLoader.PreloadSkillEffect(_id);
             }
         }
+        m_InitHeroStep = 15;
     }
 
     private string GetAssetBundleNameByStageId(int stageID, int mapResID)
diff --git a/Lua/Gen/DebugUtilityWrap.cs.meta b/Lua/Gen/DebugUtilityWrap.cs.meta
index 4404782..04a67de 100644
--- a/Lua/Gen/DebugUtilityWrap.cs.meta
+++ b/Lua/Gen/DebugUtilityWrap.cs.meta
@@ -1,6 +1,6 @@
 fileFormatVersion: 2
 guid: 2e45bdc7ab1407847ac64c5843fb2d66
-timeCreated: 1547610180
+timeCreated: 1548252570
 licenseType: Pro
 MonoImporter:
   serializedVersion: 2
diff --git a/Lua/Gen/DelegatesGensBridge.cs b/Lua/Gen/DelegatesGensBridge.cs
index 74b234e..1fdb8f9 100644
--- a/Lua/Gen/DelegatesGensBridge.cs
+++ b/Lua/Gen/DelegatesGensBridge.cs
@@ -171,7 +171,7 @@
 #endif
 		}
         
-		public Snxxz.UI.DailyQuestModel __Gen_Delegate_Imp7(object p0)
+		public void __Gen_Delegate_Imp7(object p0, object p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -181,63 +181,20 @@
                 int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
                 ObjectTranslator translator = luaEnv.translator;
                 translator.PushAny(L, p0);
+                translator.PushAny(L, p1);
                 
-                PCall(L, 1, 1, errFunc);
+                PCall(L, 2, 0, errFunc);
                 
                 
-                Snxxz.UI.DailyQuestModel __gen_ret = (Snxxz.UI.DailyQuestModel)translator.GetObject(L, errFunc + 1, typeof(Snxxz.UI.DailyQuestModel));
+                
                 LuaAPI.lua_settop(L, errFunc - 1);
-                return  __gen_ret;
+                
 #if THREAD_SAFE || HOTFIX_ENABLE
             }
 #endif
 		}
         
-		public Snxxz.UI.DungeonModel __Gen_Delegate_Imp8(object p0)
-		{
-#if THREAD_SAFE || HOTFIX_ENABLE
-            lock (luaEnv.luaEnvLock)
-            {
-#endif
-                RealStatePtr L = luaEnv.rawL;
-                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
-                ObjectTranslator translator = luaEnv.translator;
-                translator.PushAny(L, p0);
-                
-                PCall(L, 1, 1, errFunc);
-                
-                
-                Snxxz.UI.DungeonModel __gen_ret = (Snxxz.UI.DungeonModel)translator.GetObject(L, errFunc + 1, typeof(Snxxz.UI.DungeonModel));
-                LuaAPI.lua_settop(L, errFunc - 1);
-                return  __gen_ret;
-#if THREAD_SAFE || HOTFIX_ENABLE
-            }
-#endif
-		}
-        
-		public Snxxz.UI.ActivityModel __Gen_Delegate_Imp9(object p0)
-		{
-#if THREAD_SAFE || HOTFIX_ENABLE
-            lock (luaEnv.luaEnvLock)
-            {
-#endif
-                RealStatePtr L = luaEnv.rawL;
-                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
-                ObjectTranslator translator = luaEnv.translator;
-                translator.PushAny(L, p0);
-                
-                PCall(L, 1, 1, errFunc);
-                
-                
-                Snxxz.UI.ActivityModel __gen_ret = (Snxxz.UI.ActivityModel)translator.GetObject(L, errFunc + 1, typeof(Snxxz.UI.ActivityModel));
-                LuaAPI.lua_settop(L, errFunc - 1);
-                return  __gen_ret;
-#if THREAD_SAFE || HOTFIX_ENABLE
-            }
-#endif
-		}
-        
-		public void __Gen_Delegate_Imp10(object p0)
+		public void __Gen_Delegate_Imp8(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -259,7 +216,73 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp11(object p0, int p1, object p2)
+		public Snxxz.UI.DailyQuestModel __Gen_Delegate_Imp9(object p0)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                
+                PCall(L, 1, 1, errFunc);
+                
+                
+                Snxxz.UI.DailyQuestModel __gen_ret = (Snxxz.UI.DailyQuestModel)translator.GetObject(L, errFunc + 1, typeof(Snxxz.UI.DailyQuestModel));
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public Snxxz.UI.DungeonModel __Gen_Delegate_Imp10(object p0)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                
+                PCall(L, 1, 1, errFunc);
+                
+                
+                Snxxz.UI.DungeonModel __gen_ret = (Snxxz.UI.DungeonModel)translator.GetObject(L, errFunc + 1, typeof(Snxxz.UI.DungeonModel));
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public Snxxz.UI.ActivityModel __Gen_Delegate_Imp11(object p0)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                
+                PCall(L, 1, 1, errFunc);
+                
+                
+                Snxxz.UI.ActivityModel __gen_ret = (Snxxz.UI.ActivityModel)translator.GetObject(L, errFunc + 1, typeof(Snxxz.UI.ActivityModel));
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public void __Gen_Delegate_Imp12(object p0, int p1, object p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -283,7 +306,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp12(object p0, int p1)
+		public void __Gen_Delegate_Imp13(object p0, int p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -294,29 +317,6 @@
                 ObjectTranslator translator = luaEnv.translator;
                 translator.PushAny(L, p0);
                 LuaAPI.xlua_pushinteger(L, p1);
-                
-                PCall(L, 2, 0, errFunc);
-                
-                
-                
-                LuaAPI.lua_settop(L, errFunc - 1);
-                
-#if THREAD_SAFE || HOTFIX_ENABLE
-            }
-#endif
-		}
-        
-		public void __Gen_Delegate_Imp13(object p0, object p1)
-		{
-#if THREAD_SAFE || HOTFIX_ENABLE
-            lock (luaEnv.luaEnvLock)
-            {
-#endif
-                RealStatePtr L = luaEnv.rawL;
-                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
-                ObjectTranslator translator = luaEnv.translator;
-                translator.PushAny(L, p0);
-                translator.PushAny(L, p1);
                 
                 PCall(L, 2, 0, errFunc);
                 
@@ -2566,7 +2566,29 @@
 #endif
 		}
         
-		public Snxxz.UI.FashionDressModel __Gen_Delegate_Imp112(object p0)
+		public Snxxz.UI.KingFairyModel __Gen_Delegate_Imp112(object p0)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                
+                PCall(L, 1, 1, errFunc);
+                
+                
+                Snxxz.UI.KingFairyModel __gen_ret = (Snxxz.UI.KingFairyModel)translator.GetObject(L, errFunc + 1, typeof(Snxxz.UI.KingFairyModel));
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public Snxxz.UI.FashionDressModel __Gen_Delegate_Imp113(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -2588,7 +2610,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp113(object p0, object p1, bool p2)
+		public void __Gen_Delegate_Imp114(object p0, object p1, bool p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -2612,7 +2634,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp114(object p0, object p1, out Snxxz.UI.FashionDecomposeModel.DecomposeItem p2)
+		public bool __Gen_Delegate_Imp115(object p0, object p1, out Snxxz.UI.FashionDecomposeModel.DecomposeItem p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -2636,7 +2658,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp115(object p0, out System.Collections.Generic.List<ushort> p1, out System.Collections.Generic.List<uint> p2)
+		public void __Gen_Delegate_Imp116(object p0, out System.Collections.Generic.List<ushort> p1, out System.Collections.Generic.List<uint> p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -2660,7 +2682,7 @@
 #endif
 		}
         
-		public GetItemPathModel __Gen_Delegate_Imp116(object p0)
+		public GetItemPathModel __Gen_Delegate_Imp117(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -2682,7 +2704,7 @@
 #endif
 		}
         
-		public System.Collections.Generic.Dictionary<int, int> __Gen_Delegate_Imp117(object p0)
+		public System.Collections.Generic.Dictionary<int, int> __Gen_Delegate_Imp118(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -2704,7 +2726,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp118(object p0, PackType p1, int p2, int p3)
+		public void __Gen_Delegate_Imp119(object p0, PackType p1, int p2, int p3)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -2729,7 +2751,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp119(object p0, int p1, out Snxxz.UI.FashionDress p2)
+		public bool __Gen_Delegate_Imp120(object p0, int p1, out Snxxz.UI.FashionDress p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -2753,7 +2775,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp120(object p0, int p1, int p2, out System.Collections.Generic.List<int> p3)
+		public bool __Gen_Delegate_Imp121(object p0, int p1, int p2, out System.Collections.Generic.List<int> p3)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -2778,7 +2800,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp121(object p0, int p1, out System.Collections.Generic.List<int> p2)
+		public bool __Gen_Delegate_Imp122(object p0, int p1, out System.Collections.Generic.List<int> p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -2802,7 +2824,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp122(object p0, int p1, int p2, out System.Collections.Generic.Dictionary<int, int> p3)
+		public bool __Gen_Delegate_Imp123(object p0, int p1, int p2, out System.Collections.Generic.Dictionary<int, int> p3)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -2827,7 +2849,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp123(object p0, int p1, out System.Collections.Generic.Dictionary<int, int> p2)
+		public bool __Gen_Delegate_Imp124(object p0, int p1, out System.Collections.Generic.Dictionary<int, int> p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -2851,7 +2873,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp124(object p0, ref System.Collections.Generic.List<int> p1)
+		public bool __Gen_Delegate_Imp125(object p0, ref System.Collections.Generic.List<int> p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -2875,7 +2897,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp125(object p0, out System.Collections.Generic.List<int> p1)
+		public bool __Gen_Delegate_Imp126(object p0, out System.Collections.Generic.List<int> p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -2898,7 +2920,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp126(object p0, int p1, int p2, int p3, int p4)
+		public void __Gen_Delegate_Imp127(object p0, int p1, int p2, int p3, int p4)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -2924,7 +2946,7 @@
 #endif
 		}
         
-		public Snxxz.UI.MagicianModel __Gen_Delegate_Imp127(object p0)
+		public Snxxz.UI.MagicianModel __Gen_Delegate_Imp128(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -2946,7 +2968,7 @@
 #endif
 		}
         
-		public int __Gen_Delegate_Imp128(object p0, Snxxz.UI.ServerItem p1, Snxxz.UI.ServerItem p2)
+		public int __Gen_Delegate_Imp129(object p0, Snxxz.UI.ServerItem p1, Snxxz.UI.ServerItem p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -2970,7 +2992,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp129(bool p0)
+		public void __Gen_Delegate_Imp130(bool p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -2992,7 +3014,7 @@
 #endif
 		}
         
-		public Snxxz.UI.GatherSoulDungeonModel __Gen_Delegate_Imp130(object p0)
+		public Snxxz.UI.GatherSoulDungeonModel __Gen_Delegate_Imp131(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3014,7 +3036,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp131(object p0, int p1, uint p2)
+		public void __Gen_Delegate_Imp132(object p0, int p1, uint p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3038,7 +3060,7 @@
 #endif
 		}
         
-		public Snxxz.UI.GatherSoulComposeModel __Gen_Delegate_Imp132(object p0)
+		public Snxxz.UI.GatherSoulComposeModel __Gen_Delegate_Imp133(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3060,7 +3082,7 @@
 #endif
 		}
         
-		public Snxxz.UI.GatheringSoulModel __Gen_Delegate_Imp133(object p0)
+		public Snxxz.UI.GatheringSoulModel __Gen_Delegate_Imp134(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3082,7 +3104,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp134(object p0, Snxxz.UI.GatherSoulComposeModel.ComposeCategory p1)
+		public void __Gen_Delegate_Imp135(object p0, Snxxz.UI.GatherSoulComposeModel.ComposeCategory p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3105,7 +3127,7 @@
 #endif
 		}
         
-		public System.Collections.Generic.List<Snxxz.UI.GatherSoulComposeModel.ComposeCategory> __Gen_Delegate_Imp135(object p0)
+		public System.Collections.Generic.List<Snxxz.UI.GatherSoulComposeModel.ComposeCategory> __Gen_Delegate_Imp136(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3127,7 +3149,7 @@
 #endif
 		}
         
-		public System.Collections.Generic.Dictionary<Snxxz.UI.GatherSoulComposeModel.ComposeCategory, System.Collections.Generic.List<int>> __Gen_Delegate_Imp136(object p0)
+		public System.Collections.Generic.Dictionary<Snxxz.UI.GatherSoulComposeModel.ComposeCategory, System.Collections.Generic.List<int>> __Gen_Delegate_Imp137(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3149,7 +3171,7 @@
 #endif
 		}
         
-		public Snxxz.UI.GatherSoulComposeModel.ComposeCategory __Gen_Delegate_Imp137(object p0)
+		public Snxxz.UI.GatherSoulComposeModel.ComposeCategory __Gen_Delegate_Imp138(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3171,7 +3193,7 @@
 #endif
 		}
         
-		public Snxxz.UI.VirtualItem __Gen_Delegate_Imp138(object p0)
+		public Snxxz.UI.VirtualItem __Gen_Delegate_Imp139(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3193,7 +3215,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp139(object p0, Snxxz.UI.VirtualItem p1)
+		public void __Gen_Delegate_Imp140(object p0, Snxxz.UI.VirtualItem p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3216,7 +3238,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp140(object p0, int p1, out Snxxz.UI.GatherSoulComposeModel.Compose p2)
+		public bool __Gen_Delegate_Imp141(object p0, int p1, out Snxxz.UI.GatherSoulComposeModel.Compose p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3240,7 +3262,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp141(object p0, UnityEngine.Vector3 p1)
+		public void __Gen_Delegate_Imp142(object p0, UnityEngine.Vector3 p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3263,7 +3285,7 @@
 #endif
 		}
         
-		public System.Collections.IEnumerator __Gen_Delegate_Imp142(object p0, object p1)
+		public System.Collections.IEnumerator __Gen_Delegate_Imp143(object p0, object p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3286,7 +3308,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp143(object p0, ScrollerDataType p1, int p2, out float p3)
+		public bool __Gen_Delegate_Imp144(object p0, ScrollerDataType p1, int p2, out float p3)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3311,7 +3333,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp144(object p0, int p1, int p2, bool p3)
+		public void __Gen_Delegate_Imp145(object p0, int p1, int p2, bool p3)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3336,7 +3358,7 @@
 #endif
 		}
         
-		public Snxxz.UI.GatherSoulDungeonHelp __Gen_Delegate_Imp145(object p0)
+		public Snxxz.UI.GatherSoulDungeonHelp __Gen_Delegate_Imp146(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3358,7 +3380,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp146(object p0, Snxxz.UI.GatherSoulDungeonHelp p1)
+		public void __Gen_Delegate_Imp147(object p0, Snxxz.UI.GatherSoulDungeonHelp p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3381,7 +3403,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp147(object p0, int p1, out System.Collections.Generic.List<Snxxz.UI.GatherSoulDungeonModel.ItemInfo> p2)
+		public bool __Gen_Delegate_Imp148(object p0, int p1, out System.Collections.Generic.List<Snxxz.UI.GatherSoulDungeonModel.ItemInfo> p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3405,7 +3427,7 @@
 #endif
 		}
         
-		public int __Gen_Delegate_Imp148(object p0, Snxxz.UI.GatherSoulDungeonModel.ItemInfo p1, Snxxz.UI.GatherSoulDungeonModel.ItemInfo p2)
+		public int __Gen_Delegate_Imp149(object p0, Snxxz.UI.GatherSoulDungeonModel.ItemInfo p1, Snxxz.UI.GatherSoulDungeonModel.ItemInfo p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3429,7 +3451,7 @@
 #endif
 		}
         
-		public Snxxz.UI.VirtualPackModel __Gen_Delegate_Imp149(object p0)
+		public Snxxz.UI.VirtualPackModel __Gen_Delegate_Imp150(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3451,7 +3473,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp150(object p0, ItemWinBtnType p1, object p2)
+		public void __Gen_Delegate_Imp151(object p0, ItemWinBtnType p1, object p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3475,7 +3497,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp151(object p0, PackType p1, int p2)
+		public void __Gen_Delegate_Imp152(object p0, PackType p1, int p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3499,7 +3521,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp152(object p0, Snxxz.UI.SortType p1, int p2)
+		public void __Gen_Delegate_Imp153(object p0, Snxxz.UI.SortType p1, int p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3523,7 +3545,7 @@
 #endif
 		}
         
-		public int __Gen_Delegate_Imp153(object p0, int p1, int p2)
+		public int __Gen_Delegate_Imp154(object p0, int p1, int p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3547,7 +3569,7 @@
 #endif
 		}
         
-		public System.Collections.IEnumerator __Gen_Delegate_Imp154(object p0, UnityEngine.Vector3 p1, UnityEngine.Vector3 p2)
+		public System.Collections.IEnumerator __Gen_Delegate_Imp155(object p0, UnityEngine.Vector3 p1, UnityEngine.Vector3 p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3571,7 +3593,7 @@
 #endif
 		}
         
-		public System.Collections.Generic.List<Snxxz.UI.GatherSoulItem> __Gen_Delegate_Imp155(object p0)
+		public System.Collections.Generic.List<Snxxz.UI.GatherSoulItem> __Gen_Delegate_Imp156(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3593,7 +3615,7 @@
 #endif
 		}
         
-		public string __Gen_Delegate_Imp156(int p0)
+		public string __Gen_Delegate_Imp157(int p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3615,7 +3637,7 @@
 #endif
 		}
         
-		public int __Gen_Delegate_Imp157(object p0, object p1)
+		public int __Gen_Delegate_Imp158(object p0, object p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3638,7 +3660,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp158(object p0, PackType p1)
+		public void __Gen_Delegate_Imp159(object p0, PackType p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3661,7 +3683,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp159(object p0, int p1, ref System.Collections.Generic.List<Snxxz.UI.GatherSoulItem> p2)
+		public void __Gen_Delegate_Imp160(object p0, int p1, ref System.Collections.Generic.List<Snxxz.UI.GatherSoulItem> p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3686,7 +3708,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp160(object p0, object p1, int p2, out int p3)
+		public bool __Gen_Delegate_Imp161(object p0, object p1, int p2, out int p3)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3711,7 +3733,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp161(object p0, object p1, out int p2)
+		public bool __Gen_Delegate_Imp162(object p0, object p1, out int p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3735,7 +3757,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp162(object p0, int p1, object p2)
+		public bool __Gen_Delegate_Imp163(object p0, int p1, object p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3759,7 +3781,7 @@
 #endif
 		}
         
-		public int __Gen_Delegate_Imp163(object p0, int p1, object p2)
+		public int __Gen_Delegate_Imp164(object p0, int p1, object p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3783,7 +3805,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp164(object p0, int p1, int p2)
+		public bool __Gen_Delegate_Imp165(object p0, int p1, int p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3807,7 +3829,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp165(object p0, object p1, int p2, int p3)
+		public bool __Gen_Delegate_Imp166(object p0, object p1, int p2, int p3)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3832,7 +3854,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp166(object p0, object p1, int p2)
+		public void __Gen_Delegate_Imp167(object p0, object p1, int p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3856,7 +3878,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp167(object p0, Snxxz.UI.VirtualItem p1)
+		public bool __Gen_Delegate_Imp168(object p0, Snxxz.UI.VirtualItem p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3879,7 +3901,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp168(object p0, int p1, out Snxxz.UI.GatherSoulHoleCondition p2)
+		public bool __Gen_Delegate_Imp169(object p0, int p1, out Snxxz.UI.GatherSoulHoleCondition p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3903,7 +3925,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp169(object p0, int p1, out Snxxz.UI.GatherSoulItem p2)
+		public bool __Gen_Delegate_Imp170(object p0, int p1, out Snxxz.UI.GatherSoulItem p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3927,7 +3949,7 @@
 #endif
 		}
         
-		public int __Gen_Delegate_Imp170(object p0, int p1, int p2, int p3)
+		public int __Gen_Delegate_Imp171(object p0, int p1, int p2, int p3)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3952,7 +3974,7 @@
 #endif
 		}
         
-		public int __Gen_Delegate_Imp171(object p0, int p1, ulong p2)
+		public int __Gen_Delegate_Imp172(object p0, int p1, ulong p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -3976,7 +3998,7 @@
 #endif
 		}
         
-		public int __Gen_Delegate_Imp172(object p0, int p1, int p2, bool p3)
+		public int __Gen_Delegate_Imp173(object p0, int p1, int p2, bool p3)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4001,7 +4023,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp173(object p0, object p1, ref System.Collections.Generic.Dictionary<int, int> p2)
+		public void __Gen_Delegate_Imp174(object p0, object p1, ref System.Collections.Generic.Dictionary<int, int> p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4026,7 +4048,7 @@
 #endif
 		}
         
-		public int __Gen_Delegate_Imp174(object p0, PackType p1)
+		public int __Gen_Delegate_Imp175(object p0, PackType p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4049,7 +4071,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp175(object p0, PackType p1, out System.Collections.Generic.List<int> p2)
+		public bool __Gen_Delegate_Imp176(object p0, PackType p1, out System.Collections.Generic.List<int> p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4073,7 +4095,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp176(object p0, PackType p1, ref System.Collections.Generic.List<Snxxz.UI.VirtualPackItem> p2, object p3)
+		public void __Gen_Delegate_Imp177(object p0, PackType p1, ref System.Collections.Generic.List<Snxxz.UI.VirtualPackItem> p2, object p3)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4099,7 +4121,7 @@
 #endif
 		}
         
-		public Snxxz.UI.JadeDynastyBossModel __Gen_Delegate_Imp177(object p0)
+		public Snxxz.UI.JadeDynastyBossModel __Gen_Delegate_Imp178(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4121,7 +4143,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp178(object p0, System.DateTime p1, object p2)
+		public void __Gen_Delegate_Imp179(object p0, System.DateTime p1, object p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4145,7 +4167,7 @@
 #endif
 		}
         
-		public ulong __Gen_Delegate_Imp179(object p0)
+		public ulong __Gen_Delegate_Imp180(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4167,7 +4189,7 @@
 #endif
 		}
         
-		public Snxxz.UI.MapModel __Gen_Delegate_Imp180(object p0)
+		public Snxxz.UI.MapModel __Gen_Delegate_Imp181(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4189,7 +4211,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp181(object p0, int p1, out System.Collections.Generic.List<Snxxz.UI.Item> p2)
+		public bool __Gen_Delegate_Imp182(object p0, int p1, out System.Collections.Generic.List<Snxxz.UI.Item> p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4213,7 +4235,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp182(object p0, int p1, out Snxxz.UI.JadeDynastyBossCondition p2)
+		public bool __Gen_Delegate_Imp183(object p0, int p1, out Snxxz.UI.JadeDynastyBossCondition p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4237,7 +4259,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp183(object p0, int p1, out Snxxz.UI.JadeDynastyBossLine p2)
+		public bool __Gen_Delegate_Imp184(object p0, int p1, out Snxxz.UI.JadeDynastyBossLine p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4261,7 +4283,7 @@
 #endif
 		}
         
-		public int __Gen_Delegate_Imp184(Snxxz.UI.JadeDynastyBossData p0, Snxxz.UI.JadeDynastyBossData p1)
+		public int __Gen_Delegate_Imp185(Snxxz.UI.JadeDynastyBossData p0, Snxxz.UI.JadeDynastyBossData p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4284,7 +4306,7 @@
 #endif
 		}
         
-		public System.Collections.IEnumerator __Gen_Delegate_Imp185(object p0, float p1)
+		public System.Collections.IEnumerator __Gen_Delegate_Imp186(object p0, float p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4307,7 +4329,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp186(object p0, Snxxz.UI.Item p1)
+		public bool __Gen_Delegate_Imp187(object p0, Snxxz.UI.Item p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4330,7 +4352,215 @@
 #endif
 		}
         
-		public Snxxz.UI.KingTreasureModel __Gen_Delegate_Imp187(object p0)
+		public int __Gen_Delegate_Imp188(object p0, Snxxz.UI.FindPreciousModel.BossKillRecord p1, Snxxz.UI.FindPreciousModel.BossKillRecord p2)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                translator.Push(L, p1);
+                translator.Push(L, p2);
+                
+                PCall(L, 3, 1, errFunc);
+                
+                
+                int __gen_ret = LuaAPI.xlua_tointeger(L, errFunc + 1);
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public Snxxz.UI.JadeDynastyDecomposeModel __Gen_Delegate_Imp189(object p0)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                
+                PCall(L, 1, 1, errFunc);
+                
+                
+                Snxxz.UI.JadeDynastyDecomposeModel __gen_ret = (Snxxz.UI.JadeDynastyDecomposeModel)translator.GetObject(L, errFunc + 1, typeof(Snxxz.UI.JadeDynastyDecomposeModel));
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public Snxxz.UI.JadeDynastySkillModel __Gen_Delegate_Imp190(object p0)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                
+                PCall(L, 1, 1, errFunc);
+                
+                
+                Snxxz.UI.JadeDynastySkillModel __gen_ret = (Snxxz.UI.JadeDynastySkillModel)translator.GetObject(L, errFunc + 1, typeof(Snxxz.UI.JadeDynastySkillModel));
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public UnityEngine.Transform __Gen_Delegate_Imp191(object p0)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                
+                PCall(L, 1, 1, errFunc);
+                
+                
+                UnityEngine.Transform __gen_ret = (UnityEngine.Transform)translator.GetObject(L, errFunc + 1, typeof(UnityEngine.Transform));
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public Snxxz.UI.JadeDynastySkillState __Gen_Delegate_Imp192(object p0, int p1)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                LuaAPI.xlua_pushinteger(L, p1);
+                
+                PCall(L, 2, 1, errFunc);
+                
+                
+                Snxxz.UI.JadeDynastySkillState __gen_ret;translator.Get(L, errFunc + 1, out __gen_ret);
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public bool __Gen_Delegate_Imp193(object p0, int p1, out Snxxz.UI.JadeDynastySkillCondition p2)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                LuaAPI.xlua_pushinteger(L, p1);
+                
+                PCall(L, 2, 2, errFunc);
+                
+                translator.Get(L, errFunc + 2, out p2);
+                
+                bool __gen_ret = LuaAPI.lua_toboolean(L, errFunc + 1);
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public bool __Gen_Delegate_Imp194(object p0, int p1, out UnityEngine.Sprite[] p2)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                LuaAPI.xlua_pushinteger(L, p1);
+                
+                PCall(L, 2, 2, errFunc);
+                
+                p2 = (UnityEngine.Sprite[])translator.GetObject(L, errFunc + 2, typeof(UnityEngine.Sprite[]));
+                
+                bool __gen_ret = LuaAPI.lua_toboolean(L, errFunc + 1);
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public void __Gen_Delegate_Imp195(object p0, Snxxz.UI.ActivateShow.ActivateFunc p1, int p2)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                translator.Push(L, p1);
+                LuaAPI.xlua_pushinteger(L, p2);
+                
+                PCall(L, 3, 0, errFunc);
+                
+                
+                
+                LuaAPI.lua_settop(L, errFunc - 1);
+                
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public void __Gen_Delegate_Imp196(object p0, Snxxz.UI.ActivateShow.ActivateFunc p1)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.PushAny(L, p0);
+                translator.Push(L, p1);
+                
+                PCall(L, 2, 0, errFunc);
+                
+                
+                
+                LuaAPI.lua_settop(L, errFunc - 1);
+                
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public Snxxz.UI.KingTreasureModel __Gen_Delegate_Imp197(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4352,7 +4582,7 @@
 #endif
 		}
         
-		public TableConfig.KingTreasureItemConfig __Gen_Delegate_Imp188(object p0)
+		public TableConfig.KingTreasureItemConfig __Gen_Delegate_Imp198(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4374,7 +4604,7 @@
 #endif
 		}
         
-		public string __Gen_Delegate_Imp189(object p0, object p1, int p2)
+		public string __Gen_Delegate_Imp199(object p0, object p1, int p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4398,7 +4628,7 @@
 #endif
 		}
         
-		public Snxxz.UI.KingTreasureShowModel __Gen_Delegate_Imp190(object p0)
+		public Snxxz.UI.KingTreasureShowModel __Gen_Delegate_Imp200(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4420,7 +4650,7 @@
 #endif
 		}
         
-		public Snxxz.UI.CrossServerOneVsOne __Gen_Delegate_Imp191(object p0)
+		public Snxxz.UI.CrossServerOneVsOne __Gen_Delegate_Imp201(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4442,7 +4672,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp192(object p0, Snxxz.UI.CrossServerOneVsOne p1)
+		public void __Gen_Delegate_Imp202(object p0, Snxxz.UI.CrossServerOneVsOne p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4465,7 +4695,7 @@
 #endif
 		}
         
-		public Snxxz.UI.LoginModel __Gen_Delegate_Imp193(object p0)
+		public Snxxz.UI.LoginModel __Gen_Delegate_Imp203(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4487,7 +4717,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp194(object p0, object p1, object p2, int p3, bool p4)
+		public void __Gen_Delegate_Imp204(object p0, object p1, object p2, int p3, bool p4)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4513,7 +4743,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp195(object p0, byte p1)
+		public void __Gen_Delegate_Imp205(object p0, byte p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4536,7 +4766,7 @@
 #endif
 		}
         
-		public PlayerTaskDatas __Gen_Delegate_Imp196(object p0)
+		public PlayerTaskDatas __Gen_Delegate_Imp206(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4558,7 +4788,7 @@
 #endif
 		}
         
-		public System.Collections.IEnumerator __Gen_Delegate_Imp197(object p0, int p1, int p2)
+		public System.Collections.IEnumerator __Gen_Delegate_Imp207(object p0, int p1, int p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4582,7 +4812,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp198(object p0, TreasureCategory p1)
+		public void __Gen_Delegate_Imp208(object p0, TreasureCategory p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4605,7 +4835,7 @@
 #endif
 		}
         
-		public Snxxz.UI.VipModel __Gen_Delegate_Imp199(object p0)
+		public Snxxz.UI.VipModel __Gen_Delegate_Imp209(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4627,7 +4857,7 @@
 #endif
 		}
         
-		public Snxxz.UI.MarketModel __Gen_Delegate_Imp200(object p0)
+		public Snxxz.UI.MarketModel __Gen_Delegate_Imp210(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4649,7 +4879,7 @@
 #endif
 		}
         
-		public Snxxz.UI.FlashSaleModel __Gen_Delegate_Imp201(object p0)
+		public Snxxz.UI.FlashSaleModel __Gen_Delegate_Imp211(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4671,7 +4901,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp202(object p0, Snxxz.UI.OperationFlashSale.FlashSaleGift p1)
+		public void __Gen_Delegate_Imp212(object p0, Snxxz.UI.OperationFlashSale.FlashSaleGift p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4694,7 +4924,7 @@
 #endif
 		}
         
-		public Snxxz.UI.MysticalPurchaseModel __Gen_Delegate_Imp203(object p0)
+		public Snxxz.UI.MysticalPurchaseModel __Gen_Delegate_Imp213(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4716,7 +4946,7 @@
 #endif
 		}
         
-		public Snxxz.UI.ImpactRankModel __Gen_Delegate_Imp204(object p0)
+		public Snxxz.UI.ImpactRankModel __Gen_Delegate_Imp214(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4738,7 +4968,7 @@
 #endif
 		}
         
-		public Snxxz.UI.OSRedEnvelopeModel __Gen_Delegate_Imp205(object p0)
+		public Snxxz.UI.OSRedEnvelopeModel __Gen_Delegate_Imp215(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4760,7 +4990,7 @@
 #endif
 		}
         
-		public Snxxz.UI.FairyLeagueModel __Gen_Delegate_Imp206(object p0)
+		public Snxxz.UI.FairyLeagueModel __Gen_Delegate_Imp216(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4782,7 +5012,7 @@
 #endif
 		}
         
-		public Snxxz.UI.FairyGrabBossModel __Gen_Delegate_Imp207(object p0)
+		public Snxxz.UI.FairyGrabBossModel __Gen_Delegate_Imp217(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4804,7 +5034,7 @@
 #endif
 		}
         
-		public Snxxz.UI.OSGiftModel __Gen_Delegate_Imp208(object p0)
+		public Snxxz.UI.OSGiftModel __Gen_Delegate_Imp218(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4826,7 +5056,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp209(object p0, Snxxz.UI.Operation p1)
+		public void __Gen_Delegate_Imp219(object p0, Snxxz.UI.Operation p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4849,7 +5079,7 @@
 #endif
 		}
         
-		public OpenServiceAchievementModel __Gen_Delegate_Imp210(object p0)
+		public OpenServiceAchievementModel __Gen_Delegate_Imp220(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4871,7 +5101,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp211(object p0, int p1, object p2, int p3, int p4)
+		public void __Gen_Delegate_Imp221(object p0, int p1, object p2, int p3, int p4)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4897,7 +5127,120 @@
 #endif
 		}
         
-		public Snxxz.UI.RealmModel __Gen_Delegate_Imp212(object p0)
+		public Snxxz.UI.ActivateShow.ActivateFunc __Gen_Delegate_Imp222()
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                
+                PCall(L, 0, 1, errFunc);
+                
+                
+                Snxxz.UI.ActivateShow.ActivateFunc __gen_ret;translator.Get(L, errFunc + 1, out __gen_ret);
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public void __Gen_Delegate_Imp223(Snxxz.UI.ActivateShow.ActivateFunc p0)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                ObjectTranslator translator = luaEnv.translator;
+                translator.Push(L, p0);
+                
+                PCall(L, 1, 0, errFunc);
+                
+                
+                
+                LuaAPI.lua_settop(L, errFunc - 1);
+                
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public string __Gen_Delegate_Imp224()
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                
+                
+                PCall(L, 0, 1, errFunc);
+                
+                
+                string __gen_ret = LuaAPI.lua_tostring(L, errFunc + 1);
+                LuaAPI.lua_settop(L, errFunc - 1);
+                return  __gen_ret;
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public void __Gen_Delegate_Imp225(int p0, int p1, int p2)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                
+                LuaAPI.xlua_pushinteger(L, p0);
+                LuaAPI.xlua_pushinteger(L, p1);
+                LuaAPI.xlua_pushinteger(L, p2);
+                
+                PCall(L, 3, 0, errFunc);
+                
+                
+                
+                LuaAPI.lua_settop(L, errFunc - 1);
+                
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public void __Gen_Delegate_Imp226(int p0, int p1, int p2, int p3)
+		{
+#if THREAD_SAFE || HOTFIX_ENABLE
+            lock (luaEnv.luaEnvLock)
+            {
+#endif
+                RealStatePtr L = luaEnv.rawL;
+                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
+                
+                LuaAPI.xlua_pushinteger(L, p0);
+                LuaAPI.xlua_pushinteger(L, p1);
+                LuaAPI.xlua_pushinteger(L, p2);
+                LuaAPI.xlua_pushinteger(L, p3);
+                
+                PCall(L, 4, 0, errFunc);
+                
+                
+                
+                LuaAPI.lua_settop(L, errFunc - 1);
+                
+#if THREAD_SAFE || HOTFIX_ENABLE
+            }
+#endif
+		}
+        
+		public Snxxz.UI.RealmModel __Gen_Delegate_Imp227(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4919,7 +5262,7 @@
 #endif
 		}
         
-		public Snxxz.UI.MagicianModel __Gen_Delegate_Imp213()
+		public Snxxz.UI.MagicianModel __Gen_Delegate_Imp228()
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4940,7 +5283,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp214(uint p0, out System.Collections.Generic.Dictionary<int, int> p1)
+		public bool __Gen_Delegate_Imp229(uint p0, out System.Collections.Generic.Dictionary<int, int> p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4963,7 +5306,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp215(uint p0, int p1, out int p2)
+		public bool __Gen_Delegate_Imp230(uint p0, int p1, out int p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -4987,7 +5330,7 @@
 #endif
 		}
         
-		public byte __Gen_Delegate_Imp216(int p0, int p1)
+		public byte __Gen_Delegate_Imp231(int p0, int p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5010,7 +5353,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp217(int p0, int p1, bool p2)
+		public void __Gen_Delegate_Imp232(int p0, int p1, bool p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5034,7 +5377,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp218(Snxxz.UI.EquipShowSwitch.EquipShowSwitchType p0, uint p1)
+		public bool __Gen_Delegate_Imp233(Snxxz.UI.EquipShowSwitch.EquipShowSwitchType p0, uint p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5057,7 +5400,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp219(uint p0)
+		public void __Gen_Delegate_Imp234(uint p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5079,7 +5422,7 @@
 #endif
 		}
         
-		public System.Collections.Generic.Dictionary<int, string> __Gen_Delegate_Imp220(object p0)
+		public System.Collections.Generic.Dictionary<int, string> __Gen_Delegate_Imp235(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5101,7 +5444,7 @@
 #endif
 		}
         
-		public int[] __Gen_Delegate_Imp221(object p0)
+		public int[] __Gen_Delegate_Imp236(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5123,7 +5466,7 @@
 #endif
 		}
         
-		public int[] __Gen_Delegate_Imp222(object p0, int p1)
+		public int[] __Gen_Delegate_Imp237(object p0, int p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5146,7 +5489,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp223(object p0, int p1, int p2, int p3, out int p4)
+		public bool __Gen_Delegate_Imp238(object p0, int p1, int p2, int p3, out int p4)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5172,7 +5515,7 @@
 #endif
 		}
         
-		public Snxxz.UI.GodWeaponInfo __Gen_Delegate_Imp224(object p0, int p1)
+		public Snxxz.UI.GodWeaponInfo __Gen_Delegate_Imp239(object p0, int p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5195,7 +5538,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp225(object p0, int p1, out System.Collections.Generic.List<Snxxz.UI.GodWeaponCondition> p2)
+		public bool __Gen_Delegate_Imp240(object p0, int p1, out System.Collections.Generic.List<Snxxz.UI.GodWeaponCondition> p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5219,7 +5562,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp226(object p0, int p1, int p2, out int p3)
+		public bool __Gen_Delegate_Imp241(object p0, int p1, int p2, out int p3)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5244,7 +5587,7 @@
 #endif
 		}
         
-		public bool __Gen_Delegate_Imp227(object p0, int p1, out Snxxz.UI.AutoHammerCost p2)
+		public bool __Gen_Delegate_Imp242(object p0, int p1, out Snxxz.UI.AutoHammerCost p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5268,7 +5611,7 @@
 #endif
 		}
         
-		public System.Collections.Generic.Dictionary<int, int> __Gen_Delegate_Imp228(object p0, int p1, int p2)
+		public System.Collections.Generic.Dictionary<int, int> __Gen_Delegate_Imp243(object p0, int p1, int p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5292,7 +5635,7 @@
 #endif
 		}
         
-		public System.Collections.Generic.List<int> __Gen_Delegate_Imp229(object p0, int p1)
+		public System.Collections.Generic.List<int> __Gen_Delegate_Imp244(object p0, int p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5315,7 +5658,7 @@
 #endif
 		}
         
-		public string __Gen_Delegate_Imp230(object p0, int p1, int p2)
+		public string __Gen_Delegate_Imp245(object p0, int p1, int p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5339,7 +5682,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp231(object p0, object p1, object p2)
+		public void __Gen_Delegate_Imp246(object p0, object p1, object p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5363,54 +5706,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp232(object p0, Snxxz.UI.ActivateShow.ActivateFunc p1)
-		{
-#if THREAD_SAFE || HOTFIX_ENABLE
-            lock (luaEnv.luaEnvLock)
-            {
-#endif
-                RealStatePtr L = luaEnv.rawL;
-                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
-                ObjectTranslator translator = luaEnv.translator;
-                translator.PushAny(L, p0);
-                translator.Push(L, p1);
-                
-                PCall(L, 2, 0, errFunc);
-                
-                
-                
-                LuaAPI.lua_settop(L, errFunc - 1);
-                
-#if THREAD_SAFE || HOTFIX_ENABLE
-            }
-#endif
-		}
-        
-		public void __Gen_Delegate_Imp233(object p0, Snxxz.UI.ActivateShow.ActivateFunc p1, int p2)
-		{
-#if THREAD_SAFE || HOTFIX_ENABLE
-            lock (luaEnv.luaEnvLock)
-            {
-#endif
-                RealStatePtr L = luaEnv.rawL;
-                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
-                ObjectTranslator translator = luaEnv.translator;
-                translator.PushAny(L, p0);
-                translator.Push(L, p1);
-                LuaAPI.xlua_pushinteger(L, p2);
-                
-                PCall(L, 3, 0, errFunc);
-                
-                
-                
-                LuaAPI.lua_settop(L, errFunc - 1);
-                
-#if THREAD_SAFE || HOTFIX_ENABLE
-            }
-#endif
-		}
-        
-		public bool __Gen_Delegate_Imp234(object p0, int p1, out int p2, out int p3)
+		public bool __Gen_Delegate_Imp247(object p0, int p1, out int p2, out int p3)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5435,7 +5731,7 @@
 #endif
 		}
         
-		public Snxxz.UI.FuncSwitchModel __Gen_Delegate_Imp235(object p0)
+		public Snxxz.UI.FuncSwitchModel __Gen_Delegate_Imp248(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5457,7 +5753,7 @@
 #endif
 		}
         
-		public System.Collections.Generic.Dictionary<int, Snxxz.UI.FuncSwitchModel.FuncSwithData> __Gen_Delegate_Imp236(object p0)
+		public System.Collections.Generic.Dictionary<int, Snxxz.UI.FuncSwitchModel.FuncSwithData> __Gen_Delegate_Imp249(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5479,7 +5775,7 @@
 #endif
 		}
         
-		public Snxxz.UI.TestModel __Gen_Delegate_Imp237(object p0)
+		public Snxxz.UI.TestModel __Gen_Delegate_Imp250(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5501,7 +5797,7 @@
 #endif
 		}
         
-		public UIEffect __Gen_Delegate_Imp238(object p0)
+		public UIEffect __Gen_Delegate_Imp251(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5523,7 +5819,7 @@
 #endif
 		}
         
-		public Treasure3DConfig __Gen_Delegate_Imp239(object p0)
+		public Treasure3DConfig __Gen_Delegate_Imp252(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5545,7 +5841,7 @@
 #endif
 		}
         
-		public Snxxz.UI.AchievementModel __Gen_Delegate_Imp240(object p0)
+		public Snxxz.UI.AchievementModel __Gen_Delegate_Imp253(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5567,7 +5863,7 @@
 #endif
 		}
         
-		public UnityEngine.Vector3 __Gen_Delegate_Imp241(object p0, int p1)
+		public UnityEngine.Vector3 __Gen_Delegate_Imp254(object p0, int p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5590,7 +5886,7 @@
 #endif
 		}
         
-		public UnityEngine.Vector3 __Gen_Delegate_Imp242(object p0, UnityEngine.Vector3 p1)
+		public UnityEngine.Vector3 __Gen_Delegate_Imp255(object p0, UnityEngine.Vector3 p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5613,7 +5909,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp243(object p0, bool p1, bool p2)
+		public void __Gen_Delegate_Imp256(object p0, bool p1, bool p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5637,7 +5933,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp244(object p0, Snxxz.UI.TreasureAnimation.TreasureShowStep p1)
+		public void __Gen_Delegate_Imp257(object p0, Snxxz.UI.TreasureAnimation.TreasureShowStep p1)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5660,7 +5956,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp245(object p0, bool p1, int p2)
+		public void __Gen_Delegate_Imp258(object p0, bool p1, int p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5684,29 +5980,7 @@
 #endif
 		}
         
-		public UnityEngine.Transform __Gen_Delegate_Imp246(object p0)
-		{
-#if THREAD_SAFE || HOTFIX_ENABLE
-            lock (luaEnv.luaEnvLock)
-            {
-#endif
-                RealStatePtr L = luaEnv.rawL;
-                int errFunc = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
-                ObjectTranslator translator = luaEnv.translator;
-                translator.PushAny(L, p0);
-                
-                PCall(L, 1, 1, errFunc);
-                
-                
-                UnityEngine.Transform __gen_ret = (UnityEngine.Transform)translator.GetObject(L, errFunc + 1, typeof(UnityEngine.Transform));
-                LuaAPI.lua_settop(L, errFunc - 1);
-                return  __gen_ret;
-#if THREAD_SAFE || HOTFIX_ENABLE
-            }
-#endif
-		}
-        
-		public UnityEngine.Vector3 __Gen_Delegate_Imp247(object p0)
+		public UnityEngine.Vector3 __Gen_Delegate_Imp259(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5728,7 +6002,7 @@
 #endif
 		}
         
-		public Treasure3DConfig.TreasureParam __Gen_Delegate_Imp248(object p0)
+		public Treasure3DConfig.TreasureParam __Gen_Delegate_Imp260(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5750,7 +6024,7 @@
 #endif
 		}
         
-		public Snxxz.UI.UI3DTreasureSelectStage __Gen_Delegate_Imp249()
+		public Snxxz.UI.UI3DTreasureSelectStage __Gen_Delegate_Imp261()
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5771,7 +6045,7 @@
 #endif
 		}
         
-		public TreasureCategory __Gen_Delegate_Imp250(object p0)
+		public TreasureCategory __Gen_Delegate_Imp262(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5793,7 +6067,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp251(object p0, bool p1, TreasureCategory p2)
+		public void __Gen_Delegate_Imp263(object p0, bool p1, TreasureCategory p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5817,7 +6091,7 @@
 #endif
 		}
         
-		public System.Collections.IEnumerator __Gen_Delegate_Imp252(object p0, TreasureCategory p1, object p2)
+		public System.Collections.IEnumerator __Gen_Delegate_Imp264(object p0, TreasureCategory p1, object p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5841,7 +6115,7 @@
 #endif
 		}
         
-		public void __Gen_Delegate_Imp253(object p0, TreasureCategory p1, bool p2)
+		public void __Gen_Delegate_Imp265(object p0, TreasureCategory p1, bool p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5865,7 +6139,7 @@
 #endif
 		}
         
-		public System.Collections.IEnumerator __Gen_Delegate_Imp254(object p0, object p1, float p2)
+		public System.Collections.IEnumerator __Gen_Delegate_Imp266(object p0, object p1, float p2)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
@@ -5889,7 +6163,7 @@
 #endif
 		}
         
-		public Snxxz.UI.SignInModel __Gen_Delegate_Imp255(object p0)
+		public Snxxz.UI.SignInModel __Gen_Delegate_Imp267(object p0)
 		{
 #if THREAD_SAFE || HOTFIX_ENABLE
             lock (luaEnv.luaEnvLock)
diff --git a/Lua/Gen/Resources.meta b/Lua/Gen/Resources.meta
deleted file mode 100644
index 5b26f40..0000000
--- a/Lua/Gen/Resources.meta
+++ /dev/null
@@ -1,9 +0,0 @@
-fileFormatVersion: 2
-guid: a545fb3dcf719304fa74180c10219375
-folderAsset: yes
-timeCreated: 1542357825
-licenseType: Pro
-DefaultImporter:
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 
diff --git a/Lua/Gen/ServerListCenterWrap.cs b/Lua/Gen/ServerListCenterWrap.cs
index 6df3196..f070bf9 100644
--- a/Lua/Gen/ServerListCenterWrap.cs
+++ b/Lua/Gen/ServerListCenterWrap.cs
@@ -21,12 +21,14 @@
         {
 			ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
 			System.Type type = typeof(ServerListCenter);
-			Utils.BeginObjectRegister(type, L, translator, 0, 10, 6, 3);
+			Utils.BeginObjectRegister(type, L, translator, 0, 12, 6, 3);
 			
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "GetServerData", _m_GetServerData);
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "RequestJumpUrl", _m_RequestJumpUrl);
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "RequestServerList", _m_RequestServerList);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "SetServerlistCommon", _m_SetServerlistCommon);
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "RequestServerListPlayer", _m_RequestServerListPlayer);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "SetServerListPlayer", _m_SetServerListPlayer);
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "TryGetServerGroup", _m_TryGetServerGroup);
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "ParseServerLocalServerList", _m_ParseServerLocalServerList);
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "GetAllServerGroup", _m_GetAllServerGroup);
@@ -179,6 +181,34 @@
         }
         
         [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_SetServerlistCommon(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                ServerListCenter gen_to_be_invoked = (ServerListCenter)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    ServerInfoCommon _common = (ServerInfoCommon)translator.GetObject(L, 2, typeof(ServerInfoCommon));
+                    
+                    gen_to_be_invoked.SetServerlistCommon( _common );
+                    
+                    
+                    
+                    return 0;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
         static int _m_RequestServerListPlayer(RealStatePtr L)
         {
 		    try {
@@ -207,6 +237,34 @@
         }
         
         [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_SetServerListPlayer(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                ServerListCenter gen_to_be_invoked = (ServerListCenter)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    ServerInfoPlayer _serverInfoPlayer = (ServerInfoPlayer)translator.GetObject(L, 2, typeof(ServerInfoPlayer));
+                    
+                    gen_to_be_invoked.SetServerListPlayer( _serverInfoPlayer );
+                    
+                    
+                    
+                    return 0;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
         static int _m_TryGetServerGroup(RealStatePtr L)
         {
 		    try {
diff --git a/Lua/Gen/SnxxzUIJadeDynastyBossModelWrap.cs b/Lua/Gen/SnxxzUIJadeDynastyBossModelWrap.cs
index 0585b1c..39fe90c 100644
--- a/Lua/Gen/SnxxzUIJadeDynastyBossModelWrap.cs
+++ b/Lua/Gen/SnxxzUIJadeDynastyBossModelWrap.cs
@@ -21,7 +21,7 @@
         {
 			ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
 			System.Type type = typeof(Snxxz.UI.JadeDynastyBossModel);
-			Utils.BeginObjectRegister(type, L, translator, 0, 20, 7, 2);
+			Utils.BeginObjectRegister(type, L, translator, 0, 21, 7, 2);
 			
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "Init", _m_Init);
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "OnBeforePlayerDataInitialize", _m_OnBeforePlayerDataInitialize);
@@ -30,6 +30,7 @@
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "UnInit", _m_UnInit);
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "IsJadeDynastyBoss", _m_IsJadeDynastyBoss);
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "IsBossUnLocked", _m_IsBossUnLocked);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "IsAssistState", _m_IsAssistState);
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "GetJadeDynastyBosses", _m_GetJadeDynastyBosses);
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "GetParticipantCount", _m_GetParticipantCount);
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "GetLatestUnLockBoss", _m_GetLatestUnLockBoss);
@@ -301,6 +302,34 @@
         }
         
         [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_IsAssistState(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastyBossModel gen_to_be_invoked = (Snxxz.UI.JadeDynastyBossModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    
+                        bool gen_ret = gen_to_be_invoked.IsAssistState(  );
+                        LuaAPI.lua_pushboolean(L, gen_ret);
+                    
+                    
+                    
+                    return 1;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
         static int _m_GetJadeDynastyBosses(RealStatePtr L)
         {
 		    try {
diff --git a/Lua/Gen/SnxxzUIJadeDynastySkillModelWrap.cs b/Lua/Gen/SnxxzUIJadeDynastySkillModelWrap.cs
new file mode 100644
index 0000000..79163fe
--- /dev/null
+++ b/Lua/Gen/SnxxzUIJadeDynastySkillModelWrap.cs
@@ -0,0 +1,483 @@
+锘�#if USE_UNI_LUA
+using LuaAPI = UniLua.Lua;
+using RealStatePtr = UniLua.ILuaState;
+using LuaCSFunction = UniLua.CSharpFunctionDelegate;
+#else
+using LuaAPI = XLua.LuaDLL.Lua;
+using RealStatePtr = System.IntPtr;
+using LuaCSFunction = XLua.LuaDLL.lua_CSFunction;
+#endif
+
+using XLua;
+using System.Collections.Generic;
+
+
+namespace XLua.CSObjectWrap
+{
+    using Utils = XLua.Utils;
+    public class SnxxzUIJadeDynastySkillModelWrap 
+    {
+        public static void __Register(RealStatePtr L)
+        {
+			ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			System.Type type = typeof(Snxxz.UI.JadeDynastySkillModel);
+			Utils.BeginObjectRegister(type, L, translator, 0, 11, 3, 1);
+			
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "Init", _m_Init);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "OnBeforePlayerDataInitialize", _m_OnBeforePlayerDataInitialize);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "OnPlayerLoginOk", _m_OnPlayerLoginOk);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "UnInit", _m_UnInit);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "IsSatisfyEquipLevel", _m_IsSatisfyEquipLevel);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "GetSkillState", _m_GetSkillState);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "TryGetSkillCondition", _m_TryGetSkillCondition);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "TryGetSkillFrames", _m_TryGetSkillFrames);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "OnReceivePackage", _m_OnReceivePackage);
+			
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "skillRefresh", _e_skillRefresh);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "selectSkillRefresh", _e_selectSkillRefresh);
+			
+			Utils.RegisterFunc(L, Utils.GETTER_IDX, "mySkills", _g_get_mySkills);
+            Utils.RegisterFunc(L, Utils.GETTER_IDX, "selectSkill", _g_get_selectSkill);
+            Utils.RegisterFunc(L, Utils.GETTER_IDX, "redpoint", _g_get_redpoint);
+            
+			Utils.RegisterFunc(L, Utils.SETTER_IDX, "selectSkill", _s_set_selectSkill);
+            
+			
+			Utils.EndObjectRegister(type, L, translator, null, null,
+			    null, null, null);
+
+		    Utils.BeginClassRegister(type, L, __CreateInstance, 1, 0, 0);
+			
+			
+            
+			
+			
+			
+			Utils.EndClassRegister(type, L, translator);
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int __CreateInstance(RealStatePtr L)
+        {
+            
+			try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+				if(LuaAPI.lua_gettop(L) == 1)
+				{
+					
+					Snxxz.UI.JadeDynastySkillModel gen_ret = new Snxxz.UI.JadeDynastySkillModel();
+					translator.Push(L, gen_ret);
+                    
+					return 1;
+				}
+				
+			}
+			catch(System.Exception gen_e) {
+				return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+			}
+            return LuaAPI.luaL_error(L, "invalid arguments to Snxxz.UI.JadeDynastySkillModel constructor!");
+            
+        }
+        
+		
+        
+		
+        
+        
+        
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_Init(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastySkillModel gen_to_be_invoked = (Snxxz.UI.JadeDynastySkillModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    
+                    gen_to_be_invoked.Init(  );
+                    
+                    
+                    
+                    return 0;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_OnBeforePlayerDataInitialize(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastySkillModel gen_to_be_invoked = (Snxxz.UI.JadeDynastySkillModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    
+                    gen_to_be_invoked.OnBeforePlayerDataInitialize(  );
+                    
+                    
+                    
+                    return 0;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_OnPlayerLoginOk(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastySkillModel gen_to_be_invoked = (Snxxz.UI.JadeDynastySkillModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    
+                    gen_to_be_invoked.OnPlayerLoginOk(  );
+                    
+                    
+                    
+                    return 0;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_UnInit(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastySkillModel gen_to_be_invoked = (Snxxz.UI.JadeDynastySkillModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    
+                    gen_to_be_invoked.UnInit(  );
+                    
+                    
+                    
+                    return 0;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_IsSatisfyEquipLevel(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastySkillModel gen_to_be_invoked = (Snxxz.UI.JadeDynastySkillModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    int _equipPlace = LuaAPI.xlua_tointeger(L, 2);
+                    int _level = LuaAPI.xlua_tointeger(L, 3);
+                    
+                        bool gen_ret = gen_to_be_invoked.IsSatisfyEquipLevel( _equipPlace, _level );
+                        LuaAPI.lua_pushboolean(L, gen_ret);
+                    
+                    
+                    
+                    return 1;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_GetSkillState(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastySkillModel gen_to_be_invoked = (Snxxz.UI.JadeDynastySkillModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    int _skillId = LuaAPI.xlua_tointeger(L, 2);
+                    
+                        Snxxz.UI.JadeDynastySkillState gen_ret = gen_to_be_invoked.GetSkillState( _skillId );
+                        translator.Push(L, gen_ret);
+                    
+                    
+                    
+                    return 1;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_TryGetSkillCondition(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastySkillModel gen_to_be_invoked = (Snxxz.UI.JadeDynastySkillModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    int _skillId = LuaAPI.xlua_tointeger(L, 2);
+                    Snxxz.UI.JadeDynastySkillCondition _condition;
+                    
+                        bool gen_ret = gen_to_be_invoked.TryGetSkillCondition( _skillId, out _condition );
+                        LuaAPI.lua_pushboolean(L, gen_ret);
+                    translator.Push(L, _condition);
+                        
+                    
+                    
+                    
+                    return 2;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_TryGetSkillFrames(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastySkillModel gen_to_be_invoked = (Snxxz.UI.JadeDynastySkillModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    int _skillId = LuaAPI.xlua_tointeger(L, 2);
+                    UnityEngine.Sprite[] __sprites;
+                    
+                        bool gen_ret = gen_to_be_invoked.TryGetSkillFrames( _skillId, out __sprites );
+                        LuaAPI.lua_pushboolean(L, gen_ret);
+                    translator.Push(L, __sprites);
+                        
+                    
+                    
+                    
+                    return 2;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_OnReceivePackage(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.JadeDynastySkillModel gen_to_be_invoked = (Snxxz.UI.JadeDynastySkillModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    H0310_tagRoleSkillChange _package = (H0310_tagRoleSkillChange)translator.GetObject(L, 2, typeof(H0310_tagRoleSkillChange));
+                    
+                    gen_to_be_invoked.OnReceivePackage( _package );
+                    
+                    
+                    
+                    return 0;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        
+        
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _g_get_mySkills(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			
+                Snxxz.UI.JadeDynastySkillModel gen_to_be_invoked = (Snxxz.UI.JadeDynastySkillModel)translator.FastGetCSObj(L, 1);
+                translator.Push(L, gen_to_be_invoked.mySkills);
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            return 1;
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _g_get_selectSkill(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			
+                Snxxz.UI.JadeDynastySkillModel gen_to_be_invoked = (Snxxz.UI.JadeDynastySkillModel)translator.FastGetCSObj(L, 1);
+                LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.selectSkill);
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            return 1;
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _g_get_redpoint(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			
+                Snxxz.UI.JadeDynastySkillModel gen_to_be_invoked = (Snxxz.UI.JadeDynastySkillModel)translator.FastGetCSObj(L, 1);
+                translator.Push(L, gen_to_be_invoked.redpoint);
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            return 1;
+        }
+        
+        
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _s_set_selectSkill(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			
+                Snxxz.UI.JadeDynastySkillModel gen_to_be_invoked = (Snxxz.UI.JadeDynastySkillModel)translator.FastGetCSObj(L, 1);
+                gen_to_be_invoked.selectSkill = LuaAPI.xlua_tointeger(L, 2);
+            
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            return 0;
+        }
+        
+		
+		
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _e_skillRefresh(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			    int gen_param_count = LuaAPI.lua_gettop(L);
+			Snxxz.UI.JadeDynastySkillModel gen_to_be_invoked = (Snxxz.UI.JadeDynastySkillModel)translator.FastGetCSObj(L, 1);
+                System.Action<int> gen_delegate = translator.GetDelegate<System.Action<int>>(L, 3);
+                if (gen_delegate == null) {
+                    return LuaAPI.luaL_error(L, "#3 need System.Action<int>!");
+                }
+				
+				if (gen_param_count == 3)
+				{
+					
+					if (LuaAPI.xlua_is_eq_str(L, 2, "+")) {
+						gen_to_be_invoked.skillRefresh += gen_delegate;
+						return 0;
+					} 
+					
+					
+					if (LuaAPI.xlua_is_eq_str(L, 2, "-")) {
+						gen_to_be_invoked.skillRefresh -= gen_delegate;
+						return 0;
+					} 
+					
+				}
+			} catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+			LuaAPI.luaL_error(L, "invalid arguments to Snxxz.UI.JadeDynastySkillModel.skillRefresh!");
+            return 0;
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _e_selectSkillRefresh(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			    int gen_param_count = LuaAPI.lua_gettop(L);
+			Snxxz.UI.JadeDynastySkillModel gen_to_be_invoked = (Snxxz.UI.JadeDynastySkillModel)translator.FastGetCSObj(L, 1);
+                System.Action<int> gen_delegate = translator.GetDelegate<System.Action<int>>(L, 3);
+                if (gen_delegate == null) {
+                    return LuaAPI.luaL_error(L, "#3 need System.Action<int>!");
+                }
+				
+				if (gen_param_count == 3)
+				{
+					
+					if (LuaAPI.xlua_is_eq_str(L, 2, "+")) {
+						gen_to_be_invoked.selectSkillRefresh += gen_delegate;
+						return 0;
+					} 
+					
+					
+					if (LuaAPI.xlua_is_eq_str(L, 2, "-")) {
+						gen_to_be_invoked.selectSkillRefresh -= gen_delegate;
+						return 0;
+					} 
+					
+				}
+			} catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+			LuaAPI.luaL_error(L, "invalid arguments to Snxxz.UI.JadeDynastySkillModel.selectSkillRefresh!");
+            return 0;
+        }
+        
+		
+		
+    }
+}
diff --git a/Lua/Gen/SnxxzUIJadeDynastySkillModelWrap.cs.meta b/Lua/Gen/SnxxzUIJadeDynastySkillModelWrap.cs.meta
new file mode 100644
index 0000000..0b59e6a
--- /dev/null
+++ b/Lua/Gen/SnxxzUIJadeDynastySkillModelWrap.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: aaf543a659c2c984a9809b27100037e9
+timeCreated: 1548250966
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Lua/Gen/SnxxzUIRankModelWrap.cs b/Lua/Gen/SnxxzUIRankModelWrap.cs
index 8045071..ddbf6ea 100644
--- a/Lua/Gen/SnxxzUIRankModelWrap.cs
+++ b/Lua/Gen/SnxxzUIRankModelWrap.cs
@@ -21,16 +21,20 @@
         {
 			ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
 			System.Type type = typeof(Snxxz.UI.RankModel);
-			Utils.BeginObjectRegister(type, L, translator, 0, 2, 2, 1);
+			Utils.BeginObjectRegister(type, L, translator, 0, 4, 3, 2);
 			
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "Init", _m_Init);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "OnPlayerLoginOk", _m_OnPlayerLoginOk);
 			Utils.RegisterFunc(L, Utils.METHOD_IDX, "UnInit", _m_UnInit);
+			Utils.RegisterFunc(L, Utils.METHOD_IDX, "SendBegRank", _m_SendBegRank);
 			
 			
 			Utils.RegisterFunc(L, Utils.GETTER_IDX, "rankType", _g_get_rankType);
             Utils.RegisterFunc(L, Utils.GETTER_IDX, "rankList", _g_get_rankList);
+            Utils.RegisterFunc(L, Utils.GETTER_IDX, "jumpRankType", _g_get_jumpRankType);
             
 			Utils.RegisterFunc(L, Utils.SETTER_IDX, "rankType", _s_set_rankType);
+            Utils.RegisterFunc(L, Utils.SETTER_IDX, "jumpRankType", _s_set_jumpRankType);
             
 			
 			Utils.EndObjectRegister(type, L, translator, null, null,
@@ -104,6 +108,33 @@
         }
         
         [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_OnPlayerLoginOk(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.RankModel gen_to_be_invoked = (Snxxz.UI.RankModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    
+                    gen_to_be_invoked.OnPlayerLoginOk(  );
+                    
+                    
+                    
+                    return 0;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
         static int _m_UnInit(RealStatePtr L)
         {
 		    try {
@@ -118,6 +149,34 @@
                 {
                     
                     gen_to_be_invoked.UnInit(  );
+                    
+                    
+                    
+                    return 0;
+                }
+                
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            
+        }
+        
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _m_SendBegRank(RealStatePtr L)
+        {
+		    try {
+            
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+            
+            
+                Snxxz.UI.RankModel gen_to_be_invoked = (Snxxz.UI.RankModel)translator.FastGetCSObj(L, 1);
+            
+            
+                
+                {
+                    PlayerRankData.RankType _rankType;translator.Get(L, 2, out _rankType);
+                    
+                    gen_to_be_invoked.SendBegRank( _rankType );
                     
                     
                     
@@ -161,6 +220,20 @@
             return 1;
         }
         
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _g_get_jumpRankType(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			
+                Snxxz.UI.RankModel gen_to_be_invoked = (Snxxz.UI.RankModel)translator.FastGetCSObj(L, 1);
+                LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.jumpRankType);
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            return 1;
+        }
+        
         
         
         [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
@@ -178,6 +251,21 @@
             return 0;
         }
         
+        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
+        static int _s_set_jumpRankType(RealStatePtr L)
+        {
+		    try {
+                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
+			
+                Snxxz.UI.RankModel gen_to_be_invoked = (Snxxz.UI.RankModel)translator.FastGetCSObj(L, 1);
+                gen_to_be_invoked.jumpRankType = LuaAPI.xlua_tointeger(L, 2);
+            
+            } catch(System.Exception gen_e) {
+                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
+            }
+            return 0;
+        }
+        
 		
 		
 		
diff --git a/Lua/Gen/XLuaGenAutoRegister.cs b/Lua/Gen/XLuaGenAutoRegister.cs
index 3337d04..261a36d 100644
--- a/Lua/Gen/XLuaGenAutoRegister.cs
+++ b/Lua/Gen/XLuaGenAutoRegister.cs
@@ -453,6 +453,9 @@
             translator.DelayWrapLoader(typeof(Snxxz.UI.JadeDynastyBossModel), SnxxzUIJadeDynastyBossModelWrap.__Register);
         
         
+            translator.DelayWrapLoader(typeof(Snxxz.UI.JadeDynastySkillModel), SnxxzUIJadeDynastySkillModelWrap.__Register);
+        
+        
             translator.DelayWrapLoader(typeof(Snxxz.UI.FBHelpPointExchageModel), SnxxzUIFBHelpPointExchageModelWrap.__Register);
         
         
@@ -485,13 +488,13 @@
         
             translator.DelayWrapLoader(typeof(Snxxz.UI.KingTreasureShowModel), SnxxzUIKingTreasureShowModelWrap.__Register);
         
-        
-            translator.DelayWrapLoader(typeof(KnapSackEventMgr), KnapSackEventMgrWrap.__Register);
-        
         }
         
         static void wrapInit3(LuaEnv luaenv, ObjectTranslator translator)
         {
+        
+            translator.DelayWrapLoader(typeof(KnapSackEventMgr), KnapSackEventMgrWrap.__Register);
+        
         
             translator.DelayWrapLoader(typeof(Snxxz.UI.LoginModel), SnxxzUILoginModelWrap.__Register);
         
@@ -642,13 +645,13 @@
         
             translator.DelayWrapLoader(typeof(Snxxz.UI.RuneModel), SnxxzUIRuneModelWrap.__Register);
         
-        
-            translator.DelayWrapLoader(typeof(Snxxz.UI.RuneTowerModel), SnxxzUIRuneTowerModelWrap.__Register);
-        
         }
         
         static void wrapInit4(LuaEnv luaenv, ObjectTranslator translator)
         {
+        
+            translator.DelayWrapLoader(typeof(Snxxz.UI.RuneTowerModel), SnxxzUIRuneTowerModelWrap.__Register);
+        
         
             translator.DelayWrapLoader(typeof(QuickSetting), QuickSettingWrap.__Register);
         
@@ -799,14 +802,14 @@
         
             translator.DelayWrapLoader(typeof(Snxxz.UI.ModelCenter), SnxxzUIModelCenterWrap.__Register);
         
-        
-            translator.DelayWrapLoader(typeof(Snxxz.UI.WindowCenter), SnxxzUIWindowCenterWrap.__Register);
-        
         }
         
         static void wrapInit5(LuaEnv luaenv, ObjectTranslator translator)
         {
         
+            translator.DelayWrapLoader(typeof(Snxxz.UI.WindowCenter), SnxxzUIWindowCenterWrap.__Register);
+        
+        
             translator.DelayWrapLoader(typeof(WindowJumpMgr), WindowJumpMgrWrap.__Register);
         
         
diff --git a/Lua/Gen/link.xml b/Lua/Gen/link.xml
index 1241ca4..1756e04 100644
--- a/Lua/Gen/link.xml
+++ b/Lua/Gen/link.xml
@@ -123,6 +123,7 @@
 		<type fullname="HeavenBattleModel" preserve="all"/>
 		<type fullname="HttpRequest" preserve="all"/>
 		<type fullname="Snxxz.UI.JadeDynastyBossModel" preserve="all"/>
+		<type fullname="Snxxz.UI.JadeDynastySkillModel" preserve="all"/>
 		<type fullname="Snxxz.UI.FBHelpPointExchageModel" preserve="all"/>
 		<type fullname="Snxxz.UI.KnapsackTimeCDMgr" preserve="all"/>
 		<type fullname="Snxxz.UI.BoxGetItemModel" preserve="all"/>
diff --git a/System/FairyAu/FairyMemberCell.cs b/System/FairyAu/FairyMemberCell.cs
index 53e6140..442771f 100644
--- a/System/FairyAu/FairyMemberCell.cs
+++ b/System/FairyAu/FairyMemberCell.cs
@@ -6,11 +6,14 @@
 using UnityEngine.UI;
 namespace EnhancedUI.EnhancedScroller
 {
+    [XLua.Hotfix]
     public class FairyMemberCell : ScrollerUI
     {
         FairyModel m_Model;
-        FairyModel model {
-            get {
+        FairyModel model
+        {
+            get
+            {
                 return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<FairyModel>());
             }
         }
@@ -35,38 +38,41 @@
         public override void Refresh(CellView cell)
         {
             int index = cell.index;
-            if (index >= model.sortFairyMembers.Count) {
+            if (index < 0 || index >= model.sortFairyMembers.Count)
+            {
                 return;
             }
-            PlayerFairyData.FairyMember fairyMember = model.sortFairyMembers[index];
-            m_NameTxt.text = model.sortFairyMembers[index].Name;
+            var fairyMember = model.sortFairyMembers[index];
+            if (fairyMember == null)
+            {
+                return;
+            }
+            m_NameTxt.text = fairyMember.Name;
             m_NameTxt.color = UIHelper.GetUIColor(fairyMember.PlayerID == PlayerDatas.Instance.PlayerId ?
                 TextColType.Green : TextColType.NavyBrown, true);
             int realmLv = fairyMember.OfficialRank;
-            if (realmLv > 0) {
-                m_RealmImg.gameObject.SetActive(true);
-                RealmConfig presentCfg = Config.Instance.Get<RealmConfig>(realmLv);
-                if (presentCfg != null) {
-                    m_RealmImg.SetSprite(presentCfg.Img);
-                }
+            var realmConfig = Config.Instance.Get<RealmConfig>(realmLv);
+            m_RealmImg.gameObject.SetActive(realmConfig != null);
+            if (realmConfig != null)
+            {
+                m_RealmImg.SetSprite(realmConfig.Img);
             }
-            else {
-                m_RealmImg.gameObject.SetActive(false);
-            }
-            m_LvTxt.text = model.sortFairyMembers[index].LV.ToString();
+            m_LvTxt.text = fairyMember.LV.ToString();
             m_DutyTxt.text = Language.Get(string.Format("L102{0}", fairyMember.FamilyLV + 1));
             m_ContributeTxt.text = fairyMember.FamilyActiveValue.ToString();
-            if (model.sortFairyMembers[index].Exattr2 == 0)
+            if (fairyMember.Exattr2 == 0)
             {
                 m_TimeTxt.text = Language.Get("L1025");
             }
             else
             {
-                m_TimeTxt.text = UIHelper.GetFadeTime(model.sortFairyMembers[index].Exattr2) + Language.Get("L1026");
+                m_TimeTxt.text = UIHelper.GetFadeTime(fairyMember.Exattr2) + Language.Get("L1026");
             }
-            if (model.IsOnAllot) {
+            if (model.IsOnAllot && m_AllotBtn != null)
+            {
                 m_AllotBtn.RemoveAllListeners();
-                m_AllotBtn.onClick.AddListener(() => {
+                m_AllotBtn.onClick.AddListener(() =>
+                {
                     OnAllot(fairyMember);
                 });
             }
diff --git a/System/JadeDynastyBoss/JadeDynastyBossModel.cs b/System/JadeDynastyBoss/JadeDynastyBossModel.cs
index 668fde5..d0c24b7 100644
--- a/System/JadeDynastyBoss/JadeDynastyBossModel.cs
+++ b/System/JadeDynastyBoss/JadeDynastyBossModel.cs
@@ -80,6 +80,7 @@
             dungeonModel.updateDungeonBuyCnt += OnDungeonBuyCount;
             FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
             packModel.RefreshItemCountAct += RefreshItemCountAct;
+            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent;
         }
 
         public void OnBeforePlayerDataInitialize()
@@ -104,6 +105,7 @@
             dungeonModel.updateDungeonBuyCnt -= OnDungeonBuyCount;
             FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
             packModel.RefreshItemCountAct -= RefreshItemCountAct;
+            PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerDataRefreshInfoEvent;
         }
 
         void ParseConfig()
@@ -420,6 +422,15 @@
             }
         }
 
+        private void PlayerDataRefreshInfoEvent(PlayerDataRefresh refreshType)
+        {
+            if(refreshType==PlayerDataRefresh.OfficialRank
+                || refreshType == PlayerDataRefresh.LV)
+            {
+                UpdateRedpoint();
+            }
+        }
+
         private void RefreshItemCountAct(PackType packType, int arg2, int arg3)
         {
             if (packType == PackType.rptJadeDynastyEquip)
@@ -436,8 +447,25 @@
         {
             if (FuncOpen.Instance.IsFuncOpen(FUNCTIONID))
             {
-                var count = dungeonModel.GetTotalTimes(JADEDYNASTY_MAP) - dungeonModel.GetEnterTimes(JADEDYNASTY_MAP);
-                redpoint.count = count;
+                var existAnyChallengeable = false;
+                var condition = 0;
+                foreach (var boss in jadeDynastyBosses)
+                {
+                    if (IsBossUnLocked(boss.bossNpcId, out condition))
+                    {
+                        existAnyChallengeable = true;
+                        break;
+                    }
+                }
+                if (existAnyChallengeable)
+                {
+                    var count = dungeonModel.GetTotalTimes(JADEDYNASTY_MAP) - dungeonModel.GetEnterTimes(JADEDYNASTY_MAP);
+                    redpoint.count = count;
+                }
+                else
+                {
+                    redpoint.count = 0;
+                }
             }
             else
             {
diff --git a/System/JadeDynastyBoss/JadeDynastyBossVictoryWin.cs b/System/JadeDynastyBoss/JadeDynastyBossVictoryWin.cs
index 671233d..db1cb8b 100644
--- a/System/JadeDynastyBoss/JadeDynastyBossVictoryWin.cs
+++ b/System/JadeDynastyBoss/JadeDynastyBossVictoryWin.cs
@@ -186,16 +186,16 @@
             {
                 return -islhsJadeDynastyEquip.CompareTo(isrhsJadeDynastyEquip);
             }
-            var islhsJadeDynasty126 = IsJadeDynasty126(_lhs);
-            var isrhsJadeDynasty126 = IsJadeDynasty126(_rhs);
-            if (islhsJadeDynasty126 == isrhsJadeDynasty126
-                && islhsJadeDynasty126)
+            var islhsJadeDynasty138 = IsJadeDynasty138(_lhs);
+            var isrhsJadeDynasty138 = IsJadeDynasty138(_rhs);
+            if (islhsJadeDynasty138 == isrhsJadeDynasty138
+                && islhsJadeDynasty138)
             {
                 return _lhs.id.CompareTo(_rhs.id);
             }
-            else if (islhsJadeDynasty126 != isrhsJadeDynasty126)
+            else if (islhsJadeDynasty138 != isrhsJadeDynasty138)
             {
-                return -islhsJadeDynasty126.CompareTo(isrhsJadeDynasty126);
+                return -islhsJadeDynasty138.CompareTo(isrhsJadeDynasty138);
             }
             var lhsConfig = Config.Instance.Get<ItemConfig>(_lhs.id);
             var rhsConfig = Config.Instance.Get<ItemConfig>(_rhs.id);
@@ -217,7 +217,7 @@
             return type >= 128 && type <= 137;
         }
 
-        bool IsJadeDynasty126(Item item)
+        bool IsJadeDynasty138(Item item)
         {
             var config = Config.Instance.Get<ItemConfig>(item.id);
             var type = 0;
@@ -225,7 +225,7 @@
             {
                 type = config.Type;
             }
-            return type == 126;
+            return type == 138;
         }
 
         private void GenerateRewardBehaviour(RectTransform _parent, int _needCount)
diff --git a/System/JadeDynastyKnapSack/JadeDynastyDecomposeGetItemWin.cs b/System/JadeDynastyKnapSack/JadeDynastyDecomposeGetItemWin.cs
new file mode 100644
index 0000000..5b6eaeb
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyDecomposeGetItemWin.cs
@@ -0,0 +1,84 @@
+锘縰sing System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+    public class JadeDynastyDecomposeGetItemWin : Window
+    {
+        [SerializeField] GameObject getItemObj;
+        [SerializeField] RectTransform getItemParent;
+        [SerializeField] Button sureBtn;
+
+        List<GameObject> GetItemlist = new List<GameObject>();
+        JadeDynastyDecomposeModel decomposeModel { get { return ModelCenter.Instance.GetModel<JadeDynastyDecomposeModel>(); } }
+        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
+
+        protected override void BindController()
+        {
+
+        }
+
+        protected override void AddListeners()
+        {
+            sureBtn.AddListener(CloseClick);
+        }
+
+        protected override void OnPreOpen()
+        {
+            getItemObj.SetActive(false);
+            CreateGetItem();
+        }
+        protected override void OnAfterOpen()
+        {
+            
+        }
+
+        protected override void OnPreClose()
+        {
+            DestroyGetItemlist();
+        }
+
+        protected override void OnAfterClose()
+        {
+
+        }
+
+        private void CreateGetItem()
+        {
+            GetItemlist.Clear();
+            List<JadeDynastyDecomposeModel.DecomposeGetItem> matInfolist = decomposeModel.getDecomposeItems;
+            for (int i = 0; i < matInfolist.Count; i++)
+            {
+                GameObject item = Instantiate(getItemObj);
+                var  matInfo= matInfolist[i];
+                item.transform.SetParent(getItemParent);
+                item.transform.localPosition = Vector3.zero;
+                item.transform.localScale = Vector3.one;
+                item.name = StringUtility.Contact("getItem",i);
+                item.gameObject.SetActive(true);
+                CommonItemBaisc itemBasic = item.transform.Find("CommonItemCell").GetComponent<CommonItemBaisc>();
+                ItemCellModel cellModel = new ItemCellModel(matInfo.itemId, false, (ulong)matInfo.itemCount, matInfo.isBind);
+                itemBasic.Init(cellModel);
+                itemBasic.cellBtn.RemoveAllListeners();
+                itemBasic.cellBtn.AddListener(() =>
+                {
+                    ItemAttrData attrData = new ItemAttrData(matInfo.itemId, false, (ulong)matInfo.itemCount, -1, matInfo.isBind);
+                    tipsModel.SetItemTipsModel(attrData);
+
+                });
+                itemBasic.gameObject.SetActive(true);
+                GetItemlist.Add(item);
+            }
+        }
+
+        private void DestroyGetItemlist()
+        {
+            for (int i = 0; i < GetItemlist.Count; i++)
+            {
+                Destroy(GetItemlist[i]);
+            }
+        }
+
+    }
+}
diff --git a/System/JadeDynastyKnapSack/JadeDynastyDecomposeGetItemWin.cs.meta b/System/JadeDynastyKnapSack/JadeDynastyDecomposeGetItemWin.cs.meta
new file mode 100644
index 0000000..94692df
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyDecomposeGetItemWin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 1f316cc8750556c46ab5cf0d725d0ec3
+timeCreated: 1548230749
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyKnapSack/JadeDynastyDecomposeModel.cs b/System/JadeDynastyKnapSack/JadeDynastyDecomposeModel.cs
index 5658fc5..986e89d 100644
--- a/System/JadeDynastyKnapSack/JadeDynastyDecomposeModel.cs
+++ b/System/JadeDynastyKnapSack/JadeDynastyDecomposeModel.cs
@@ -26,7 +26,7 @@
 
         public void OnBeforePlayerDataInitialize()
         {
-           
+            playerPack.RefreshItemCountAct -= UpdateItem;
         }
 
         public void OnAfterPlayerDataInitialize()
@@ -40,6 +40,7 @@
 
         public void OnPlayerLoginOk()
         {
+            playerPack.RefreshItemCountAct += UpdateItem;
             UpdateDecomposeModels();
             UpdateSelectModels();
         }
@@ -47,6 +48,36 @@
         public override void UnInit()
         {
            
+        }
+
+        public List<DecomposeGetItem> getDecomposeItems = new List<DecomposeGetItem>();
+        public void UpdateJadeDynastyDecomposeResult(HA815_tagMCZhuXianDecomposeResult result)
+        {
+            getDecomposeItems.Clear();
+            for (int i = 0; i < result.Cnt; i++)
+            {
+                var itemData = result.ItemList[i];
+                var getItemData = new DecomposeGetItem((int)itemData.ItemID,itemData.ItemCnt,itemData.IsBind);
+                getDecomposeItems.Add(getItemData);
+            }
+
+            if(getDecomposeItems.Count > 0)
+            {
+                WindowCenter.Instance.Open<JadeDynastyDecomposeGetItemWin>();
+            }
+        }
+
+        private void UpdateItem(PackType type, int index, int id)
+        {
+            if (type != PackType.rptJadeDynastyItem || !isAutoDecompose) return;
+
+            UpdateDecomposeModels();
+            UpdateSelectModels();
+            int remainGrid = playerPack.GetReaminGridCount(PackType.rptJadeDynastyItem);
+            if(remainGrid < 1)
+            {
+                SendJadeDynastyDecompose(1);
+            }
         }
 
         private int GetSelectEquipLvByLocalSave()
@@ -133,5 +164,45 @@
             }
         }
 
+        public void SendJadeDynastyDecompose(int isAuto)
+        {
+            List<ushort> indexs = null;
+            List<uint> ids = null;
+            GetSelectItemIndexs(out indexs, out ids);
+            CA332_tagCMZhuXianEquipDecompose zhuXianEquipDecompose = new CA332_tagCMZhuXianEquipDecompose();
+            zhuXianEquipDecompose.Count = (byte)indexs.Count;
+            zhuXianEquipDecompose.IndexList = indexs.ToArray();
+            zhuXianEquipDecompose.ItemIDList = ids.ToArray();
+            zhuXianEquipDecompose.IsAuto = (byte)isAuto;
+            GameNetSystem.Instance.SendInfo(zhuXianEquipDecompose);
+        }
+
+        private void GetSelectItemIndexs(out List<ushort> indexs, out List<uint> ids)
+        {
+            indexs = new List<ushort>();
+            ids = new List<uint>();
+            foreach(var guid in selectGuids)
+            {
+                var model = playerPack.GetItemModelByGUID(guid);
+                if(model != null)
+                {
+                    indexs.Add((ushort)model.itemInfo.ItemPlace);
+                    ids.Add((uint)model.itemId);
+                }
+            }
+        }
+
+        public class DecomposeGetItem
+        {
+            public int itemId { get; private set; }
+            public int itemCount { get; private set;}
+            public int isBind { get; private set; }
+            public DecomposeGetItem(int id,int count,int isBind)
+            {
+                this.itemId = id;
+                this.itemCount = count;
+                this.isBind = isBind;
+            }
+        }
     }
 }
diff --git a/System/JadeDynastyKnapSack/JadeDynastyDecomposeWin.cs b/System/JadeDynastyKnapSack/JadeDynastyDecomposeWin.cs
index fc7ba98..520bf59 100644
--- a/System/JadeDynastyKnapSack/JadeDynastyDecomposeWin.cs
+++ b/System/JadeDynastyKnapSack/JadeDynastyDecomposeWin.cs
@@ -16,6 +16,7 @@
         [SerializeField] Transform sortArrow;
         [SerializeField] int initCount = 100;
        
+        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
         JadeDynastyDecomposeModel decomposeModel { get { return ModelCenter.Instance.GetModel<JadeDynastyDecomposeModel>(); } }
         #region Built-in
         protected override void BindController()
@@ -32,10 +33,11 @@
 
         protected override void OnPreOpen()
         {
+            playerPack.RefreshItemCountAct += UpdateItem;
             decomposeModel.UpdateSelectItemEvent += UpdateSelectItem;
             sortTable.onSortCloseEvent += CloseSortTable;
             sortTable.onSelectSortEvent += UpdateSelectEquipLv;
-            sortTable.SetDefault();
+            sortTable.SetDefault(decomposeModel.selectEquipLv);
             SetDisplay();
         }
 
@@ -46,6 +48,7 @@
 
         protected override void OnPreClose()
         {
+            playerPack.RefreshItemCountAct -= UpdateItem;
             decomposeModel.UpdateSelectItemEvent -= UpdateSelectItem;
             sortTable.onSortCloseEvent -= CloseSortTable;
             sortTable.onSelectSortEvent -= UpdateSelectEquipLv;
@@ -77,6 +80,15 @@
             decomposeCtrl.Restart();
         }
 
+        private void UpdateItem(PackType type, int index, int id)
+        {
+            if (type != PackType.rptJadeDynastyItem) return;
+
+            decomposeModel.UpdateDecomposeModels();
+            decomposeModel.UpdateSelectModels();
+            UpdateSelectItem();
+        }
+
         private void UpdateSelectEquipLv(SortType type, int lv)
         {
             if (type != SortType.EquipLv) return;
@@ -105,7 +117,7 @@
 
         private void ClickDecompose()
         {
-            
+            decomposeModel.SendJadeDynastyDecompose(0);
         }
 
         private void ClickAutoDecompose()
diff --git a/System/JadeDynastyKnapSack/JadeDynastyEquipBeh.cs b/System/JadeDynastyKnapSack/JadeDynastyEquipBeh.cs
index ecdc8d6..7eace49 100644
--- a/System/JadeDynastyKnapSack/JadeDynastyEquipBeh.cs
+++ b/System/JadeDynastyKnapSack/JadeDynastyEquipBeh.cs
@@ -12,6 +12,8 @@
         [SerializeField] Text lockText;
         [SerializeField] Text nameText;
         [SerializeField] Button equipBtn;
+        [SerializeField] GameObject equipLvObj;
+        [SerializeField] Text equipLvText;
 
         ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
         PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
@@ -33,15 +35,17 @@
         public void SetDisplay()
         {
             bool islock = equipModel.IsLockEquipPlace((int)equipType);
-            nameText.text = string.Empty;
+            nameText.gameObject.SetActive(true);
+            nameText.text = Language.Get(equipType.ToString());
             lockText.gameObject.SetActive(false);
-            nameText.gameObject.SetActive(false);
             lockObj.SetActive(islock);
             equipBtn.RemoveAllListeners();
             itemCell.cellBtn.RemoveAllListeners();
+            equipLvObj.SetActive(false);
             if(islock)
             {
                 itemCell.gameObject.SetActive(false);
+                equipBtn.AddListener(ClickEquipBtn);
             }
             else
             {
@@ -49,10 +53,22 @@
                 itemCell.gameObject.SetActive(itemModel != null);
                 if (itemModel != null)
                 {
+                    equipLvObj.SetActive(true);
+                    nameText.gameObject.SetActive(false);
                     itemCell.Init(itemModel);
                     itemCell.cellBtn.AddListener(() => { ClickItemCell(itemModel); });
+                    equipLvText.text = Language.Get("L1091",itemModel.chinItemModel.LV);
+                }
+                else
+                {
+                    equipBtn.AddListener(ClickEquipBtn);
                 }
             }
+        }
+
+        private void ClickEquipBtn()
+        {
+            equipModel.SetLookEquipGetPath((int)equipType);
         }
 
         private void PutOffEquip(PackType type, int index, int id)
@@ -79,7 +95,7 @@
             if (item == null) return;
 
             tipsModel.SetItemTipsModel(item.packType,item.itemInfo.ItemGUID,false);
-            tipsModel.SetPutOnTipsBtn(tipsModel.curAttrData);
+            tipsModel.SetJadeDynastyPutOnTipsBtn(tipsModel.curAttrData);
             tipsModel.ShowUICtrl();
         }
     }
diff --git a/System/JadeDynastyKnapSack/JadeDynastyEquipGetPathsWin.cs b/System/JadeDynastyKnapSack/JadeDynastyEquipGetPathsWin.cs
new file mode 100644
index 0000000..dda551b
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyEquipGetPathsWin.cs
@@ -0,0 +1,154 @@
+锘縰sing System;
+using UnityEngine;
+using UnityEngine.UI;
+using System.Collections.Generic;
+using TableConfig;
+using System.Collections;
+
+namespace Snxxz.UI
+{
+    public class JadeDynastyEquipGetPathsWin : Window
+    {
+        [SerializeField] RectTransform container;
+        [SerializeField] CanvasGroup alpha;
+        [SerializeField] List<Path> paths = new List<Path>();
+
+        JadeDynastyEquipModel equipModel { get { return ModelCenter.Instance.GetModel<JadeDynastyEquipModel>(); } }
+
+        #region Built-in
+        protected override void BindController()
+        {
+
+        }
+        protected override void AddListeners()
+        {
+            
+        }
+
+        protected override void OnPreOpen()
+        {
+            SetDisplay();
+        }
+
+        protected override void OnActived()
+        {
+            base.OnActived();
+            StartCoroutine(DelayShow());
+        }
+
+        protected override void OnAfterOpen()
+        {
+           
+        }
+
+        protected override void OnPreClose()
+        {
+           
+        }
+        protected override void OnAfterClose()
+        {
+
+        }
+        #endregion
+
+        private void SetDisplay()
+        {
+            alpha.alpha = 0;
+            container.gameObject.SetActive(false);
+            UpdatePath();
+        }
+
+        IEnumerator DelayShow()
+        {
+            yield return null;
+            container.gameObject.SetActive(true);
+            container.localPosition = equipModel.targetPos;
+            StartCoroutine(DelayAlpha());
+        }
+
+        IEnumerator DelayAlpha()
+        {
+            yield return null;
+            alpha.alpha = 1;
+        }
+
+        private void UpdatePath()
+        {
+            bool isLock = equipModel.IsLockEquipPlace(equipModel.targetEquipPlace);
+            if(isLock)
+            {
+                int towerLayer = 0;
+                equipModel.TryGetLockTowerLayer(equipModel.targetEquipPlace,out towerLayer);
+                for (int i = 0; i < paths.Count; i++)
+                {
+                    var path = paths[i];
+                    if(i == 0)
+                    {
+                        path.pathObj.SetActive(true);
+                        path.SetDisPlay(0,towerLayer);
+                    }
+                    else
+                    {
+                        path.pathObj.SetActive(false);
+                    }
+                }
+            }
+            else
+            {
+                List<int> pathIds = null;
+                bool isPath = equipModel.TryGetEquipPaths(equipModel.targetEquipPlace,out pathIds);
+                if(isPath)
+                {
+                    for(int i = 0; i < paths.Count; i++)
+                    {
+                        var path = paths[i];
+                        if(i < pathIds.Count)
+                        {
+                            var pathId = pathIds[i];
+                            path.pathObj.SetActive(true);
+                            path.SetDisPlay(pathId,0);
+                        }
+                        else
+                        {
+                            path.pathObj.SetActive(false);
+                        }
+                    }
+                }
+            }
+        }
+
+        [Serializable]
+        public class Path
+        {
+            [SerializeField] public GameObject pathObj;
+            [SerializeField] Text pathText;
+            [SerializeField] Button pathBtn;
+
+            public void SetDisPlay(int pathId,int towerLayer)
+            {
+                pathBtn.RemoveAllListeners();
+                if (towerLayer == 0)
+                {
+                    var pathConfig = Config.Instance.Get<GetItemWaysConfig>(pathId);
+                    if (pathConfig == null) return;
+
+                    pathText.text = pathConfig.name;
+                    pathBtn.AddListener(()=>
+                    {
+                        WindowCenter.Instance.CloseImmediately<JadeDynastyEquipGetPathsWin>();
+                        WindowJumpMgr.Instance.WindowJumpTo((JumpUIType)pathConfig.OpenpanelId);
+                    });
+                }
+                else
+                {
+                    pathText.text = Language.Get("JadeDynastyEquip2",towerLayer);
+                    pathBtn.AddListener(() =>
+                    {
+                        WindowCenter.Instance.CloseImmediately<JadeDynastyEquipGetPathsWin>();
+                        WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.JadeDynastyTower288);
+                    });
+                }
+            }
+        } 
+    }
+}
diff --git a/System/JadeDynastyKnapSack/JadeDynastyEquipGetPathsWin.cs.meta b/System/JadeDynastyKnapSack/JadeDynastyEquipGetPathsWin.cs.meta
new file mode 100644
index 0000000..5d50471
--- /dev/null
+++ b/System/JadeDynastyKnapSack/JadeDynastyEquipGetPathsWin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 2f33faa6ffe19c3488cdb1f273751e8c
+timeCreated: 1548247759
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/JadeDynastyKnapSack/JadeDynastyEquipModel.cs b/System/JadeDynastyKnapSack/JadeDynastyEquipModel.cs
index 3ca76b3..06ec608 100644
--- a/System/JadeDynastyKnapSack/JadeDynastyEquipModel.cs
+++ b/System/JadeDynastyKnapSack/JadeDynastyEquipModel.cs
@@ -4,6 +4,7 @@
 using System.Text;
 using TableConfig;
 using LitJson;
+using UnityEngine;
 
 namespace Snxxz.UI
 {
@@ -46,6 +47,7 @@
         #region 瑙f瀽琛ㄦ暟鎹�
         public Dictionary<int, int> lockEquipLayerDict { get; private set; }
         public Dictionary<int, List<int>> suitTypeDict { get; private set;}
+        public Dictionary<int, List<int>> equipGetPathDict { get; private set;}
         public void ParseFuncConfig()
         {
             lockEquipLayerDict = new Dictionary<int, int>();
@@ -75,6 +77,27 @@
                     }
                 }
             }
+
+            equipGetPathDict = new Dictionary<int, List<int>>();
+            var jadeDynastyEquipGetPaths = Config.Instance.Get<FuncConfigConfig>("JadeDynastyEquipGetPaths");
+            var equipGetPathData = JsonMapper.ToObject(jadeDynastyEquipGetPaths.Numerical1);
+         
+            foreach(var key in equipGetPathData.Keys)
+            {
+                var pathData = equipGetPathData[key];
+                int equipPlace = int.Parse(key);
+                List<int> pathIds = new List<int>();
+                equipGetPathDict.Add(equipPlace,pathIds);
+                if(pathData.IsArray)
+                {
+                    for(int i = 0; i < pathData.Count; i++)
+                    {
+                        int pathId = int.Parse(pathData[i].ToString());
+                        pathIds.Add(pathId);
+                    }
+                }
+            }
+
         }
 
         public Dictionary<int, Dictionary<int, JadeDynastySuitAttrData>> suitAttrDict { get; private set; }
@@ -141,8 +164,53 @@
         }
         #endregion
 
-        #region 灏佸寘
+        #region 鏌ョ湅鐗╁搧
+        public string lookGuid { get; private set; }
+        public int jumpIndex { get; private set;}
+        public void SetLookItemModel(string guid)
+        {
+            jumpIndex = -1;
+            lookGuid = string.Empty;
+            if (string.IsNullOrEmpty(guid)) return;
+
+            var model = playerPack.GetItemModelByGUID(guid);
+            if(model != null)
+            {
+                lookGuid = guid;
+                int itemIndex = model.itemInfo.ItemPlace;
+                jumpIndex = itemIndex / 5;
+
+                WindowCenter.Instance.CloseImmediately<MainInterfaceWin>();
+                WindowCenter.Instance.Open<JadeDynastyKnapSackWin>(false,0);
+            }
+        }
+
+        public void ClearLookItemModel()
+        {
+            lookGuid = string.Empty;
+            jumpIndex = -1;
+        }
         #endregion
+
+        #region 鏌ョ湅瑁呭鏍忚幏鍙栭�斿緞
+        public Vector2 targetPos;
+        public int targetEquipPlace { get; private set; }
+        public void SetLookEquipGetPath(int equipPlace)
+        {
+            this.targetEquipPlace = equipPlace;
+            RectTransformUtility.ScreenPointToLocalPointInRectangle(WindowCenter.Instance.uiRoot.tipsCanvas, Input.mousePosition, WindowCenter.Instance.uiRoot.uicamera, out targetPos);
+            if(!WindowCenter.Instance.IsOpen<JadeDynastyEquipGetPathsWin>())
+            {
+                WindowCenter.Instance.Open<JadeDynastyEquipGetPathsWin>();
+            }
+        }
+        #endregion
+
+        public bool TryGetEquipPaths(int equipPlace, out List<int> pathIds)
+        {
+            pathIds = null;
+            return equipGetPathDict.TryGetValue(equipPlace,out pathIds);
+        }
 
         public bool TryGetJadeDynastyEquipIndex(int equipPlace,out int equipIndex)
         {
@@ -304,7 +372,7 @@
                 case PackType.rptJadeDynastyItem:
                     if(isMax)
                     {
-                        curSuitLv = maxSuitLv;
+                        nextSuitLV = maxSuitLv;
                         return true;
                     }
                     break;
diff --git a/System/JadeDynastyKnapSack/JadeDynastyEquipWin.cs b/System/JadeDynastyKnapSack/JadeDynastyEquipWin.cs
index 3a4568d..6208c7a 100644
--- a/System/JadeDynastyKnapSack/JadeDynastyEquipWin.cs
+++ b/System/JadeDynastyKnapSack/JadeDynastyEquipWin.cs
@@ -6,7 +6,12 @@
 {
     public class JadeDynastyEquipWin : Window
     {
+        [SerializeField] Text fightPowerText;
         [SerializeField] Button decomposeBtn;
+        [SerializeField] Button sortBtn;
+        [SerializeField] Text sortText;
+        [SerializeField] Image sortImage;
+
         [Header("璇涗粰瑁呭浣�")]
         [SerializeField] Button stoneAttrBtn;
         [SerializeField] Button suitAttrBtn;
@@ -16,6 +21,9 @@
         [SerializeField] int initCount = 100;
 
         PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
+        PackModelInterface modelInterface { get { return ModelCenter.Instance.GetModel<PackModelInterface>(); } }
+        JadeDynastyEquipModel equipModel { get { return ModelCenter.Instance.GetModel<JadeDynastyEquipModel>(); } }
+
         #region Built-in
         protected override void BindController()
         {
@@ -26,11 +34,13 @@
             decomposeBtn.AddListener(ClickDecompose);
             stoneAttrBtn.AddListener(ClickStoneAttr);
             suitAttrBtn.AddListener(ClickSuitAttr);
+            sortBtn.AddListener(OnClickSort);
         }
 
         protected override void OnPreOpen()
         {
             playerPack.RefreshItemCountAct += UpdateJadeDynastyItem;
+            playerPack.RefreshPackAct += UpdateJadeDynastyKnapSack;
             SetDisplay();
         }
 
@@ -41,8 +51,10 @@
 
         protected override void OnPreClose()
         {
+            playerPack.RefreshPackAct -= UpdateJadeDynastyKnapSack;
             playerPack.RefreshItemCountAct -= UpdateJadeDynastyItem;
             UI3DModelExhibition.Instance.StopShow();
+            equipModel.ClearLookItemModel();
         }
 
         protected override void OnAfterClose()
@@ -55,6 +67,32 @@
         {
             CreateItemLine();
             UpdatePlayerUI3DModel();
+            UpdateFightPower();
+            UpdateLookItem();
+            TimeDownMgr.CoolTimeData data;
+            if (TimeDownMgr.Instance.Get(TimeDownMgr.CoolTimeType.BagSort, out data))
+            {
+                data.func = RefreshTime;
+                sortImage.SetSprite("BlackBtn");
+                sortText.text = Language.Get("BagWin_SortCDbtn_Text_1", Mathf.CeilToInt(data.duration - data.time));
+                sortBtn.enabled = false;
+            }
+            else
+            {
+                sortImage.SetSprite("SecondBtn1");
+                sortText.text = Language.Get("BagWin_Sortbtn_Text_1");
+                sortBtn.enabled = true;
+            }
+        }
+
+        public void UpdateLookItem()
+        {
+            if (equipModel.jumpIndex < 0) return;
+
+            int jumpIndex = equipModel.jumpIndex;
+            jumpIndex = jumpIndex > 2 ? jumpIndex - 2 : jumpIndex;
+            itemCtrl.JumpIndex(jumpIndex);
+            itemCtrl.m_Scorller.RefreshActiveCellViews();
         }
 
         private void CreateItemLine()
@@ -68,6 +106,28 @@
             itemCtrl.Restart();
         }
 
+        private void UpdateJadeDynastyKnapSack(PackType type)
+        {
+            if (type != PackType.rptJadeDynastyItem) return;
+
+            UpdateItemLine();
+        }
+        private void UpdateFightPower()
+        {
+            int fightPower = 0;
+            var singlePack = playerPack.GetSinglePackModel(PackType.rptJadeDynastyEquip);
+            if (singlePack != null)
+            {
+                var dict = singlePack.GetPackModelIndexDict();
+                foreach(var model in dict.Values)
+                {
+                    fightPower += model.equipScore;
+                }
+            }
+
+            fightPowerText.text = fightPower.ToString();
+        }
+
         private void UpdateJadeDynastyItem(PackType type, int index, int id)
         {
             if (type != PackType.rptJadeDynastyItem) return;
@@ -76,9 +136,11 @@
             {
                 case PackType.rptJadeDynastyItem:
                     UpdateItemLine();
+                    equipModel.ClearLookItemModel();
                     break;
                 case PackType.rptJadeDynastyEquip:
                     UpdatePlayerUI3DModel();
+                    UpdateFightPower();
                     break;
             }
         }
@@ -103,6 +165,31 @@
 
         }
 
+        public void OnClickSort()
+        {
+            modelInterface.SendPackResetQuest(PackType.rptJadeDynastyItem);
+            TimeDownMgr.Instance.Begin(TimeDownMgr.CoolTimeType.BagSort, 5.0f, RefreshTime);
+            sortText.text = Language.Get("BagWin_SortCDbtn_Text_1", 5);
+            sortImage.SetSprite("BlackBtn");
+            sortBtn.enabled = false;
+        }
+
+        private void RefreshTime(float time)
+        {
+            if (time <= 0)
+            {
+                sortImage.SetSprite("SecondBtn1");
+                sortText.text = Language.Get("BagWin_Sortbtn_Text_1");
+                sortBtn.enabled = true;
+            }
+            else
+            {
+                sortText.text = Language.Get("BagWin_SortCDbtn_Text_1", time);
+                sortBtn.enabled = false;
+            }
+
+        }
+
         private void ClickDecompose()
         {
             WindowCenter.Instance.Open<JadeDynastyDecomposeWin>();
diff --git a/System/JadeDynastyKnapSack/JadeDynastyItemBeh.cs b/System/JadeDynastyKnapSack/JadeDynastyItemBeh.cs
index 95373c0..8cfffa4 100644
--- a/System/JadeDynastyKnapSack/JadeDynastyItemBeh.cs
+++ b/System/JadeDynastyKnapSack/JadeDynastyItemBeh.cs
@@ -7,9 +7,13 @@
     {
         [SerializeField] ItemCell itemCell;
         [SerializeField] Button lockBtn;
+        [SerializeField] UIEffect effect;
+        [SerializeField] GameObject equipLvObj;
+        [SerializeField] Text equipLvText;
 
         ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
         PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
+        JadeDynastyEquipModel equipModel { get { return ModelCenter.Instance.GetModel<JadeDynastyEquipModel>(); } }
 
         public void SetDisplay(int index)
         {
@@ -18,23 +22,51 @@
 
             var itemModel = playerPack.GetItemModelByIndex(PackType.rptJadeDynastyItem, index);
             itemCell.gameObject.SetActive(itemModel != null);
+         
             if(itemModel != null)
             {
+                equipLvObj.SetActive(true);
                 lockBtn.gameObject.SetActive(false);
                 itemCell.Init(itemModel,true);
+                equipLvText.text = Language.Get("L1091",itemModel.chinItemModel.LV);
                 itemCell.cellBtn.RemoveAllListeners();
                 itemCell.cellBtn.AddListener(()=>
                 {
                     tipsModel.SetItemTipsModel(itemModel.packType,itemModel.itemInfo.ItemGUID,false,true);
-                    tipsModel.SetBagTipsBtn(tipsModel.curAttrData);
+                    tipsModel.SetJadeDynastyItemTipsBtn(tipsModel.curAttrData);
                     tipsModel.ShowUICtrl();
                 });
-
+                UpdatePlayerEffect(itemModel.itemInfo.ItemGUID);
             }
             else
             {
+                equipLvObj.SetActive(false);
                 bool isLock = index > (singlePack.openGridCount - 1);
                 lockBtn.gameObject.SetActive(isLock);
+                UpdatePlayerEffect(null);
+            }
+        }
+
+        private void UpdatePlayerEffect(string guid)
+        {
+            if (effect == null) return;
+
+            if(string.IsNullOrEmpty(guid))
+            {
+                if(effect.IsPlaying)
+                {
+                    effect.Stop();
+                }
+            }
+            else
+            {
+                if(guid == equipModel.lookGuid)
+                {
+                    if (!effect.IsPlaying)
+                    {
+                        effect.Play();
+                    }
+                }
             }
         }
     }
diff --git a/System/JadeDynastyKnapSack/JadeDynastySuitAttrBeh.cs b/System/JadeDynastyKnapSack/JadeDynastySuitAttrBeh.cs
index ab51925..912f7a1 100644
--- a/System/JadeDynastyKnapSack/JadeDynastySuitAttrBeh.cs
+++ b/System/JadeDynastyKnapSack/JadeDynastySuitAttrBeh.cs
@@ -85,11 +85,11 @@
         {
             if (!isNext)
             {
-                titleText.text = StringUtility.Contact("濂楄鎬诲睘鎬�");
+                titleText.text = Language.Get("JadeDynastyEquip3");
             }
             else
             {
-                titleText.text = StringUtility.Contact("杩涢樁灞炴��");
+                titleText.text = Language.Get("JadeDynastyEquip4");
             }
 
             List<int> suitTypes = equipModel.suitTypeDict.Keys.ToList();
@@ -172,29 +172,37 @@
                 else
                 {
                     attrTypeObj.SetActive(true);
-                    switch (suitType)
-                    {
-                        case 1:
-                            suitTypeText.text = StringUtility.Contact("璇涗粰瀹堟姢LV." + suitAttrData.suitLv);
-                            break;
-                        case 2:
-                            suitTypeText.text = StringUtility.Contact("璇涗粰涔嬪姏LV." + suitAttrData.suitLv);
-                            break;
-                        case 3:
-                            suitTypeText.text = StringUtility.Contact("璇涗粰鍓戦樀LV." + suitAttrData.suitLv);
-                            break;
-                    }
-
+                    string suitName = Language.Get(StringUtility.Contact("JadeDynastyEquipSuit_", suitType));
+                    suitTypeText.text = StringUtility.Contact(suitName,"Lv." + suitAttrData.suitLv);
                 }
                 int[] ids = suitAttrData.suitAttrConfig.attrIDList;
                 int[] values = suitAttrData.suitAttrConfig.attrValueList;
-                int equipPlace = equipModel.suitTypeDict[suitType][0];
+                var equipPlaces = equipModel.suitTypeDict[suitType];
+                int equipPlace = equipPlaces[0];
                 List<int> activeEquips = null;
                 bool isActive = equipModel.TryGetIsActiveSuit(equipPlace,suitAttrData.suitLv,out activeEquips);
                 activeObj.SetActive(!isActive);
                 if(!isActive)
                 {
-                    string conditionSB = StringUtility.Contact("杈惧埌",suitAttrData.suitLv,"闃舵縺娲�");
+                    string equipsName = string.Empty;
+                    for(int i = 0; i < equipPlaces.Count; i++)
+                    {
+                        var place = equipPlaces[i];
+                        string equipName = Language.Get(((RoleEquipType)place).ToString());
+                        if (activeEquips.Contains(place))
+                        {
+                            equipName = UIHelper.AppendStringColor(TextColType.Green,equipName);
+                        }
+                        if (i == 0)
+                        {
+                            equipsName = equipName;
+                        }
+                        else
+                        {
+                            equipsName = StringUtility.Contact(equipsName, " ", equipName);
+                        }
+                    }
+                    string conditionSB = Language.Get("JadeDynastyEquip1",equipsName,suitAttrData.suitLv);
                     activeText.text = conditionSB;
                 }
                 for (int i = 0; i < attrObjlist.Count; i++)
diff --git a/System/JadeDynastySkill/JadeDynastySkillWin.cs b/System/JadeDynastySkill/JadeDynastySkillWin.cs
index b70dfd5..35703b5 100644
--- a/System/JadeDynastySkill/JadeDynastySkillWin.cs
+++ b/System/JadeDynastySkill/JadeDynastySkillWin.cs
@@ -126,6 +126,9 @@
                     var config = Config.Instance.Get<SkillFrameAnimationConfig>(model.selectSkill);
                     m_SkillFrame.SetSprites(sprites, (float)config.totalTime / 1000);
                     m_SkillDescriptionIcon.SetSprite(config.descriptionIcon);
+                    var rt = m_SkillFrame.transform as RectTransform;
+                    rt.sizeDelta = config.sizeDelta;
+                    rt.localPosition = config.position;
                 }
             }
         }
diff --git a/System/JadeDynastyTower/JadeDynastyTowerModel.cs b/System/JadeDynastyTower/JadeDynastyTowerModel.cs
index 2ad227f..6c10644 100644
--- a/System/JadeDynastyTower/JadeDynastyTowerModel.cs
+++ b/System/JadeDynastyTower/JadeDynastyTowerModel.cs
@@ -5,10 +5,13 @@
 
 namespace Snxxz.UI
 {
-    public class JadeDynastyTowerModel : Model, IPlayerLoginOk, IMapInitOk, IBeforePlayerDataInitialize
+    [XLua.LuaCallCSharp]
+    [XLua.Hotfix]
+    public class JadeDynastyTowerModel : Model, IPlayerLoginOk, IMapInitOk, IBeforePlayerDataInitialize, ISwitchAccount
     {
         public const int DATA_MAPID = 31370;
-        const int REDPOINTID = 1;
+        const int REDPOINTID_01 = 21501;
+        const int REDPOINTID_02 = 215;
         const int FUNCTIONID = 164;
 
         public int highestPassFloor { get; private set; }
@@ -33,7 +36,13 @@
         public bool openJadeDynastyTower { get; set; }
 
         bool serverInited = false;
-        Redpoint redpoint = new Redpoint(REDPOINTID);
+
+        bool redpointConfirm_01 = false;
+        bool redpointConfirm_02 = false;
+
+        Redpoint redpoint01 = new Redpoint(37, REDPOINTID_01);
+        Redpoint redpoint02 = new Redpoint(REDPOINTID_02);
+
         List<int> sortedFloors = new List<int>();
 
         DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
@@ -61,8 +70,10 @@
                     case 1:
                         break;
                     case 2:
+                        SysNotifyMgr.Instance.ShowTip("GeRen_chenxin_268121", DATA_MAPID);
                         break;
                     case 3:
+                        SysNotifyMgr.Instance.ShowTip("SingleEnterCD", DATA_MAPID);
                         break;
                     default:
                         break;
@@ -82,15 +93,15 @@
                 return 1;
             }
 
-            var coolDown = dungeonModel.GetEnterCoolDown(JadeDynastyTowerModel.DATA_MAPID);
-            if (coolDown != null && coolDown.suplursSeconds > 0)
+            var enterTimes = dungeonModel.GetEnterTimes(DATA_MAPID);
+            var totalTimes = dungeonModel.GetTotalTimes(DATA_MAPID);
+            if (enterTimes >= totalTimes)
             {
                 return 2;
             }
 
-            var enterTimes = dungeonModel.GetEnterTimes(DATA_MAPID);
-            var totalTimes = dungeonModel.GetTotalTimes(DATA_MAPID);
-            if (enterTimes >= totalTimes)
+            var coolDown = dungeonModel.GetEnterCoolDown(DATA_MAPID);
+            if (coolDown != null && coolDown.suplursSeconds > 0)
             {
                 return 3;
             }
@@ -173,9 +184,28 @@
             }
         }
 
+        public void ConfirmRedpoint01()
+        {
+            redpointConfirm_01 = true;
+            UpateRedpoint();
+        }
+
+        public void ConfirmRedpoint02()
+        {
+            redpointConfirm_02 = true;
+            UpateRedpoint();
+        }
+
         public void OnPlayerLoginOk()
         {
             serverInited = true;
+            UpateRedpoint();
+        }
+
+        public void OnSwitchAccount()
+        {
+            redpointConfirm_01 = false;
+            redpointConfirm_02 = false;
         }
 
         public void OnMapInitOk()
@@ -185,6 +215,29 @@
                 case DATA_MAPID:
                     RequestRefreshMonster();
                     break;
+            }
+        }
+
+        private void UpateRedpoint()
+        {
+            var challengable = IsChallengable();
+
+            if (!redpointConfirm_01)
+            {
+                redpoint01.state = challengable ? RedPointState.Simple : RedPointState.None;
+            }
+            else
+            {
+                redpoint01.state = RedPointState.None;
+            }
+
+            if (!redpointConfirm_02)
+            {
+                redpoint02.state = challengable ? RedPointState.Simple : RedPointState.None;
+            }
+            else
+            {
+                redpoint02.state = RedPointState.None;
             }
         }
 
@@ -201,6 +254,8 @@
         {
             serverInited = false;
         }
+
+
     }
 }
 
diff --git a/System/JadeDynastyTower/JadeDynastyTowerRankBehaviour.cs b/System/JadeDynastyTower/JadeDynastyTowerRankBehaviour.cs
index 6bacecb..0d713f2 100644
--- a/System/JadeDynastyTower/JadeDynastyTowerRankBehaviour.cs
+++ b/System/JadeDynastyTower/JadeDynastyTowerRankBehaviour.cs
@@ -51,7 +51,7 @@
 
         private void ViewRank()
         {
-
+            WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.JadeDynastyTowerRank);
         }
 
         public struct RankInfo
diff --git a/System/JadeDynastyTower/JadeDynastyTowerRewardBehaviour.cs b/System/JadeDynastyTower/JadeDynastyTowerRewardBehaviour.cs
index d83b30b..e196e46 100644
--- a/System/JadeDynastyTower/JadeDynastyTowerRewardBehaviour.cs
+++ b/System/JadeDynastyTower/JadeDynastyTowerRewardBehaviour.cs
@@ -46,7 +46,7 @@
                 if (i < config.rewardIdsLevelA.Length)
                 {
                     var id = config.rewardIdsLevelA[i];
-                    var count = config.rewardIdsLevelS[i];
+                    var count = config.rewardCountsLevelA[i];
                     behaviour.gameObject.SetActive(true);
                     behaviour.SetItem(id, count);
                 }
diff --git a/System/JadeDynastyTower/JadeDynastyTowerWin.cs b/System/JadeDynastyTower/JadeDynastyTowerWin.cs
index f33175c..05606e6 100644
--- a/System/JadeDynastyTower/JadeDynastyTowerWin.cs
+++ b/System/JadeDynastyTower/JadeDynastyTowerWin.cs
@@ -12,7 +12,7 @@
 
 namespace Snxxz.UI
 {
-
+    [XLua.Hotfix]
     public class JadeDynastyTowerWin : Window
     {
         [SerializeField] JadeDynastyTowerBehaviour m_TowerBehaviour;
@@ -41,6 +41,7 @@
 
         protected override void OnPreOpen()
         {
+            model.ConfirmRedpoint02();
             ModelCenter.Instance.GetModel<RankModel>().SendBegRank(PlayerRankData.RankType.JadeDynastyTower);
         }
 
diff --git a/System/JadeDynastyTower/JadyDynastyTowerVictoryWin.cs b/System/JadeDynastyTower/JadyDynastyTowerVictoryWin.cs
index a0006a5..f4e24a8 100644
--- a/System/JadeDynastyTower/JadyDynastyTowerVictoryWin.cs
+++ b/System/JadeDynastyTower/JadyDynastyTowerVictoryWin.cs
@@ -106,7 +106,7 @@
         {
             model.RequestAward();
 
-            if (model.IsTopFloor(model.currentFloor))
+            if (model.IsTopFloor(model.highestPassFloor))
             {
                 dungeonModel.ExitCurrentDungeon();
             }
diff --git a/System/JadeDynastyTower/TowerWin.cs b/System/JadeDynastyTower/TowerWin.cs
index c06ca7e..e06b388 100644
--- a/System/JadeDynastyTower/TowerWin.cs
+++ b/System/JadeDynastyTower/TowerWin.cs
@@ -19,6 +19,8 @@
         [SerializeField] FunctionButton m_JadeDynastyTower;
         [SerializeField] Button m_Close;
 
+        JadeDynastyTowerModel jadeDynastyTowerModel { get { return ModelCenter.Instance.GetModel<JadeDynastyTowerModel>(); } }
+
         #region Built-in
         protected override void BindController()
         {
@@ -33,6 +35,7 @@
 
         protected override void OnPreOpen()
         {
+            jadeDynastyTowerModel.ConfirmRedpoint01();
         }
 
         protected override void OnAfterOpen()
diff --git a/System/KnapSack/BetterItemGetBehaviour.cs b/System/KnapSack/BetterItemGetBehaviour.cs
index 2ea189e..26253f9 100644
--- a/System/KnapSack/BetterItemGetBehaviour.cs
+++ b/System/KnapSack/BetterItemGetBehaviour.cs
@@ -90,43 +90,63 @@
             ItemModel betterEquip;
             if (model.TryGetBetterEquip(model.currentEquipGuid, out betterEquip))
             {
-                var itemConfig = Config.Instance.Get<ItemConfig>(betterEquip.itemInfo.ItemID);
-                if (NewBieCenter.Instance.inGuiding)
+                switch(betterEquip.packType)
+                {
+                    case PackType.rptItem:
+                        ToOpenRoleKanpsack(betterEquip);
+                        break;
+                    case PackType.rptJadeDynastyItem:
+                        ToOpenJadeDynastyKnapsack(betterEquip);
+                        break;
+                }
+            
+            }
+
+        }
+
+        private void ToOpenRoleKanpsack(ItemModel betterEquip)
+        {
+            var itemConfig = Config.Instance.Get<ItemConfig>(betterEquip.itemInfo.ItemID);
+            if (NewBieCenter.Instance.inGuiding)
+            {
+                playerPack.SetLookIndex(betterEquip.itemInfo.ItemGUID);
+                WindowCenter.Instance.Close<MainInterfaceWin>();
+                WindowCenter.Instance.Open<KnapSackWin>();
+
+                StartCoroutine(Co_Delay(model.currentEquipGuid));
+            }
+            else
+            {
+                if (itemConfig.ItemColor >= 3)
                 {
                     playerPack.SetLookIndex(betterEquip.itemInfo.ItemGUID);
                     WindowCenter.Instance.Close<MainInterfaceWin>();
                     WindowCenter.Instance.Open<KnapSackWin>();
 
-                    StartCoroutine(Co_Delay(model.currentEquipGuid));
-                }
-                else
-                {
-                    if (itemConfig.ItemColor >= 3)
+                    if ((itemConfig.LV == 1 || itemConfig.LV == 2) && (itemConfig.EquipPlace == 1 || itemConfig.EquipPlace == 2))
                     {
-                        playerPack.SetLookIndex(betterEquip.itemInfo.ItemGUID);
-                        WindowCenter.Instance.Close<MainInterfaceWin>();
-                        WindowCenter.Instance.Open<KnapSackWin>();
-
-                        if ((itemConfig.LV == 1 || itemConfig.LV == 2) && (itemConfig.EquipPlace == 1 || itemConfig.EquipPlace == 2))
-                        {
-                            StartCoroutine(Co_Delay(model.currentEquipGuid));
-                        }
-                        else
-                        {
-                            model.ReportConfirmBetterEquip(model.currentEquipGuid);
-                        }
+                        StartCoroutine(Co_Delay(model.currentEquipGuid));
                     }
                     else
                     {
-                        PackSendQuestMgr.Instance.SendPutOnQuest(ItemWinBtnType.putOn, model.currentEquipGuid);
                         model.ReportConfirmBetterEquip(model.currentEquipGuid);
                     }
                 }
-
+                else
+                {
+                    PackSendQuestMgr.Instance.SendPutOnQuest(ItemWinBtnType.putOn, model.currentEquipGuid);
+                    model.ReportConfirmBetterEquip(model.currentEquipGuid);
+                }
             }
 
         }
 
+        private void ToOpenJadeDynastyKnapsack(ItemModel betterEquip)
+        {
+            var model = ModelCenter.Instance.GetModel<JadeDynastyEquipModel>();
+            model.SetLookItemModel(betterEquip.itemInfo.ItemGUID);
+        }
+
         private void ShowBetterEquipDetails()
         {
             ItemModel betterEquip;
diff --git a/System/KnapSack/Logic/EquipTip.cs b/System/KnapSack/Logic/EquipTip.cs
index 21a7f54..6f9f5b4 100644
--- a/System/KnapSack/Logic/EquipTip.cs
+++ b/System/KnapSack/Logic/EquipTip.cs
@@ -971,7 +971,37 @@
             source.jobTitleText.text = Language.Get("EquipWin_JobTitleText_1");
             source.jobText.text = itemTipsModel.GetEquipJobName(itemAttrData);
             source.partTitleText.text = Language.Get("EquipWin_PartTitleText_1");
-            source.partText.text = StringUtility.Contact(FuncConfigConfig.GetEquipTipsAreaName(itemAttrData.itemConfig.EquipPlace), itemAttrData.itemConfig.LV,Language.Get("L1047"));
+            int equipPlace = itemAttrData.itemConfig.EquipPlace;
+            switch(equipPlace)
+            {
+                case 1:
+                case 2:
+                case 3:
+                case 4:
+                case 5:
+                case 6:
+                case 7:
+                case 8:
+                case 9:
+                case 10:
+                case 12:
+                    source.partText.text = StringUtility.Contact(FuncConfigConfig.GetEquipTipsAreaName(itemAttrData.itemConfig.EquipPlace), itemAttrData.itemConfig.LV, Language.Get("L1047"));
+                    break;
+                case 121:
+                case 122:
+                case 123:
+                case 124:
+                case 125:
+                case 126:
+                case 127:
+                case 128:
+                case 129:
+                case 130:
+                case 131:
+                case 132:
+                    source.partText.text = StringUtility.Contact(Language.Get(((RoleEquipType)equipPlace).ToString()), itemAttrData.itemConfig.LV, Language.Get("L1047"));
+                    break;
+            }
         }
 
         private void CreateFuncBtn()
diff --git a/System/KnapSack/Logic/ItemTipsModel.cs b/System/KnapSack/Logic/ItemTipsModel.cs
index 9825af4..75af654 100644
--- a/System/KnapSack/Logic/ItemTipsModel.cs
+++ b/System/KnapSack/Logic/ItemTipsModel.cs
@@ -1075,6 +1075,100 @@
                 }
             }
         }
+
+        public void SetJadeDynastyItemTipsBtn(ItemAttrData attrData)
+        {
+            if (attrData == null) return;
+
+            bool isOverdue = modelInterface.IsOverdue(attrData.guid, attrData.itemId, attrData.useDataDict);
+            if (attrData.itemConfig.CanSell == 1)
+            {
+                attrData.SetTipsFuncBtn(ItemWinBtnType.sell, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendSellQuest(ItemWinBtnType.sell, attrData); });
+            }
+            List<int> dismantleReturnlist = attrData.GetUseDataModel((int)ItemUseDataKey.Def_IudetItemDecompound);
+            if (dismantleReturnlist != null && dismantleReturnlist.Count > 0)
+            {
+                attrData.SetTipsFuncBtn(ItemWinBtnType.dismantle, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendDismantleQuest(ItemWinBtnType.dismantle, attrData); });
+            }
+
+            if (!isOverdue)
+            {
+                if (attrData.itemConfig.JumpComposeCondi != null && attrData.itemConfig.JumpComposeCondi.Length > 0)
+                {
+                    attrData.SetTipsFuncBtn(ItemWinBtnType.compose, (ItemWinBtnType, ItemAttrData) => {
+                        int jumpId = 0;
+                        bool isUnlock = ModelCenter.Instance.GetModel<ComposeWinModel>().CheckComposeItemById(attrData.itemId, out jumpId);
+                        if (isUnlock)
+                        {
+                            PackSendQuestMgr.Instance.ClickComposeBtn(ItemWinBtnType.compose, jumpId);
+                        }
+                    });
+                }
+
+                if (attrData.itemConfig.Type == 25 && attrData.itemConfig.Effect1 == 225)
+                {
+                    attrData.SetTipsFuncBtn(ItemWinBtnType.inlay, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.ClickInlayBtn(ItemWinBtnType.inlay, attrData.guid); });
+                }
+
+                if (attrData.itemConfig.CanTrade == 1 && attrData.isBind == 0)
+                {
+                    attrData.SetTipsFuncBtn(ItemWinBtnType.putAway, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendPutAwayQuest(ItemWinBtnType.putAway, attrData.guid); });
+                }
+            }
+
+            if (attrData.count > 1)
+            {
+                attrData.SetTipsFuncBtn(ItemWinBtnType.split, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.OnClickSplitBtn(ItemWinBtnType.split, attrData.guid); });
+            }
+
+            if (!isOverdue)
+            {
+                switch (attrData.winType)
+                {
+                    case ItemWinType.equipWin:
+                        attrData.SetTipsFuncBtn(ItemWinBtnType.putOn, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendPutOnQuest(ItemWinBtnType.putOn, attrData.guid); });
+                        break;
+                }
+
+                if (attrData.itemConfig.UseTag == 1)
+                {
+                    attrData.SetTipsFuncBtn(ItemWinBtnType.makeUse, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendUseItemQuest(ItemWinBtnType.makeUse, attrData.index); });
+                }
+            }
+
+            for (int i = 0; i < ItemRenewalIds.Length; i++)
+            {
+                if (ItemRenewalIds[i] == attrData.itemId)
+                {
+                    if (isOverdue)
+                    {
+                        attrData.SetTipsFuncBtn(ItemWinBtnType.renewal, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendRenewalQuest(ItemWinBtnType.renewal, attrData.guid); });
+                    }
+                }
+            }
+
+            for (int i = 0; i < tryPutOnEquipIds.Length; i++)
+            {
+                if (tryPutOnEquipIds[i] == attrData.itemId)
+                {
+                    if (PlayerDatas.Instance.baseData.coinPointTotal <= 0)
+                    {
+                        attrData.SetTipsFuncBtn(ItemWinBtnType.renewal, (ItemWinBtnType, ItemAttrData) => { WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.FirstRecharge); });
+                    }
+                }
+            }
+        }
+
+        public void SetJadeDynastyPutOnTipsBtn(ItemAttrData attrData)
+        {
+            if (attrData == null) return;
+
+            RoleEquipType equipType = (RoleEquipType)attrData.itemConfig.EquipPlace;
+
+            attrData.SetTipsFuncBtn(ItemWinBtnType.putOff, (ItemWinBtnType, ItemAttrData) => {
+                PackSendQuestMgr.Instance.SendPutOffQuest(ItemWinBtnType.putOff, attrData.guid);
+            });
+        }
         #endregion
 
         #region 璁剧疆鑾峰彇閫斿緞鍒楄〃
@@ -1480,6 +1574,18 @@
                 case 9:
                 case 10:
                 case 12:
+                case 121:
+                case 122:
+                case 123:
+                case 124:
+                case 125:
+                case 126:
+                case 127:
+                case 128:
+                case 129:
+                case 130:
+                case 131:
+                case 132:
                     idlist.Sort(CompareLegendAttrType);
                     break;
                 case 101:
@@ -1634,6 +1740,18 @@
                         case 9:
                         case 10:
                         case 12:
+                        case 121:
+                        case 122:
+                        case 123:
+                        case 124:
+                        case 125:
+                        case 126:
+                        case 127:
+                        case 128:
+                        case 129:
+                        case 130:
+                        case 131:
+                        case 132:
                             s = GetTextColorByLegendType(GetLegendType(idlist[i]), s);
                             break;
                         case 101:
diff --git a/System/KnapSack/Logic/PackModelInterface.cs b/System/KnapSack/Logic/PackModelInterface.cs
index fd7a562..8bab37a 100644
--- a/System/KnapSack/Logic/PackModelInterface.cs
+++ b/System/KnapSack/Logic/PackModelInterface.cs
@@ -463,13 +463,16 @@
                     Equation.Instance.AddKeyValue("AtkSpeedC", 0);
                 }
                 DebugEx.Log("璇勫垎锛�" + Equation.Instance.Eval<double>(_equipGSFormula.Numerical1));
-                if (type == PackType.rptDogzEquip || type == PackType.rptDogzItem)
+                switch(type)
                 {
-                    return Equation.Instance.Eval<int>(_equipGSFormula.Numerical3);
-                }
-                else
-                {
-                    return Equation.Instance.Eval<int>(_equipGSFormula.Numerical1);
+                    case PackType.rptDogzEquip:
+                    case PackType.rptDogzItem:
+                         return Equation.Instance.Eval<int>(_equipGSFormula.Numerical3);
+                    case PackType.rptJadeDynastyItem:
+                    case PackType.rptJadeDynastyEquip:
+                        return Equation.Instance.Eval<int>(_equipGSFormula.Numerical4);
+                    default:
+                        return Equation.Instance.Eval<int>(_equipGSFormula.Numerical1);
                 }
             }
             return 0;
@@ -817,27 +820,54 @@
 
         public event Action<string> RefreshGetBetterEquipEvent; //寰楀埌鏇村ソ鐨勮澶� value 鐗╁搧鐨勫疄渚婭D
 
+        public bool IsSameJob(int jobLimit)
+        {
+            return jobLimit == 0 || jobLimit / 100 == PlayerDatas.Instance.baseData.Job;
+        }
+
         public void OnGetEquip(ItemModel model)
         {
-            if (model.packType != PackType.rptItem
-                || (model.chinItemModel.EquipPlace <= 0 || model.chinItemModel.EquipPlace > 12)
-                || (model.chinItemModel.JobLimit / 100 != PlayerDatas.Instance.baseData.Job
-                    && model.chinItemModel.Type != (int)ItemType.Necklaces
-                    && model.chinItemModel.Type != (int)ItemType.FairyEquip
-                    && model.chinItemModel.Type != (int)ItemType.SpiritAnimal))
-            {
-                return;
-            }
+            if (model == null) return;
+            if (model.packType != PackType.rptItem && model.packType != PackType.rptJadeDynastyItem) return;
+            if (!IsSameJob(model.chinItemModel.JobLimit)) return;
 
-            if (betterEquipExceptDungeonDict.ContainsKey(PlayerDatas.Instance.baseData.MapID))
+            int equipPlace = model.chinItemModel.EquipPlace;
+            switch ((RoleEquipType)equipPlace)
             {
-                if (betterEquipExceptDungeonDict[PlayerDatas.Instance.baseData.MapID].Contains(model.itemInfo.ItemID))
-                {
-                    return;
-                }
+                case RoleEquipType.retWeapon:
+                case RoleEquipType.retWeapon2:
+                case RoleEquipType.retHat:
+                case RoleEquipType.retClothes:
+                case RoleEquipType.retBelt:
+                case RoleEquipType.retTrousers:
+                case RoleEquipType.retShoes:
+                case RoleEquipType.retNeck:
+                case RoleEquipType.retFairyCan:
+                case RoleEquipType.retFairyCan2:
+                case RoleEquipType.retWing:
+                case RoleEquipType.retSpiritAnimal:
+                case RoleEquipType.JadeDynasty_Cloak:
+                case RoleEquipType.JadeDynasty_FaceMask:
+                case RoleEquipType.JadeDynasty_Glove1:
+                case RoleEquipType.JadeDynasty_Glove2:
+                case RoleEquipType.JadeDynasty_Ruyi:
+                case RoleEquipType.JadeDynasty_Pendant:
+                case RoleEquipType.JadeDynasty_Ring1:
+                case RoleEquipType.JadeDynasty_Ring2:
+                case RoleEquipType.JadeDynasty_Sword1:
+                case RoleEquipType.JadeDynasty_Sword2:
+                case RoleEquipType.JadeDynasty_Sword3:
+                case RoleEquipType.JadeDynasty_Sword4:
+                    if (betterEquipExceptDungeonDict.ContainsKey(PlayerDatas.Instance.baseData.MapID))
+                    {
+                        if (betterEquipExceptDungeonDict[PlayerDatas.Instance.baseData.MapID].Contains(model.itemInfo.ItemID))
+                        {
+                            return;
+                        }
+                    }
+                    SetGetBetterEquipEvent(model);
+                    break;
             }
-
-            SetGetBetterEquipEvent(model);
         }
 
         private void SetGetBetterEquipEvent(ItemModel model)
@@ -1672,10 +1702,6 @@
                             putOnModel = putOnModel2;
                         }
                     }
-                }
-                else
-                {
-                    putOnModel = putOnModel2;
                 }
 
                 int equipScore1 = 0;
diff --git a/System/KnapSack/Logic/PackSendQuestMgr.cs b/System/KnapSack/Logic/PackSendQuestMgr.cs
index 133b941..7a2e804 100644
--- a/System/KnapSack/Logic/PackSendQuestMgr.cs
+++ b/System/KnapSack/Logic/PackSendQuestMgr.cs
@@ -166,18 +166,6 @@
                 }
             }
 
-            if(config.EquipPlace >= (int)RoleEquipType.JadeDynasty_Cloak
-                && config.EquipPlace <= (int)RoleEquipType.JadeDynasty_Sword4)
-            {
-                var jadeDynastyModel = ModelCenter.Instance.GetModel<JadeDynastyEquipModel>();
-                bool islock = jadeDynastyModel.IsLockEquipPlace(config.EquipPlace);
-                isCanPut = !islock;
-                if(islock)
-                {
-                    MessageWin.Inst.ShowFixedTip("璇疯В閿佽瘺浠欏");
-                }
-            }
-
             if(isCanPut)
             {
                 CheckPutOnPlace();
@@ -568,6 +556,33 @@
                 return;
             }
 
+            if (sendItemModel.chinItemModel.EquipPlace >= (int)RoleEquipType.JadeDynasty_Cloak
+              && sendItemModel.chinItemModel.EquipPlace <= (int)RoleEquipType.JadeDynasty_Sword4)
+            {
+                var jadeDynastyModel = ModelCenter.Instance.GetModel<JadeDynastyEquipModel>();
+                bool islock = jadeDynastyModel.IsLockEquipPlace(sendItemModel.chinItemModel.EquipPlace);
+                if (islock)
+                {
+                    int towerlayer = 0;
+                    jadeDynastyModel.TryGetLockTowerLayer(sendItemModel.chinItemModel.EquipPlace, out towerlayer);
+                    SysNotifyMgr.Instance.ShowTip("JadeDynastyEquip", towerlayer);
+                    return;
+                }
+            }
+
+
+            if (sendItemModel != null && sendItemModel.itemInfo.IsBind == 0)
+            {
+                ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("JadeDynastyEquip5"),(bool isOk)=>
+                {
+                    if(isOk)
+                    {
+                        SendPutOnQuest(equipPlace, itemIndex);
+                    }
+                });
+                return;
+            }
+
             SendPutOnQuest(equipPlace, itemIndex);
         }
 
diff --git a/System/Launch/LaunchWin.cs b/System/Launch/LaunchWin.cs
index 3934c2f..7f3bea1 100644
--- a/System/Launch/LaunchWin.cs
+++ b/System/Launch/LaunchWin.cs
@@ -18,8 +18,11 @@
         [SerializeField] UIAlphaTween m_AlphaTween;
         [SerializeField] Image m_BackGround;
         [SerializeField] RectTransform m_AndroidProgressContainer;
-        [SerializeField] SmoothSlider m_ProgressSlider;
-        [SerializeField] Text m_Progress;
+        [SerializeField] SmoothSlider m_PartProgressSlider;
+        [SerializeField] Text m_PartProgress;
+        [SerializeField] SmoothSlider m_TotalProgressSlider;
+        [SerializeField] Text m_TotalProgress;
+        [SerializeField] Text m_StageDescription;
         [SerializeField] RectTransform m_IosProgressContainer;
         [SerializeField] Text m_IosProgressTip;
         [SerializeField] Text m_BuildTime;
@@ -28,12 +31,8 @@
 
         bool assetBuildTimeShowed = false;
 
+        Launch.LaunchStage showStage = Launch.LaunchStage.None;
         string stepDescription = string.Empty;
-
-        float behaviourProgress = 0f;
-
-        float timer = 0.1f;
-        float interval = 0.1f;
 
         float backGroundTimer = 0f;
         int backGroundIndex = 0;
@@ -66,8 +65,7 @@
         {
             backGroundTimer = 0f;
             backGroundIndex = 0;
-            behaviourProgress = 0f;
-            m_ProgressSlider.ResetValue(0f);
+            m_TotalProgressSlider.ResetValue(0f);
             m_AlphaTween.SetStartState();
 
             m_Version.text = StringUtility.Contact(VersionConfig.Get().version, "_", VersionConfig.Get().buildIndex);
@@ -84,16 +82,14 @@
             {
                 m_AndroidProgressContainer.gameObject.SetActive(false);
                 m_IosProgressContainer.gameObject.SetActive(true);
-                m_IosProgressTip.text = Language.GetFromLocal(30);
             }
             else
             {
                 m_AndroidProgressContainer.gameObject.SetActive(true);
                 m_IosProgressContainer.gameObject.SetActive(false);
-                m_Progress.text = VersionUtility.Instance.IsShangGu() ? "" : StringUtility.Contact(0, "%");
-                UpdateLoadingProgress(Launch.currentStage, Launch.progress);
-                Launch.progressEvent += UpdateLoadingProgress;
             }
+
+            UpdateProgress();
         }
 
         protected override void OnAfterOpen()
@@ -102,7 +98,6 @@
 
         protected override void OnPreClose()
         {
-            Launch.progressEvent -= UpdateLoadingProgress;
         }
 
         protected override void OnAfterClose()
@@ -115,51 +110,36 @@
             m_AlphaTween.Play();
         }
 
-        void UpdateLoadingProgress(Launch.LaunchStage _stage, float _progress)
+        string GetLaunchStageDescription(Launch.LaunchStage _stage)
         {
-            behaviourProgress = _progress;
             switch (_stage)
             {
+                case Launch.LaunchStage.SDKInit:
+                    return Language.GetFromLocal(36);
                 case Launch.LaunchStage.AssetCopy:
-                    stepDescription = Language.GetFromLocal(14);
-                    break;
+                    return Language.GetFromLocal(37);
                 case Launch.LaunchStage.ClientVersion:
-                    stepDescription = Language.GetFromLocal(15);
-                    break;
+                    return Language.GetFromLocal(38);
+                case Launch.LaunchStage.CheckAsset:
+                    return Language.GetFromLocal(39);
                 case Launch.LaunchStage.DownLoad:
-                    stepDescription = Language.GetFromLocal(16);
-                    break;
-                case Launch.LaunchStage.ConfigLoad:
-                    stepDescription = Language.GetFromLocal(17);
-                    break;
+                    return Language.GetFromLocal(40);
+                case Launch.LaunchStage.AssetBundleInit:
+                    return Language.GetFromLocal(41);
+                case Launch.LaunchStage.ConfigInit:
+                    return Language.GetFromLocal(42);
+                case Launch.LaunchStage.Complete:
+                    return Language.GetFromLocal(43);
+                default:
+                    return "";
             }
-
         }
 
         protected override void LateUpdate()
         {
             base.LateUpdate();
 
-            if (Application.platform == RuntimePlatform.IPhonePlayer)
-            {
-                m_IosProgressContainer.gameObject.SetActive(Launch.currentStage != Launch.LaunchStage.DownLoad);
-                var remainder = ((int)Time.time) % 3;
-                var dot = remainder == 0 ? "." : remainder == 1 ? ".." : "...";
-                m_IosProgressTip.text = StringUtility.Contact(Language.GetFromLocal(30), dot);
-            }
-            else
-            {
-                m_ProgressSlider.value = behaviourProgress;
-                m_Progress.text = VersionUtility.Instance.IsShangGu() ? stepDescription :
-                    StringUtility.Contact(stepDescription, Mathf.RoundToInt(behaviourProgress * 100), "%");
-
-                if (!assetBuildTimeShowed && AssetVersionUtility.assetsBuildTime != DateTime.MinValue)
-                {
-                    assetBuildTimeShowed = true;
-                    var totalMinute = (int)(AssetVersionUtility.assetsBuildTime - new DateTime(2018, 1, 1)).TotalMinutes;
-                    m_Version.text = StringUtility.Contact(VersionConfig.Get().version, "_", VersionConfig.Get().buildIndex, "_", totalMinute.ToString());
-                }
-            }
+            UpdateProgress();
 
             backGroundTimer += Time.deltaTime;
             if (backGroundTimer >= 3f)
@@ -174,6 +154,61 @@
             WindowCenter.Instance.OpenFromLocal<UserHelpWin>();
         }
 
+        private void UpdateProgress()
+        {
+            if (Application.platform == RuntimePlatform.IPhonePlayer)
+            {
+                m_IosProgressContainer.gameObject.SetActive(Launch.progressInfo.stage != Launch.LaunchStage.DownLoad);
+                var remainder = ((int)Time.time) % 3;
+                var dot = remainder == 0 ? "." : remainder == 1 ? ".." : "...";
+                m_IosProgressTip.text = StringUtility.Contact(Language.GetFromLocal(30), dot);
+            }
+            else
+            {
+                var progressInfo = Launch.progressInfo;
+                m_TotalProgressSlider.value = progressInfo.totalProgress;
+                m_TotalProgress.text = StringUtility.Contact(Mathf.RoundToInt(progressInfo.totalProgress * 100), "%");
+
+                if (progressInfo.stage == Launch.LaunchStage.DownLoad)
+                {
+                    if (m_PartProgressSlider.gameObject.activeInHierarchy)
+                    {
+                        m_PartProgressSlider.gameObject.SetActive(false);
+                    }
+                }
+                else
+                {
+                    if (!m_PartProgressSlider.gameObject.activeInHierarchy)
+                    {
+                        m_PartProgressSlider.gameObject.SetActive(true);
+                    }
+
+                    m_PartProgressSlider.value = progressInfo.partProgress;
+                    m_PartProgress.text = StringUtility.Contact(Mathf.RoundToInt(progressInfo.partProgress * 100), "%");
+                }
+
+                DisplayStageDescription(progressInfo.stage);
+
+                if (!assetBuildTimeShowed && AssetVersionUtility.assetsBuildTime != DateTime.MinValue)
+                {
+                    assetBuildTimeShowed = true;
+                    var totalMinute = (int)(AssetVersionUtility.assetsBuildTime - new DateTime(2018, 1, 1)).TotalMinutes;
+                    m_Version.text = StringUtility.Contact(VersionConfig.Get().version, "_", VersionConfig.Get().buildIndex, "_", totalMinute.ToString());
+                }
+            }
+
+        }
+
+        private void DisplayStageDescription(Launch.LaunchStage stage)
+        {
+            if (showStage != stage)
+            {
+                showStage = stage;
+                m_StageDescription.text = GetLaunchStageDescription(stage);
+            }
+        }
+
+
     }
 }
 
diff --git a/System/Login/ServerListCenter.cs b/System/Login/ServerListCenter.cs
index 72fddad..09142a5 100644
--- a/System/Login/ServerListCenter.cs
+++ b/System/Login/ServerListCenter.cs
@@ -188,38 +188,42 @@
     {
         if (_ok)
         {
-            serverListCommonPartGot = true;
-            serverInfoCommon = JsonMapper.ToObject<ServerInfoCommon>(_result);
-
-            serverInfoCommon.recommend = new ServerGroup();
-            serverInfoCommon.recommend.group_title = Language.GetFromLocal(18);
-
-            var recommendServers = new List<ServerData>();
-            for (int i = 0; i < serverInfoCommon.common.Length; i++)
-            {
-                var serverList = serverInfoCommon.common[i].group_list;
-                foreach (var server in serverList)
-                {
-                    if (server.is_recommend == 1)
-                    {
-                        recommendServers.Add(server);
-                    }
-                }
-            }
-
-            serverInfoCommon.recommend.group_list = recommendServers.ToArray();
-
-            FiltrateDefaultServerAndServerGroup();
-
+            ServerListParser.Instance.PushCommonServerListRawData(_result);
             NetLinkWin.Hide();
-            if (onServerListRefreshEvent != null)
-            {
-                onServerListRefreshEvent();
-            }
         }
         else
         {
             Clock.Create(DateTime.Now + new TimeSpan(TimeSpan.TicksPerSecond), RequestServerCommonList);
+        }
+    }
+
+    public void SetServerlistCommon(ServerInfoCommon common)
+    {
+        serverInfoCommon = common;
+        serverInfoCommon.recommend = new ServerGroup();
+        serverInfoCommon.recommend.group_title = Language.GetFromLocal(18);
+
+        var recommendServers = new List<ServerData>();
+        for (int i = 0; i < serverInfoCommon.common.Length; i++)
+        {
+            var serverList = serverInfoCommon.common[i].group_list;
+            foreach (var server in serverList)
+            {
+                if (server.is_recommend == 1)
+                {
+                    recommendServers.Add(server);
+                }
+            }
+        }
+
+        serverInfoCommon.recommend.group_list = recommendServers.ToArray();
+        FiltrateDefaultServerAndServerGroup();
+
+        serverListCommonPartGot = true;
+
+        if (onServerListRefreshEvent != null)
+        {
+            onServerListRefreshEvent();
         }
     }
 
@@ -252,9 +256,7 @@
         if (_ok)
         {
             serverListPlayerPartGot = true;
-            serverInfoPlayer = JsonMapper.ToObject<ServerInfoPlayer>(_result);
-            ProcessRecentServerData();
-            FiltrateDefaultServerAndServerGroup();
+            ServerListParser.Instance.PushPlayerServerListRawData(_result);
         }
         else
         {
@@ -268,6 +270,12 @@
         }
     }
 
+    public void SetServerListPlayer(ServerInfoPlayer serverInfoPlayer)
+    {
+        ProcessRecentServerData();
+        FiltrateDefaultServerAndServerGroup();
+    }
+
     public bool TryGetServerGroup(string _key, out ServerGroup _group)
     {
         if (serverInfoPlayer != null && serverInfoPlayer.player != null && _key == serverInfoPlayer.player.group_title)
diff --git a/System/Login/ServerListParser.cs b/System/Login/ServerListParser.cs
new file mode 100644
index 0000000..3040923
--- /dev/null
+++ b/System/Login/ServerListParser.cs
@@ -0,0 +1,66 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System.Threading;
+using LitJson;
+
+public class ServerListParser : SingletonMonobehaviour<ServerListParser>
+{
+
+    bool hasCommonResult = false;
+    ServerInfoCommon serverInfoCommon;
+    bool hasPlayerResult = false;
+    ServerInfoPlayer serverInfoPlayer;
+
+    public void PushCommonServerListRawData(string content)
+    {
+        hasCommonResult = false;
+        ThreadPool.QueueUserWorkItem((object aaa) =>
+        {
+            serverInfoCommon = JsonMapper.ToObject<ServerInfoCommon>(content);
+            hasCommonResult = true;
+        });
+    }
+
+    public void PushPlayerServerListRawData(string content)
+    {
+        hasPlayerResult = false;
+        ThreadPool.QueueUserWorkItem((object aaa) =>
+        {
+            serverInfoPlayer = JsonMapper.ToObject<ServerInfoPlayer>(content);
+            hasPlayerResult = true;
+        });
+    }
+
+    public void ReportCommonResult()
+    {
+        if (serverInfoCommon != null)
+        {
+            ServerListCenter.Instance.SetServerlistCommon(serverInfoCommon);
+        }
+    }
+
+    public void ReportPlayerResult()
+    {
+        if (serverInfoPlayer != null)
+        {
+            ServerListCenter.Instance.SetServerListPlayer(serverInfoPlayer);
+        }
+    }
+
+    private void Update()
+    {
+        if (hasCommonResult)
+        {
+            ReportCommonResult();
+            hasCommonResult = false;
+        }
+
+        if (hasPlayerResult)
+        {
+            ReportPlayerResult();
+            hasPlayerResult = false;
+        }
+    }
+
+}
diff --git a/System/Login/ServerListParser.cs.meta b/System/Login/ServerListParser.cs.meta
new file mode 100644
index 0000000..3954e56
--- /dev/null
+++ b/System/Login/ServerListParser.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: b9bd5530884d0a445aa130e1980993f8
+timeCreated: 1547868402
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/OpenServerActivity/OpenServiceAchievementModel.cs b/System/OpenServerActivity/OpenServiceAchievementModel.cs
index 84f9bba..0003b26 100644
--- a/System/OpenServerActivity/OpenServiceAchievementModel.cs
+++ b/System/OpenServerActivity/OpenServiceAchievementModel.cs
@@ -120,6 +120,7 @@
     {
         GlobalTimeEvent.Instance.secondEvent -= secondEvent;
         GlobalTimeEvent.Instance.secondEvent += secondEvent;
+        GetDayNow();//鑾峰彇褰撳墠澶╂暟
         SetRedPoint();
 
     }
@@ -206,6 +207,8 @@
 
     public void WeekPartyInfo(HAA0A_tagMCWeekPartyInfo info)
     {
+        WeekPartyDayDic.Clear();
+        WeekPartyActionDic.Clear();
         ResetType = info.ResetType;
         string[] dateArray = info.StartDate.Split('-');
         if (dateArray != null && dateArray.Length == 3)
@@ -430,10 +433,7 @@
     }
     private void SetRedPointId()//璁剧疆绾㈢偣ID
     {
-        if (RedPointDic.Count > 0)
-        {
-            return;
-        }
+        RedPointDic.Clear();
         foreach (var key in WeekPartyDayInfoDic.Keys)
         {
             int RedPoint = Redpoint_key1 * 10 + key;
diff --git a/System/Rank/RankHeadCell.cs b/System/Rank/RankHeadCell.cs
index 4ffe0ef..a14d1cd 100644
--- a/System/Rank/RankHeadCell.cs
+++ b/System/Rank/RankHeadCell.cs
@@ -111,6 +111,7 @@
                         realmLv = (int)data.cmpValue;
                         break;
                     case PlayerRankData.RankType.JadeDynastyTower:
+                        realmLv = (int)data.value1;
                         jobText.text = data.cmpValue +Language.Get("JadeDynastyBossDungeon_Floor") ;
                         rankWhat.text =(10000-data.cmpValue2) +Language.Get("RealmWin_Bewrite_35") ;
                         break;
diff --git a/System/Realm/RealmPropertyUpWin.cs b/System/Realm/RealmPropertyUpWin.cs
index 7f880fb..0367dc9 100644
--- a/System/Realm/RealmPropertyUpWin.cs
+++ b/System/Realm/RealmPropertyUpWin.cs
@@ -425,6 +425,8 @@
             {
                 var config = Config.Instance.Get<SkillFrameAnimationConfig>(skillId);
                 m_NewGotSkillFrame.SetSprites(sprites, (float)config.totalTime / 1000);
+                var rt = m_NewGotSkillFrame.transform as RectTransform;
+                rt.sizeDelta = config.sizeDelta;
             }
         }
 
diff --git a/System/WindowJump/WindowJumpMgr.cs b/System/WindowJump/WindowJumpMgr.cs
index d7a5367..cd33759 100644
--- a/System/WindowJump/WindowJumpMgr.cs
+++ b/System/WindowJump/WindowJumpMgr.cs
@@ -703,6 +703,9 @@
             case JumpUIType.PrayforDrug:
                 SetJumpLogic<PrayforDrugWin>(_tagWinSearchModel.TABID);
                 break;
+            case JumpUIType.JadeDynastyTower288:
+                SetJumpLogic<TowerWin>(_tagWinSearchModel.TABID);
+                break;
             case JumpUIType.JadeDynastyTowerRank:
                 var rankModel = ModelCenter.Instance.GetModel<RankModel>();
                 rankModel.jumpRankType = int.Parse(_tagWinSearchModel.SelectActive);
@@ -1598,6 +1601,7 @@
     SevenDaysTour285 = 285, //涓冩棩宸$ぜ
     SevenDaysTour286 = 286, //涓冩棩宸$ぜ
     SevenDaysTour287 = 287, //涓冩棩宸$ぜ
+    JadeDynastyTower288 = 288,//璇涗粰濉�
     JadeDynastyTowerRank = 289,//鎺掕姒�-璇涗粰濉�
 
     DhszTs = 1001,//瀹氭捣绁為拡鍔熸硶鎻愬崌鐣岄潰
diff --git a/UI/Common/FrameEffect.cs b/UI/Common/FrameEffect.cs
index 61c8786..1a268a9 100644
--- a/UI/Common/FrameEffect.cs
+++ b/UI/Common/FrameEffect.cs
@@ -85,8 +85,8 @@
                 timer = 0f;
                 tempSumTime = sumTime;
 
+                m_Behaviour.sprite = m_Sprites[index];
                 m_Behaviour.overrideSprite = m_Sprites[index];
-                m_Behaviour.SetNativeSize();
             }
         }
 
diff --git a/UI/Common/SortTable.cs b/UI/Common/SortTable.cs
index d3dd56f..75df6f3 100644
--- a/UI/Common/SortTable.cs
+++ b/UI/Common/SortTable.cs
@@ -80,12 +80,31 @@
             _sortCell.sortTypeTxt.text = Language.Get(m_SortElements[cell.index].textKey);
         }
 
-        public void SetDefault()
+        public void SetDefault(int value = 0)
         {
-            if (m_TargetDisplay != null && m_SortElements != null && m_SortElements.Count > 0)
+            if(value == 0)
             {
-                m_TargetDisplay.text = Language.Get(m_SortElements[0].textKey);
+                if (m_TargetDisplay != null && m_SortElements != null && m_SortElements.Count > 0)
+                {
+                    m_TargetDisplay.text = Language.Get(m_SortElements[0].textKey);
+                }
             }
+            else
+            {
+                if (m_TargetDisplay != null && m_SortElements != null && m_SortElements.Count > 0)
+                {
+                    foreach(var key in m_SortElements)
+                    {
+                        if(key.type == value)
+                        {
+                            m_TargetDisplay.text = Language.Get(key.textKey);
+                            break;
+                        }
+                    }
+                  
+                }
+            }
+           
         }
     }
 
diff --git a/Utility/EnumHelper.cs b/Utility/EnumHelper.cs
index b2695b1..8be92f8 100644
--- a/Utility/EnumHelper.cs
+++ b/Utility/EnumHelper.cs
@@ -1342,6 +1342,7 @@
     Fairy = 17,//浠欐棌娉曞疂
     PetSoul = 18,//鐏靛疇榄傜煶
     HorseSoul = 19,//鍧愰獞榄傜煶
+    JadeDynastyEquip = 25, //璇涗粰瑁呭
 }
 
 public enum E_AtkType
diff --git a/Utility/StageLoadTimeOutCatcher.cs b/Utility/StageLoadTimeOutCatcher.cs
index 1a7fed6..95c3eaa 100644
--- a/Utility/StageLoadTimeOutCatcher.cs
+++ b/Utility/StageLoadTimeOutCatcher.cs
@@ -12,6 +12,7 @@
     public static ProtocolRecorder gotA126Time;
     public static ProtocolRecorder gotA127Time;
     public static ProtocolRecorder got0109Time;
+    public static ProtocolRecorder got0403Time;
     public static ProtocolRecorder send0107Time;
 
     public static StageLoadTimeOutCatcher Begin(int stageId)
@@ -46,13 +47,14 @@
         {
             var title = StringUtility.Contact(stageId, "鍦板浘鍔犺浇瓒呮椂");
             var description = StringUtility.Contact(
-                                        "寮�濮嬫椂闂�:", startTime.ToString("HH:mm:ss"), ";",
-                                        "瓒呮椂鏃堕棿:", DateTime.Now.ToString("HH:mm:ss"),
-                                        "0102璁板綍:", got0102Time.ToString(), ";",
-                                        "A126璁板綍:", gotA126Time.ToString(), ";",
-                                        "A127璁板綍:", gotA127Time.ToString(), ";",
-                                        "0109璁板綍:", got0109Time.ToString(), ";",
-                                        "0107璁板綍:", send0107Time.ToString());
+                                        "寮�濮嬫椂闂�:", startTime.ToString("HH:mm:ss"), "$$",
+                                        "瓒呮椂鏃堕棿:", DateTime.Now.ToString("HH:mm:ss"), "$$",
+                                        got0102Time.ToString(), "$$",
+                                        gotA126Time.ToString(), "$$",
+                                        gotA127Time.ToString(), "$$",
+                                        got0109Time.ToString(), "$$",
+                                        send0107Time.ToString(), "$$",
+                                        got0403Time.ToString());
 
             ExceptionCatcher.ReportException(title, description);
             Stop();
@@ -79,20 +81,11 @@
             case "0107":
                 send0107Time = recorder;
                 break;
+            case "0403":
+                got0403Time = recorder;
+                break;
             default:
                 break;
-        }
-
-        try
-        {
-            var title = StringUtility.Contact("鍦板浘鍔犺浇璁板綍-->灏佸寘缂栧彿锛�", number);
-            var description = StringUtility.Contact(recorder.ToString(), "鐜╁:", PlayerDatas.Instance.baseData.PlayerName);
-
-            ExceptionCatcher.ReportException(title, description);
-        }
-        catch (System.Exception ex)
-        {
-
         }
     }
 

--
Gitblit v1.8.0