From 703337574c8d4d4e852ea90c778e3aff3523ce12 Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期三, 26 九月 2018 15:12:31 +0800
Subject: [PATCH] Merge branch 'master' into 1871天赋功能

---
 System/KnapSack/PreciousItemGetBehaviour.cs         |   15 
 System/Vip/VipInvest/RotatePointer.cs.meta          |   12 
 System/AssetVersion/AssetVersionUtility.cs          |    2 
 System/DogzDungeon/DogzDungeonBreifInfoBehaviour.cs |   66 ++
 System/Pet/PlayerPetDatas.cs                        |   41 +
 System/Tip/PromoteDetailsWin.cs                     |    2 
 System/Login/LoginModel.cs                          |   23 
 Core/GameEngine/Login/Launch.cs                     |  147 ++++---
 System/Vip/VipInvest/WheelOfFortuneWin.cs.meta      |   12 
 System/WorldMap/LocalMapFindPath.cs                 |    6 
 System/KnapSack/Logic/PlayerPackModels.cs           |   40 +
 System/ClientVersion/VersionUpdateWin.cs            |   50 +
 System/OpenServerActivity/ImpactRankWin.cs          |    1 
 System/SystemSetting/SettingEffectMgr.cs            |   29 -
 System/DogzDungeon/DogzEliteMonsterBehaviour.cs     |    4 
 System/KnapSack/Logic/BoxGetItemWin.cs              |   13 
 System/KnapSack/New/KnapSackWin.cs                  |    9 
 System/Compose/New/ComposeWin.cs                    |   16 
 System/KnapSack/Logic/PackModelInterface.cs         |   70 +++
 System/Compose/New/ComposeWinModel.cs               |    4 
 System/WorldMap/MapModel.cs                         |   45 +-
 System/DogzDungeon/DogzBoxBehaviour.cs              |    4 
 System/MainInterfacePanel/InGamePushContainer.cs    |    9 
 System/Treasure/TreasureModel.cs                    |    2 
 Fight/GameActor/GActorFight.cs                      |    3 
 System/Vip/VipInvest/WheelOfFortuneWin.cs           |   73 +++
 System/MainInterfacePanel/HighSettingTip.cs         |    9 
 Fight/Actor/AI/AI_BossDSX.cs                        |   43 +
 System/DogzDungeon/DogzDungeonWin.cs                |    1 
 System/Message/RichText.cs                          |    4 
 System/BlastFurnace/BlastFurnaceModel.cs            |   90 ++--
 System/Treasure/TreasurePotentialPanel.cs           |    2 
 System/ClientVersion/VersionConfig.cs               |    5 
 System/Login/LoginWin.cs                            |   13 
 System/WindowJump/WindowJumpMgr.cs                  |    2 
 System/MainInterfacePanel/TaskBoxBGMWin.cs          |    2 
 System/FairyAu/FairyAuTaskWin.cs                    |    2 
 System/MainInterfacePanel/TaskListTip.cs            |   25 +
 System/Vip/VipInvest/RotatePointer.cs               |  104 +++++
 System/Mount/PlayerMountDatas.cs                    |   29 +
 System/ClientVersion/VersionUtility.cs              |  147 ++++++-
 41 files changed, 883 insertions(+), 293 deletions(-)

diff --git a/Core/GameEngine/Login/Launch.cs b/Core/GameEngine/Login/Launch.cs
index a3bd2eb..08a4a36 100644
--- a/Core/GameEngine/Login/Launch.cs
+++ b/Core/GameEngine/Login/Launch.cs
@@ -118,69 +118,6 @@
                 progress = 0.1f;
                 break;
         }
-#endif
-
-#if UNITY_IOS && !UNITY_EDITOR
-        switch (VersionConfig.Get().assetAccess)
-        {
-            case InstalledAsset.FullAsset:
-            case InstalledAsset.HalfAsset:
-            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);
-                }
-                break;
-            case InstalledAsset.NullAsset:
-                progress = 0.1f;
-                break;
-        }
-#endif
-
-        OperationLogCollect.Instance.RecordLauchEvent(2);
-        OperationLogCollect.Instance.RecordEvent(2);
 
         m_CurrentStage = LaunchStage.ClientVersion;
         if (!Application.isEditor || InGameDownTestUtility.enable)
@@ -197,6 +134,90 @@
                 yield return null;
             }
         }
+#endif
+
+#if UNITY_IOS && !UNITY_EDITOR
+
+        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;
+            }
+        }
+
+        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)
+                    {
+                        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);
+                    }
+                    break;
+                case InstalledAsset.NullAsset:
+                    progress = 0.1f;
+                    break;
+            }
+        }
+
+#endif
+
+        OperationLogCollect.Instance.RecordLauchEvent(2);
+        OperationLogCollect.Instance.RecordEvent(2);
 
         if (VersionUtility.Instance.versionInfo != null && VersionUtility.Instance.versionInfo.downAsset == 1)
         {
diff --git a/Fight/Actor/AI/AI_BossDSX.cs b/Fight/Actor/AI/AI_BossDSX.cs
index 47bd814..5dbccc5 100644
--- a/Fight/Actor/AI/AI_BossDSX.cs
+++ b/Fight/Actor/AI/AI_BossDSX.cs
@@ -337,7 +337,7 @@
             if (m_TimeCount > 0.75f)
             {
                 PlayerDatas.Instance.hero.Behaviour.StopKillUntilDieAI();
-
+                skillContainer.blinkSkill.GetComponent<SkillButton>().enabled = false;
                 skillContainer.blinkSkill.transform.localScale = Vector3.one;
 
                 Transform _temp = skillContainer.blinkSkill.transform.Find("Img_BackGround");
@@ -345,6 +345,8 @@
 
                 _temp = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/JoyStick");
                 _temp.gameObject.SetActive(false);
+
+                
 
                 m_Step = 12;
                 m_TimeCount = 0;
@@ -356,6 +358,7 @@
             if (m_TimeCount > 0.4f)
             {
                 Time.timeScale = 0;
+                skillContainer.blinkSkill.GetComponent<SkillButton>().enabled = true;
                 GA_Hero.s_MapSwitching = true;
                 NewGuideModel _model = ModelCenter.Instance.GetModel<NewGuideModel>();
                 _model.showMask = true;
@@ -365,26 +368,28 @@
                 _model.direction = 2;
                 _model.pressedClose = false;
                 _model.clickClosed = true;
-                _model.onClose = null;
-                // () =>
-                // {
-                //     Time.timeScale = 1;
-                //     GA_Hero.s_MapSwitching = false;
-                //     if (PreFightMission.Instance.m_HuaShouEffect)
-                //     {
-                //         EffectMgr.Instance.RecyleUIEffect(1050, PreFightMission.Instance.m_HuaShouEffect.gameObject);
-                //         PreFightMission.Instance.m_HuaShouEffect = null;
-                //     }
+                _model.onClose = () =>
+                {
+                    Time.timeScale = 1;
+                    GA_Hero.s_MapSwitching = false;
+                    if (PreFightMission.Instance.m_HuaShouEffect)
+                    {
+                        EffectMgr.Instance.RecyleUIEffect(1050, PreFightMission.Instance.m_HuaShouEffect.gameObject);
+                        PreFightMission.Instance.m_HuaShouEffect = null;
+                    }
 
-                //     if (m_UIEffect)
-                //     {
-                //         EffectMgr.Instance.RecyleUIEffect(m_UIEffect.effect, m_UIEffect.gameObject);
-                //         m_UIEffect = null;
-                //     }
+                    PlayerDatas.Instance.hero.CastSkill(190);
+                    
+                    if (m_UIEffect)
+                    {
+                        EffectMgr.Instance.RecyleUIEffect(m_UIEffect.effect, m_UIEffect.gameObject);
+                        m_UIEffect = null;
+                    }
 
-                //     Transform _temp1 = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/JoyStick");
-                //     _temp1.gameObject.SetActive(true);
-                // };
+                    Transform _temp1 = WindowCenter.Instance.uiRoot.baseCanvas.Find("MainInterfaceWin/JoyStick");
+                    _temp1.gameObject.SetActive(true);
+                };
+
                 WindowCenter.Instance.Open<NewGuideWin>();
 
                 HeroBehaviour.OnUserClickSkill += OnCastSkill;
diff --git a/Fight/GameActor/GActorFight.cs b/Fight/GameActor/GActorFight.cs
index 3928de3..4627df8 100644
--- a/Fight/GameActor/GActorFight.cs
+++ b/Fight/GameActor/GActorFight.cs
@@ -236,7 +236,8 @@
         }
 
         if (NextAction == GAStaticDefine.Act_Dead
-         || m_BeatCurve == null)
+         || m_BeatCurve == null
+         || ActorInfo.serverDie)
         {
             m_Beating = false;
             return;
diff --git a/System/AssetVersion/AssetVersionUtility.cs b/System/AssetVersion/AssetVersionUtility.cs
index 69aa9f5..dae6980 100644
--- a/System/AssetVersion/AssetVersionUtility.cs
+++ b/System/AssetVersion/AssetVersionUtility.cs
@@ -193,7 +193,7 @@
         }
         else
         {
-            path = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, _assetKey);
+            path = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, _assetKey);
         }
 
         return path;
diff --git a/System/BlastFurnace/BlastFurnaceModel.cs b/System/BlastFurnace/BlastFurnaceModel.cs
index 04a1403..5bc948f 100644
--- a/System/BlastFurnace/BlastFurnaceModel.cs
+++ b/System/BlastFurnace/BlastFurnaceModel.cs
@@ -1251,51 +1251,51 @@
             }
         }
         #endregion
-
-        if (isOpenPrompting)
-        {
-            ConfirmCancel.ToggleConfirmCancel(Language.Get("Mail101"), Language.Get("BlastFurnace114",sumCnt,getMoney,string.Format("<Img chat={0}/>",StringUtility.Contact("Money_Type_",27))),
-                Language.Get("ConfirmCancel102"),(bool isOk, bool isToggle) =>
-               {
-                 if (isOk)
-                 {
-                       if(unBindCnt > 0)
-                       {
-                           ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("BlastFurnace115", unBindCnt),
-                          (bool isRecycle) =>
-                          {
-                             if (isRecycle)
-                             {
-                                 SendRecycleDrugQuest(recycleDanDict.Keys.ToList(), recycleDanDict.Values.ToList());
-                             }
-                         });
-                       }
-                       else
-                       {
-                           SendRecycleDrugQuest(recycleDanDict.Keys.ToList(), recycleDanDict.Values.ToList());
-                       }
-                 }
-                 isOpenPrompting = !isToggle;
-             });
-        }
-        else
-        {
-            if (unBindCnt > 0)
-            {
-               ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("BlastFurnace115", unBindCnt),
-               (bool isRecycle) =>
-               {
-                   if (isRecycle)
-                   {
-                       SendRecycleDrugQuest(recycleDanDict.Keys.ToList(), recycleDanDict.Values.ToList());
-                   }
-               });
-            }
-            else
-            {
-                SendRecycleDrugQuest(recycleDanDict.Keys.ToList(), recycleDanDict.Values.ToList());
-            }
-        }
+        SendRecycleDrugQuest(recycleDanDict.Keys.ToList(), recycleDanDict.Values.ToList());
+        //if (isOpenPrompting)
+        //{
+        //    ConfirmCancel.ToggleConfirmCancel(Language.Get("Mail101"), Language.Get("BlastFurnace114",sumCnt,getMoney,string.Format("<Img chat={0}/>",StringUtility.Contact("Money_Type_",27))),
+        //        Language.Get("ConfirmCancel102"),(bool isOk, bool isToggle) =>
+        //       {
+        //         if (isOk)
+        //         {
+        //               if(unBindCnt > 0)
+        //               {
+        //                   ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("BlastFurnace115", unBindCnt),
+        //                  (bool isRecycle) =>
+        //                  {
+        //                     if (isRecycle)
+        //                     {
+        //                         SendRecycleDrugQuest(recycleDanDict.Keys.ToList(), recycleDanDict.Values.ToList());
+        //                     }
+        //                 });
+        //               }
+        //               else
+        //               {
+        //                   SendRecycleDrugQuest(recycleDanDict.Keys.ToList(), recycleDanDict.Values.ToList());
+        //               }
+        //         }
+        //         isOpenPrompting = !isToggle;
+        //     });
+        //}
+        //else
+        //{
+        //    if (unBindCnt > 0)
+        //    {
+        //       ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("BlastFurnace115", unBindCnt),
+        //       (bool isRecycle) =>
+        //       {
+        //           if (isRecycle)
+        //           {
+        //               SendRecycleDrugQuest(recycleDanDict.Keys.ToList(), recycleDanDict.Values.ToList());
+        //           }
+        //       });
+        //    }
+        //    else
+        //    {
+        //        SendRecycleDrugQuest(recycleDanDict.Keys.ToList(), recycleDanDict.Values.ToList());
+        //    }
+        //}
 
     }
 
diff --git a/System/ClientVersion/VersionConfig.cs b/System/ClientVersion/VersionConfig.cs
index b8875c7..9b45803 100644
--- a/System/ClientVersion/VersionConfig.cs
+++ b/System/ClientVersion/VersionConfig.cs
@@ -92,6 +92,9 @@
     [SerializeField] Vector2 m_LogoPosition;
     public Vector2 logoPosition { get { return m_LogoPosition; } }
 
+    [SerializeField] string m_BanHao;
+    public string banHao { get { return m_BanHao; } }
+
     public void Read(string _data)
     {
         var dataStrings = _data.Split('\t');
@@ -112,6 +115,7 @@
         m_DebugVersion = int.Parse(dataStrings[16]) == 1;
         m_IsBanShu = int.Parse(dataStrings[17]) == 1;
         m_LogoPosition = dataStrings[18].Vector3Parse();
+        m_BanHao = dataStrings[19];
     }
 
 #if UNITY_EDITOR
@@ -165,6 +169,7 @@
         _to.m_IsBanShu = _from.m_IsBanShu;
         _to.m_ClientPackageFlag = _from.m_ClientPackageFlag;
         _to.m_LogoPosition = _from.m_LogoPosition;
+        _to.m_BanHao = _from.m_BanHao;
     }
 
     /// <summary>
diff --git a/System/ClientVersion/VersionUpdateWin.cs b/System/ClientVersion/VersionUpdateWin.cs
index 1bd9bee..f73a3f0 100644
--- a/System/ClientVersion/VersionUpdateWin.cs
+++ b/System/ClientVersion/VersionUpdateWin.cs
@@ -16,7 +16,9 @@
     public class VersionUpdateWin : Window
     {
         [SerializeField] RectTransform m_ContainerHint;
-        [SerializeField] RichText m_Content;
+        [SerializeField] RichText m_HintDescription;
+        [SerializeField] RectTransform m_UpdateContentContainer;
+        [SerializeField] RichText m_UpdateCotent;
         [SerializeField] Button m_Confirm;
 
         [SerializeField] Transform m_ContainerProgress;
@@ -108,14 +110,13 @@
         private void DisplayHintContent()
         {
             var step = VersionUtility.Instance.step;
-
             switch (step)
             {
                 case VersionUtility.Step.None:
-                    m_Content.text = Language.GetFromLocal(4);
+                    m_HintDescription.text = Language.GetFromLocal(4);
                     break;
                 case VersionUtility.Step.ApkExist:
-                    m_Content.text = Language.GetFromLocal(5);
+                    m_HintDescription.text = Language.GetFromLocal(5);
                     break;
                 case VersionUtility.Step.DownLoadPrepared:
                     if (Application.platform == RuntimePlatform.Android)
@@ -125,28 +126,49 @@
                         switch (Application.internetReachability)
                         {
                             case NetworkReachability.NotReachable:
-                                m_Content.text = Language.GetFromLocal(6, sizeDescription);
+                                m_HintDescription.text = Language.GetFromLocal(6, sizeDescription);
                                 break;
                             case NetworkReachability.ReachableViaCarrierDataNetwork:
-                                m_Content.text = Language.GetFromLocal(7, sizeDescription);
+                                m_HintDescription.text = Language.GetFromLocal(7, sizeDescription);
                                 break;
                             case NetworkReachability.ReachableViaLocalAreaNetwork:
-                                m_Content.text = Language.GetFromLocal(8, sizeDescription);
+                                m_HintDescription.text = Language.GetFromLocal(8, sizeDescription);
                                 break;
                         }
                     }
                     else if (Application.platform == RuntimePlatform.IPhonePlayer)
                     {
-                        m_Content.text = Language.GetFromLocal(9);
+                        m_HintDescription.text = Language.GetFromLocal(9);
                     }
                     break;
                 case VersionUtility.Step.DownLoad:
-                    m_Content.text = Language.GetFromLocal(3);
+                    m_HintDescription.text = Language.GetFromLocal(3);
                     break;
                 case VersionUtility.Step.DownLoadFailed:
-                    m_Content.text = Language.GetFromLocal(10);
+                    m_HintDescription.text = Language.GetFromLocal(10);
                     break;
             }
+
+            switch (step)
+            {
+                case VersionUtility.Step.ApkExist:
+                case VersionUtility.Step.DownLoadPrepared:
+                    var updateContent = VersionUtility.Instance.GetUpdateContent();
+                    if (string.IsNullOrEmpty(updateContent))
+                    {
+                        m_UpdateContentContainer.gameObject.SetActive(false);
+                    }
+                    else
+                    {
+                        m_UpdateContentContainer.gameObject.SetActive(true);
+                        m_UpdateCotent.text = updateContent;
+                    }
+                    break;
+                default:
+                    m_UpdateContentContainer.gameObject.SetActive(false);
+                    break;
+            }
+
         }
 
         private void Confirm()
@@ -160,11 +182,7 @@
                     VersionUtility.Instance.RequestVersionCheck();
                     break;
                 case VersionUtility.Step.ApkExist:
-                    var version = VersionUtility.Instance.versionInfo.GetLatestVersion();
-                    var remoteURL = version.download_url;
-                    var fileName = Path.GetFileName(remoteURL);
-                    var apkLocalURL = StringUtility.Contact(VersionUtility.Instance.androidRoot, "/", fileName);
-                    SDKUtility.Instance.InstallAPK(apkLocalURL);
+                    SDKUtility.Instance.InstallAPK(VersionUtility.Instance.GetApkLocalUrl());
                     break;
                 case VersionUtility.Step.DownLoadPrepared:
                     if (Application.platform == RuntimePlatform.Android)
@@ -173,7 +191,7 @@
                     }
                     else if (Application.platform == RuntimePlatform.IPhonePlayer)
                     {
-                        Application.OpenURL(VersionUtility.Instance.versionInfo.GetLatestVersion().download_url);
+                        Application.OpenURL(VersionUtility.Instance.GetApkRemoteUrl());
                         //鎵撳紑搴旂敤鍟嗗簵閾炬帴
                     }
                     break;
diff --git a/System/ClientVersion/VersionUtility.cs b/System/ClientVersion/VersionUtility.cs
index 53cdaa9..3b16c88 100644
--- a/System/ClientVersion/VersionUtility.cs
+++ b/System/ClientVersion/VersionUtility.cs
@@ -20,21 +20,18 @@
 
     public string androidRoot { get { return StringUtility.Contact(SDKUtility.Instance.DeviceRootPath, "/", VersionConfig.Get().bundleIdentifier); } }
 
-    public float progress
-    {
+    public float progress {
         get { return RemoteFile.TotalDownloadedSize / ((float)versionInfo.GetLatestVersion().file_size * 1024); }
     }
 
-    public string apkLocalURL = string.Empty;
     public VersionInfo versionInfo { get; private set; }
+    public MaoErVersion maoerVersion;
     public bool completed { get { return step == Step.Completed; } }
 
     Step m_Step = Step.None;
-    public Step step
-    {
+    public Step step {
         get { return m_Step; }
-        private set
-        {
+        private set {
             if (m_Step != value)
             {
                 m_Step = value;
@@ -70,17 +67,12 @@
         if (_ok)
         {
             versionInfo = JsonMapper.ToObject<VersionInfo>(_result);
-            if (versionInfo.VersionCount > 0)
+            if (NeedUpdate())
             {
-                var version = versionInfo.GetLatestVersion();
-                var remoteURL = version.download_url;
-
                 switch (Application.platform)
                 {
                     case RuntimePlatform.Android:
-                        var fileName = Path.GetFileName(remoteURL);
-                        apkLocalURL = StringUtility.Contact(androidRoot, "/", fileName);
-                        if (File.Exists(apkLocalURL))
+                        if (File.Exists(GetApkLocalUrl()))
                         {
                             step = Step.ApkExist;
                             WindowCenter.Instance.OpenFromLocal<VersionUpdateWin>();
@@ -118,18 +110,74 @@
         }
     }
 
+    public bool NeedUpdate()
+    {
+        if (IsMaoErGame())
+        {
+            return versionInfo.downAsset == 0 && versionInfo.VersionCount > 0;
+        }
+        else
+        {
+            return versionInfo.downAsset == 1 && versionInfo.VersionCount > 0;
+        }
+    }
+
+    public string GetApkLocalUrl()
+    {
+        if (IsMaoErGame())
+        {
+            return StringUtility.Contact(androidRoot, "/", "maoErGame.apk");
+        }
+        else
+        {
+            var remoteURL = GetApkRemoteUrl();
+            var fileName = Path.GetFileName(remoteURL);
+            return StringUtility.Contact(androidRoot, "/", fileName);
+        }
+    }
+
+    public string GetApkRemoteUrl()
+    {
+        if (IsMaoErGame())
+        {
+            return maoerVersion.url;
+        }
+        else
+        {
+            var version = versionInfo.GetLatestVersion();
+            return version.download_url;
+        }
+    }
+
+    public string GetUpdateContent()
+    {
+        if (IsMaoErGame())
+        {
+            if (string.IsNullOrEmpty(maoerVersion.content))
+            {
+                return string.Empty;
+            }
+            else
+            {
+                return StringUtility.Contact(Language.GetFromLocal(30), "\r\n", maoerVersion.content);
+            }
+        }
+        else
+        {
+            return string.Empty;
+        }
+    }
+
     public void StartDownLoad()
     {
         step = Step.DownLoad;
-        var version = versionInfo.GetLatestVersion();
-        var remoteURL = version.download_url;
-        var fileName = Path.GetFileName(remoteURL);
-        apkLocalURL = StringUtility.Contact(androidRoot, "/", fileName);
+        var remoteURL = GetApkRemoteUrl();
+        var apkLocalUrl = GetApkLocalUrl();
 
         RemoteFile.Prepare();
 
         var remoteFile = new RemoteFile();
-        remoteFile.Init(remoteURL, apkLocalURL, null);
+        remoteFile.Init(remoteURL, apkLocalUrl, null);
         remoteFile.Begin(OnDownLoadApkCompleted);
     }
 
@@ -155,7 +203,7 @@
                 }
             }
 
-            SDKUtility.Instance.InstallAPK(apkLocalURL);
+            SDKUtility.Instance.InstallAPK(GetApkLocalUrl());
         }
         else
         {
@@ -168,10 +216,55 @@
         step = Step.Completed;
     }
 
-    const string maoerGameAppId = "mrgame";
+    static List<string> maoerGameAppId = new List<string> { "mrgame", "mrgameios" };
     public bool IsMaoErGame()
     {
-        return VersionConfig.Get().appId == maoerGameAppId;
+        return maoerGameAppId.Contains(VersionConfig.Get().appId);
+    }
+
+    public void RequestMaoErVersionCheck()
+    {
+        if (IsMaoErGame() && versionInfo.VersionCount > 0)
+        {
+            step = Step.None;
+            var tables = new Dictionary<string, string>();
+            tables["uid"] = ModelCenter.Instance.GetModel<LoginModel>().sdkLoginResult.account;
+            var url = StringUtility.Contact("https://api.maoergame.com/update/download/url?", HttpRequest.HashtablaToString(tables));
+            Debug.Log("鐚�冲己鏇磚rl锛�" + url);
+            HttpRequest.Instance.RequestHttpPost(url, string.Empty, HttpRequest.defaultHttpContentType, 1, OnMaoErVersionCheckResult);
+        }
+    }
+
+    private void OnMaoErVersionCheckResult(bool ok, string result)
+    {
+        Debug.Log("鐚�冲己鏇� result锛�" + result);
+        if (ok)
+        {
+            try
+            {
+                maoerVersion = JsonMapper.ToObject<MaoErVersion>(result);
+                if (maoerVersion.code == 0)
+                {
+                    step = Step.DownLoadPrepared;
+                    WindowCenter.Instance.OpenFromLocal<VersionUpdateWin>();
+                }
+                else
+                {
+                    step = Step.None;
+                    Clock.Create(DateTime.Now + new TimeSpan(TimeSpan.TicksPerSecond), RequestMaoErVersionCheck);
+                }
+            }
+            catch (System.Exception ex)
+            {
+                step = Step.None;
+                Clock.Create(DateTime.Now + new TimeSpan(TimeSpan.TicksPerSecond), RequestMaoErVersionCheck);
+            }
+        }
+        else
+        {
+            step = Step.None;
+            Clock.Create(DateTime.Now + new TimeSpan(TimeSpan.TicksPerSecond), RequestMaoErVersionCheck);
+        }
     }
 
     public class VersionInfo
@@ -181,7 +274,7 @@
         public JsonData resource_url;
         public JsonData notice_flag;
         public Version[] versions;
-        public int downAsset =1;
+        public int downAsset = 1;
 
         public Version GetLatestVersion()
         {
@@ -240,6 +333,14 @@
         public string version_name;
     }
 
+    public struct MaoErVersion
+    {
+        public string msg;
+        public int code;
+        public string content;
+        public string url;
+    }
+
     public enum Step
     {
         None,
diff --git a/System/Compose/New/ComposeWin.cs b/System/Compose/New/ComposeWin.cs
index 74a40bc..0246fbd 100644
--- a/System/Compose/New/ComposeWin.cs
+++ b/System/Compose/New/ComposeWin.cs
@@ -48,7 +48,7 @@
         #region Built-in
         protected override void BindController()
         {
-           
+            WindowCenter.Instance.jumpWindowCloseEvent += CloseJumpWindow;
         }
 
         protected override void AddListeners()
@@ -67,7 +67,7 @@
         protected override void OnPreOpen()
         {
             ComposeModel.ResetModel();
-            if(WindowJumpMgr.Instance.IsJumpState && WindowJumpMgr.Instance.jumpType == 1)
+            if(WindowJumpMgr.Instance.IsJumpState)
             {
                 if(ComposeModel.CurComposeModel != null)
                 {
@@ -164,11 +164,19 @@
                 WindowCenter.Instance.Open<MainInterfaceWin>();
                
             }
-            if(WindowJumpMgr.Instance.jumpType != 1)
+        }
+
+        private void CloseJumpWindow(Window win)
+        {
+            if(win as ComposeWin)
             {
-                ComposeModel.SetCurComposeModel(null);
+                if (WindowJumpMgr.Instance.jumpPhase <= 1)
+                {
+                    ComposeModel.SetCurComposeModel(null);
+                }
             }
         }
+
         #endregion
 
         private void OnClickRightBtn()
diff --git a/System/Compose/New/ComposeWinModel.cs b/System/Compose/New/ComposeWinModel.cs
index f100981..241d6be 100644
--- a/System/Compose/New/ComposeWinModel.cs
+++ b/System/Compose/New/ComposeWinModel.cs
@@ -861,7 +861,9 @@
 
     public bool CheckIsComposeByType(int firstType,int secondType,int thirdType)
     {
-        ItemCompoundConfig itemCompound = GetThirdTypeModellist(firstType,secondType,thirdType)[0];
+        ItemCompoundConfig itemCompound = ItemCompoundConfig.GetItemCompoundByType(firstType, secondType, thirdType);
+        if (itemCompound == null) return false;
+
         if (itemCompound.levelNeed <= PlayerDatas.Instance.baseData.LV)
         {
             return true;
diff --git a/System/DogzDungeon/DogzBoxBehaviour.cs b/System/DogzDungeon/DogzBoxBehaviour.cs
index d0291e1..4780d5f 100644
--- a/System/DogzDungeon/DogzBoxBehaviour.cs
+++ b/System/DogzDungeon/DogzBoxBehaviour.cs
@@ -5,6 +5,7 @@
 using UnityEngine;
 using System.Collections;
 using UnityEngine.UI;
+using TableConfig;
 
 namespace Snxxz.UI
 {
@@ -20,7 +21,8 @@
         public void Display()
         {
             timer = 0f;
-            UI3DModelExhibition.Instance.ShowNPC(model.bigBoxNpcId, Vector3.zero, m_RawImage);
+            var config = Config.Instance.Get<NPCConfig>(model.bigBoxNpcId);
+            UI3DModelExhibition.Instance.ShowNPC(model.bigBoxNpcId, config.UIModeLOffset, config.UIModelRotation, m_RawImage);
             DisplayBoxSurplusInfo();
             model.boxSurplusChangeEvent += OnBoxInfoUpdate;
         }
diff --git a/System/DogzDungeon/DogzDungeonBreifInfoBehaviour.cs b/System/DogzDungeon/DogzDungeonBreifInfoBehaviour.cs
index 1784381..18856bd 100644
--- a/System/DogzDungeon/DogzDungeonBreifInfoBehaviour.cs
+++ b/System/DogzDungeon/DogzDungeonBreifInfoBehaviour.cs
@@ -16,22 +16,17 @@
 
         [SerializeField] Image m_Attention;
 
-        protected override int selectedBossId
-        {
-            get
-            {
+        protected override int selectedBossId {
+            get {
                 return model.selectedBoss;
             }
-            set
-            {
+            set {
                 model.selectedBoss = value;
             }
         }
 
-        protected override InteractorableState interactorableState
-        {
-            get
-            {
+        protected override InteractorableState interactorableState {
+            get {
                 var selected = selectedBossId == bossId;
                 var config = Config.Instance.Get<DogzDungeonConfig>(bossId);
                 var dieOrLocked = false;
@@ -58,16 +53,13 @@
                     return selected ? InteractorableState.DieOrLockedSelected : InteractorableState.DieOrLockedUnSelected;
                 }
             }
-            set
-            {
+            set {
                 base.interactorableState = value;
             }
         }
 
-        protected override bool isUnLocked
-        {
-            get
-            {
+        protected override bool isUnLocked {
+            get {
                 return model.IsBossUnLocked(bossId);
             }
         }
@@ -179,6 +171,48 @@
             UpdateBossPortrait(interactorableState);
         }
 
+
+        protected override void DrawBossBaseInfo(string _icon, string _name, int _level, int _realm)
+        {
+            var config = Config.Instance.Get<DogzDungeonConfig>(bossId);
+            switch (config.MonsterType)
+            {
+                case 1:
+                    m_BossName.text = _name;
+                    m_BossLevel.text = string.Empty;
+                    break;
+                case 2:
+                    m_BossName.text = _name;
+                    m_BossLevel.text = string.Empty;
+                    break;
+                case 3:
+                case 4:
+                    m_BossName.text = _name;
+                    m_BossLevel.text = Language.Get("Z1024", _level);
+                    break;
+            }
+
+            m_Portrait.SetSprite(_icon);
+            m_Portrait.SetNativeSize();
+
+            if (m_Realm != null)
+            {
+                if (Config.Instance.ContainKey<RealmConfig>(_realm))
+                {
+                    m_Realm.gameObject.SetActive(true);
+                    var realmConfig = Config.Instance.Get<RealmConfig>(_realm);
+                    if (realmConfig != null)
+                    {
+                        m_Realm.SetSprite(realmConfig.Img);
+                    }
+                }
+                else
+                {
+                    m_Realm.gameObject.SetActive(false);
+                }
+            }
+        }
+
         private void OnSelected(int _bossId)
         {
             UpdateBossNameLevelFont(interactorableState);
diff --git a/System/DogzDungeon/DogzDungeonWin.cs b/System/DogzDungeon/DogzDungeonWin.cs
index 348bbc3..517c84e 100644
--- a/System/DogzDungeon/DogzDungeonWin.cs
+++ b/System/DogzDungeon/DogzDungeonWin.cs
@@ -196,7 +196,6 @@
                 case 4:
                     var npcDropConfig = Config.Instance.Get<NPCDropItemConfig>(_bossId);
                     m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
-                    m_SurpassLevel.gameObject.SetActive(true);
                     break;
             }
         }
diff --git a/System/DogzDungeon/DogzEliteMonsterBehaviour.cs b/System/DogzDungeon/DogzEliteMonsterBehaviour.cs
index d42af15..fc0cbda 100644
--- a/System/DogzDungeon/DogzEliteMonsterBehaviour.cs
+++ b/System/DogzDungeon/DogzEliteMonsterBehaviour.cs
@@ -5,6 +5,7 @@
 using UnityEngine;
 using System.Collections;
 using UnityEngine.UI;
+using TableConfig;
 
 namespace Snxxz.UI
 {
@@ -19,7 +20,8 @@
         public void Display()
         {
             timer = 0f;
-            UI3DModelExhibition.Instance.ShowNPC(model.eliteMonsters[0], Vector3.zero, m_RawImage);
+            var config = Config.Instance.Get<NPCConfig>(model.eliteMonsters[0]);
+            UI3DModelExhibition.Instance.ShowNPC(model.eliteMonsters[0], config.UIModeLOffset, config.UIModelRotation, m_RawImage);
             DisplayGuardSurplusInfo();
             model.boxSurplusChangeEvent += OnGuardInfoUpdate;
         }
diff --git a/System/FairyAu/FairyAuTaskWin.cs b/System/FairyAu/FairyAuTaskWin.cs
index af87039..78bbef5 100644
--- a/System/FairyAu/FairyAuTaskWin.cs
+++ b/System/FairyAu/FairyAuTaskWin.cs
@@ -82,7 +82,7 @@
             RewardsToOpen();
             ContentAssignment();
             int GetCylinderNumber = TaskAllocation.Instance.FairyAuNumber();//鑾峰彇浠欑洘鎬荤幆鏁�
-            if (coinTaskTip.IsFairy && GetCylinderNumber == 10)
+            if (coinTaskTip.IsFairy && GetCylinderNumber == 10 && vipmodel.GetVipPrivilegeCnt(VipPrivilegeType.AutoFairyMisstion) >= 1)
             {
                 _ReceiveImageText.text = string.Format(Language.Get("TaskContinueCount_1"), Second);
             }
diff --git a/System/KnapSack/Logic/BoxGetItemWin.cs b/System/KnapSack/Logic/BoxGetItemWin.cs
index 1cf2967..e2b10ed 100644
--- a/System/KnapSack/Logic/BoxGetItemWin.cs
+++ b/System/KnapSack/Logic/BoxGetItemWin.cs
@@ -193,15 +193,24 @@
                 item.name = StringUtility.Contact("CommonItemCell", index);
                 item.gameObject.SetActive(true);
                 BoxGetItemInfo itemInfo = BoxModel.getItems[index];
+                PackType type = PackType.rptDeleted;
+                ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(itemInfo.ItemID);
+                if(itemConfig != null)
+                {
+                    if(itemConfig.Type == 70 || (itemConfig.EquipPlace >= 101 && itemConfig.EquipPlace <= 105))
+                    {
+                        type = PackType.rptDogzItem;
+                    }
+                }
                 CommonItemBaisc itemBasic = item.transform.Find("CommonItemCell").GetComponent<CommonItemBaisc>();
                 ItemCellModel cellModel = new ItemCellModel(itemInfo.ItemID, false, (ulong)itemInfo.Count, itemInfo.IsBind,
-                    "", PackType.rptDeleted, false, ConfigParse.Analysis(itemInfo.UserData));
+                    "", type, false, ConfigParse.Analysis(itemInfo.UserData));
                 itemBasic.Init(cellModel);
                 itemBasic.cellBtn.RemoveAllListeners();
                 itemBasic.cellBtn.AddListener(()=>
                 {
                     ItemAttrData attrData = new ItemAttrData(itemInfo.ItemID,false, (ulong)itemInfo.Count,-1, itemInfo.IsBind,
-                        false, PackType.rptDeleted,"", ConfigParse.Analysis(itemInfo.UserData));
+                        false,type,"", ConfigParse.Analysis(itemInfo.UserData));
                     itemTipsModel.SetItemTipsModel(attrData);
                     
                 });
diff --git a/System/KnapSack/Logic/PackModelInterface.cs b/System/KnapSack/Logic/PackModelInterface.cs
index e7b7e93..acec717 100644
--- a/System/KnapSack/Logic/PackModelInterface.cs
+++ b/System/KnapSack/Logic/PackModelInterface.cs
@@ -40,6 +40,7 @@
         PlayerStrengthengDatas strengthDatas { get { return ModelCenter.Instance.GetModel<PlayerStrengthengDatas>(); } }
         MagicianModel magicianModel { get { return ModelCenter.Instance.GetModel<MagicianModel>(); } }
         TrialDungeonModel trialModel { get { return ModelCenter.Instance.GetModel<TrialDungeonModel>(); } }
+        ComposeWinModel composeModel { get { return ModelCenter.Instance.GetModel<ComposeWinModel>(); } }
 
         private int[] pushItemIds;
         public int[] pushBuffTypeIds;
@@ -489,6 +490,15 @@
                 }
             }
 
+            if(playerPack.CheckIsDrugById(itemModel.itemId))
+            {
+                if(itemModel.chinItemModel.RealmLimit > PlayerDatas.Instance.baseData.realmLevel)
+                {
+                    isReach = false;
+                    return isReach;
+                }
+            }
+
             switch (itemModel.chinItemModel.Type)
             {
                 case 8:
@@ -554,6 +564,13 @@
                         return isReach;
                     }
                     break;
+                case 39:
+                    if(!CheckIsBetterWings(itemModel))
+                    {
+                        isReach = false;
+                        return isReach;
+                    }
+                    break;
                 case 52:
                     if (!strengthDatas.IsHint(itemModel.itemId))
                     {
@@ -588,6 +605,59 @@
             return isReach;
         }
 
+        private bool CheckIsBetterWings(ItemModel itemModel)
+        {
+            if (itemModel == null) return false;
+
+            bool isBetter = true;
+            ItemModel putModel = playerPack.GetItemModelByIndex(PackType.rptEquip,(int)RoleEquipType.retWing);
+            SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptItem);
+            List<ItemModel> itemModels = null;
+            if(singlePack != null)
+            {
+                singlePack.GetItemCountByType((int)ItemType.Wings, out itemModels);
+            }
+            int[] composeTypes = itemModel.chinItemModel.JumpComposeCondi;
+            bool isOpenCompose = false;
+            if(composeTypes != null && composeTypes.Length >= 3)
+            {
+                ItemCompoundConfig itemCompound = ItemCompoundConfig.GetItemCompoundByType(composeTypes[0], composeTypes[1], composeTypes[2]);
+                if (itemCompound != null)
+                {
+                    if (itemCompound.levelNeed <= PlayerDatas.Instance.baseData.LV)
+                    {
+                        isOpenCompose = true;
+                    }
+                }
+            }
+
+            if(!isOpenCompose)
+            {
+                return false;
+            }
+
+            if (putModel != null && putModel.chinItemModel.LV >= itemModel.chinItemModel.LV)
+            {
+                return false;
+            }
+
+            if (itemModels != null)
+            {
+                for(int i = 0; i < itemModels.Count; i++)
+                {
+                    if(itemModels[i].chinItemModel.JobLimit/100 == PlayerDatas.Instance.baseData.Job)
+                    {
+                        if(itemModels[i].chinItemModel.LV >= itemModel.chinItemModel.LV)
+                        {
+                            return false;
+                        }
+                    }
+                }
+            }
+
+            return true;
+        }
+
         private bool CheckIsExtendGrid(int itemId)
         {
             SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptItem);
diff --git a/System/KnapSack/Logic/PlayerPackModels.cs b/System/KnapSack/Logic/PlayerPackModels.cs
index 4b4fbe2..7d132da 100644
--- a/System/KnapSack/Logic/PlayerPackModels.cs
+++ b/System/KnapSack/Logic/PlayerPackModels.cs
@@ -882,7 +882,7 @@
         {
             if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.EquipDecompose)) return;
 
-            if(GetCanDevourModellist() != null && GetCanDevourModellist().Count > 0)
+            if(GetCanDevourModellist() != null && GetCanDevourModellist().Count >= minDevourEquipNum)
             {
                 redpointEquipDecom.state = RedPointState.Simple;
             }
@@ -1166,6 +1166,7 @@
 
         public List<int> devourPlacelist { get; private set; }
         public int MaxDevourEquipNum { get; private set; }
+        public int minDevourEquipNum { get; private set;}
         public void SetDevourEquipPlace()
         {
             devourPlacelist = new List<int>();
@@ -1176,6 +1177,7 @@
                 devourPlacelist.Add(placeArray[i]);
             }
             MaxDevourEquipNum = int.Parse(funcConfig.Numerical2);
+            minDevourEquipNum = int.Parse(funcConfig.Numerical3);
         }
 
         List<ItemModel> devourModellist = new List<ItemModel>();
@@ -1228,10 +1230,9 @@
             return 0;
         }
 
-        public List<ItemModel> canDevourModellist = new List<ItemModel>();
         public List<ItemModel> GetCanDevourModellist()
         {
-            canDevourModellist.Clear();
+            List<ItemModel> canDevourModellist = new List<ItemModel>();
             SinglePackModel singlePack = GetSinglePackModel(PackType.rptItem);
             if (singlePack == null
                 || colorType == EquipColorType.None
@@ -1307,9 +1308,12 @@
         public List<ItemModel> selectDevourlist = new List<ItemModel>();
         public void GetSelectDevourList()
         {
-            GetCanDevourModellist();
             selectDevourlist.Clear();
-            selectDevourlist.AddRange(canDevourModellist);
+            List<ItemModel> itemModels = GetCanDevourModellist();
+            if (itemModels != null)
+            {
+                selectDevourlist.AddRange(itemModels);
+            }
         }
 
         public void RefreshGetNewItem(ItemModel model)
@@ -1378,17 +1382,33 @@
             return null;
         }
 
+        public bool IsReachMinDecomposeNum()
+        {
+            List<ItemModel> itemModels = GetCanDevourModellist();
+            if(itemModels != null && itemModels.Count >= minDecomposeNum)
+            {
+                return true;
+            }
+            return false;
+        }
+
         public void SendEquipdevourQuest()
         {
-            if (canDevourModellist.Count < minDecomposeNum) return;
+            List<ItemModel> itemModels = GetCanDevourModellist();
+            if (itemModels == null || itemModels.Count < minDecomposeNum) return;
 
             isAutoDecompose = true;
-            recordAutoDecomNum = canDevourModellist.Count;
+            recordAutoDecomNum = itemModels.Count;
             CA32C_tagCMEquipDecompose _petEat = new CA32C_tagCMEquipDecompose();
-            byte[] _petIndex = new byte[canDevourModellist.Count];
-            for (int i = 0; i < canDevourModellist.Count; i++)
+            byte[] _petIndex = new byte[recordAutoDecomNum];
+            for (int i = 0; i < recordAutoDecomNum; i++)
             {
-                _petIndex[i] = (byte)canDevourModellist[i].itemInfo.ItemPlace;
+                _petIndex[i] = (byte)itemModels[i].itemInfo.ItemPlace;
+                if (itemModels[i].chinItemModel.StarLevel >= 2 
+                    || (itemModels[i].chinItemModel.EquipPlace == 0 && itemModels[i].chinItemModel.Type != 29))
+                {
+                    return;
+                }
             }
             _petEat.IndexCount = (byte)_petIndex.Length;
             _petEat.IndexList = _petIndex;
diff --git a/System/KnapSack/New/KnapSackWin.cs b/System/KnapSack/New/KnapSackWin.cs
index 0a8c9c0..eb51ac9 100644
--- a/System/KnapSack/New/KnapSackWin.cs
+++ b/System/KnapSack/New/KnapSackWin.cs
@@ -42,7 +42,7 @@
         [SerializeField]
         private FunctionButton _depotTitle; //浠撳簱
         [SerializeField]
-        private FunctionButton _devourTitle; //浠撳簱
+        private FunctionButton _devourTitle; //瑁呭鍒嗚В
         [SerializeField]
         private FunctionButtonGroup _funcBtnGroup;
 
@@ -85,6 +85,13 @@
             base.OnActived();
             this.transform.SetAsLastSibling();
             _ornamentTitle.state = TitleBtnState.Locked;
+            if(!WindowJumpMgr.Instance.IsJumpState && functionOrder == 0)
+            {
+                if(playerPack.redpointEquipDecom.state == RedPointState.Simple)
+                {
+                    functionOrder = _devourTitle.order;
+                }
+            }
             _funcBtnGroup.TriggerByOrder(functionOrder);
         }
 
diff --git a/System/KnapSack/PreciousItemGetBehaviour.cs b/System/KnapSack/PreciousItemGetBehaviour.cs
index b877851..0484fda 100644
--- a/System/KnapSack/PreciousItemGetBehaviour.cs
+++ b/System/KnapSack/PreciousItemGetBehaviour.cs
@@ -87,7 +87,20 @@
                 model.ReportConfirmPreciousItem(model.currentShowItem);
                 if (itemModel != null && itemModel.packType == PackType.rptItem)
                 {
-                    PackSendQuestMgr.Instance.SendUseItemQuest(ItemWinBtnType.makeUse, itemModel.itemInfo.ItemPlace);
+                    switch((ItemType)itemModel.chinItemModel.Type)
+                    {
+                        case ItemType.WingsMat:
+                            int jumpId = 0;
+                            bool isUnlock = ModelCenter.Instance.GetModel<ComposeWinModel>().CheckComposeItemById(itemModel.itemId, out jumpId);
+                            if (isUnlock)
+                            {
+                                PackSendQuestMgr.Instance.ClickComposeBtn(ItemWinBtnType.compose, jumpId);
+                            }
+                            break;
+                        default:
+                            PackSendQuestMgr.Instance.SendUseItemQuest(ItemWinBtnType.makeUse, itemModel.itemInfo.ItemPlace);
+                            break;
+                    }
                 }
             }
         }
diff --git a/System/Login/LoginModel.cs b/System/Login/LoginModel.cs
index 427405a..db6656d 100644
--- a/System/Login/LoginModel.cs
+++ b/System/Login/LoginModel.cs
@@ -15,8 +15,7 @@
         public SDKUtility.FP_LoginOk sdkLoginResult;
         public SDKUtility.FP_CheckIDAuthentication sdkIDCheckIDAuthentication;
 
-        public string localSaveAccountName
-        {
+        public string localSaveAccountName {
             get { return LocalSave.GetString(USER_ACCOUNT); }
             set { LocalSave.SetString(USER_ACCOUNT, value); }
         }
@@ -25,22 +24,19 @@
         public event Action accountBindOkEvent;
 
         bool m_ReconnecBackGround = false;
-        public bool reconnectBackGround
-        {
+        public bool reconnectBackGround {
             get { return m_ReconnecBackGround; }
             set { m_ReconnecBackGround = value; }
         }
 
         bool m_OnCreateRole = false;
-        public bool onCreateRole
-        {
+        public bool onCreateRole {
             get { return m_OnCreateRole; }
             set { m_OnCreateRole = value; }
         }
 
         bool m_Busy = false;
-        public bool busy
-        {
+        public bool busy {
             get { return m_Busy; }
             set { m_Busy = value; }
         }
@@ -90,11 +86,18 @@
             }
 
             SDKUtility.Instance.FreePlatformCheckIDAuthentication(sdkLoginResult.account);
-
             ServerListCenter.Instance.RequestServerListPlayer(sdkLoginResult.account);
-            GameNotice.OpenGameNotice();
             SDKUtility.Instance.MakeKeyAndVisible();
             OperationLogCollect.Instance.RecordLauchEvent(5);
+
+            if (VersionUtility.Instance.IsMaoErGame() && VersionUtility.Instance.NeedUpdate())
+            {
+                VersionUtility.Instance.RequestMaoErVersionCheck();
+            }
+            else
+            {
+                GameNotice.OpenGameNotice();
+            }
         }
 
         private void OnSDKAccountLoginOutOk()
diff --git a/System/Login/LoginWin.cs b/System/Login/LoginWin.cs
index 2626d02..5007d06 100644
--- a/System/Login/LoginWin.cs
+++ b/System/Login/LoginWin.cs
@@ -33,7 +33,7 @@
         [SerializeField] Button m_ServerSelect;
         [SerializeField] Button m_SwitchAccount;
         [SerializeField] Button m_Notice;
-        [SerializeField] RectTransform m_BanHao;
+        [SerializeField] RichText m_BanHao;
 
         LoginModel model { get { return ModelCenter.Instance.GetModel<LoginModel>(); } }
 
@@ -57,7 +57,8 @@
 
         protected override void OnPreOpen()
         {
-            m_BanHao.gameObject.SetActive(Application.platform == RuntimePlatform.WindowsEditor || VersionUtility.Instance.IsMaoErGame());
+            m_BanHao.text = string.IsNullOrEmpty(VersionConfig.Get().banHao) ? string.Empty : VersionConfig.Get().banHao;
+
             var sprite = Resources.Load<Sprite>("UI/Sprites/TB_DL_Logo");
             m_Logo.overrideSprite = sprite;
             m_Logo.SetNativeSize();
@@ -169,6 +170,14 @@
                 return;
             }
 
+            if (VersionUtility.Instance.IsMaoErGame())
+            {
+                if (VersionUtility.Instance.step != VersionUtility.Step.Completed)
+                {
+                    return;
+                }
+            }
+
             Login();
         }
 
diff --git a/System/MainInterfacePanel/HighSettingTip.cs b/System/MainInterfacePanel/HighSettingTip.cs
index 6a252a8..d534a49 100644
--- a/System/MainInterfacePanel/HighSettingTip.cs
+++ b/System/MainInterfacePanel/HighSettingTip.cs
@@ -290,6 +290,15 @@
             {
                 _model.currentCategory = TreasureCategory.Human;
             }
+            else if (_model.GetTreasureUnlockShow(TreasureCategory.Demon) != 0)
+            {
+                _model.currentCategory = TreasureCategory.Demon;
+            }
+            else if (RedpointCenter.Instance.GetRedpointState(TreasureModel.CATEGORY_REDPOINTIDS[(int)TreasureCategory.Human - 1])
+                == RedPointState.Simple)
+            {
+                _model.currentCategory = TreasureCategory.Human;
+            }
             WindowCenter.Instance.Open<TreasureSelectWin>();
         }
 
diff --git a/System/MainInterfacePanel/InGamePushContainer.cs b/System/MainInterfacePanel/InGamePushContainer.cs
index a135d19..3197210 100644
--- a/System/MainInterfacePanel/InGamePushContainer.cs
+++ b/System/MainInterfacePanel/InGamePushContainer.cs
@@ -343,6 +343,15 @@
             }
             else
             {
+                SnxxzGame.Instance.StartCoroutine(Co_DeActiveFairyGrabBoss());
+            }
+        }
+
+        IEnumerator Co_DeActiveFairyGrabBoss()
+        {
+            yield return null;
+            if (fairyGrabBossModel.fairyGrabBossHelps.Count == 0)
+            {
                 m_FairyGrabBossHelpBehaviour.gameObject.SetActive(false);
             }
         }
diff --git a/System/MainInterfacePanel/TaskBoxBGMWin.cs b/System/MainInterfacePanel/TaskBoxBGMWin.cs
index ca91555..a1a1283 100644
--- a/System/MainInterfacePanel/TaskBoxBGMWin.cs
+++ b/System/MainInterfacePanel/TaskBoxBGMWin.cs
@@ -143,7 +143,7 @@
             if (_AllMissionDict.ContainsKey(_TaskId))
             {
 
-                if (_AllMissionDict[_TaskId].Type == 7 || (_AllMissionDict[_TaskId].Type == 12 && vipmodel.GetVipPrivilegeCnt(VipPrivilegeType.AutoFairyMisstion) >= 1))
+                if (_AllMissionDict[_TaskId].Type == 7 || (_AllMissionDict[_TaskId].Type == 12 /*&& vipmodel.GetVipPrivilegeCnt(VipPrivilegeType.AutoFairyMisstion) >= 1*/))
                 {
                     taskmodel.RequestGetTaskAward("OK");
                     WindowCenter.Instance.CloseImmediately<TaskBoxBGMWin>();
diff --git a/System/MainInterfacePanel/TaskListTip.cs b/System/MainInterfacePanel/TaskListTip.cs
index 39d667e..fc42051 100644
--- a/System/MainInterfacePanel/TaskListTip.cs
+++ b/System/MainInterfacePanel/TaskListTip.cs
@@ -390,6 +390,19 @@
         {
             MissionDetailDates xPack = taskmodel.allMissionDict[x];
             MissionDetailDates yPack = taskmodel.allMissionDict[y];
+            bool IsMainTaskx = xPack.Type == 0;
+            bool IsMainTasky = yPack.Type == 0;
+            if (IsMainTaskx.CompareTo(IsMainTasky) != 0)//浼樺厛涓荤嚎
+            {
+                return -IsMainTaskx.CompareTo(IsMainTasky);
+            }
+            bool IsStateTaskx = xPack.MissionState == 2;
+            bool IsStateTasky = yPack.MissionState == 2;
+            if (IsStateTaskx.CompareTo(IsStateTasky) != 0)//浼樺厛鍙鍙�
+            {
+                return -IsStateTaskx.CompareTo(IsStateTasky);
+            }
+
             var _index0 = ListSort.IndexOf(xPack.Type);
             var _index1 = ListSort.IndexOf(yPack.Type);
             if (_index0.CompareTo(_index1) != 0)
@@ -407,6 +420,18 @@
         {
             MissionDetailDates xPack = taskmodel.allMissionDict[x];
             MissionDetailDates yPack = taskmodel.allMissionDict[y];
+            bool IsMainTaskx = xPack.Type == 0;
+            bool IsMainTasky = yPack.Type == 0;
+            if (IsMainTaskx.CompareTo(IsMainTasky) != 0)//浼樺厛涓荤嚎
+            {
+                return -IsMainTaskx.CompareTo(IsMainTasky);
+            }
+            bool IsStateTaskx = xPack.MissionState == 2;
+            bool IsStateTasky = yPack.MissionState == 2;
+            if (IsStateTaskx.CompareTo(IsStateTasky) != 0)//浼樺厛鍙鍙�
+            {
+                return -IsStateTaskx.CompareTo(IsStateTasky);
+            }
             var _index0 = ListSort1.IndexOf(xPack.Type);
             var _index1 = ListSort1.IndexOf(yPack.Type);
             if (_index0.CompareTo(_index1) != 0)
diff --git a/System/Message/RichText.cs b/System/Message/RichText.cs
index a2f70bf..329d2ca 100644
--- a/System/Message/RichText.cs
+++ b/System/Message/RichText.cs
@@ -897,6 +897,10 @@
         }
         set
         {
+            if (string.IsNullOrEmpty(value))
+            {
+                value = string.Empty;
+            }
             m_RichText = value;
             SetRichTextDirty();
         }
diff --git a/System/Mount/PlayerMountDatas.cs b/System/Mount/PlayerMountDatas.cs
index f56a921..c84a6d1 100644
--- a/System/Mount/PlayerMountDatas.cs
+++ b/System/Mount/PlayerMountDatas.cs
@@ -51,7 +51,7 @@
     public int MountStoneItemId = 0;
     public bool IsOk = false;
     public bool IsRedPointSingleFeed = true;
-    public  List<int> ListEffectSkill = new List<int>();
+    public List<int> ListEffectSkill = new List<int>();
     PlayerPackModel _playerPack;
     PlayerPackModel playerPack
     {
@@ -61,9 +61,10 @@
     public bool Wait = true;//绛夊緟鍥炲寘(浣跨敤鍧愰獞涓�)
     public static Action<int, bool> MultipleEvent;
     public static event Action PlayerLoginOKData;
+    private Dictionary<int, int> DicDefaultMount = new Dictionary<int, int>();
     public override void Init()
-    {     
-        ToAddSorting();     
+    {
+        ToAddSorting();
         playerPack.RefreshItemCountAct += OnItemRefreshEvent;
         MountWin.RedPointMountDan += RedPointMountDan;
         MountSkillAndItem();
@@ -75,6 +76,8 @@
         {
             ListEffectSkill.Add(listeffect[i]);
         }
+        string MountRedDotstr = Config.Instance.Get<FuncConfigConfig>("MountPetRedDot").Numerical1;
+        DicDefaultMount = ConfigParse.GetDic<int, int>(MountRedDotstr);
     }
 
     public override void UnInit()
@@ -106,7 +109,7 @@
         foreach (var index in singPack.GetPackModelIndexDict().Keys)
         {
             OnItemRefreshEvent(singPack.packType, index, singPack.GetPackModelIndexDict()[index].itemId);
-        }       
+        }
         if (PlayerLoginOKData != null)
         {
             PlayerLoginOKData();
@@ -278,6 +281,7 @@
 
         int GetMountID = 0;
         int GetMountLv = 0;
+
         for (int i = 0; i < SortMount.Count; i++)
         {
             int horseID = SortMount[i].HorseID;
@@ -300,6 +304,16 @@
         ItemConfig _tagchine = Config.Instance.Get<ItemConfig>(int.Parse(_tagfun.Numerical1));
         HorseConfig horsecon = Config.Instance.Get<HorseConfig>(GetMountID);
         int number = playerPack.GetItemCountByID(PackType.rptItem, _tagchine.ID);
+        foreach (var key in _DicHorse.Keys)//鍥犱负鏈夋垚灏变换鍔¢檺鍒舵墍鏈� 绗竴鍙潗楠戠孩鐐归�昏緫鐗规畩鍐�
+        {
+            if (DicDefaultMount.ContainsKey(key) && DicDefaultMount[key] > _DicHorse[key].Lv
+                && number > 0 && ASingleFeedRedPoint.ContainsKey(key))
+            {
+                ASingleFeedRedPoint[key].state = RedPointState.Simple;
+                return;
+            }
+
+        }
         if (ASingleFeedRedPoint.ContainsKey(GetMountID) && number > 0 && GetMountLv < horsecon.MaxLV)
         {
             if (PlayerDatas.Instance.baseData.LV >= 1500)
@@ -315,7 +329,6 @@
                 ASingleFeedRedPoint[GetMountID].state = RedPointState.Simple;
                 return;
             }
-
         }
     }
 
@@ -349,7 +362,7 @@
         int SkillLv = 0;
         foreach (var key in GetMountSkillAndItem.Keys)
         {
-            if (GetMountSkillAndItem[key].HorseID == MountId) 
+            if (GetMountSkillAndItem[key].HorseID == MountId)
             {
                 if (GetMountSkillAndItem[key].HorseLV > SkillLv)
                 {
@@ -584,7 +597,7 @@
                 Type = 2;
                 return Type;
             }
-        }       
+        }
         if (MainRedDot.Instance.redPointMountFunc.state == RedPointState.Simple)
         {
             Type = 1;
@@ -603,7 +616,7 @@
 
         int maxRank = horseConfig.MaxLV;
         HorseUpConfig cost = HorseUpConfig.GetHorseIDAndLV(mountCode, maxRank);
-        if(cost != null)
+        if (cost != null)
         {
             int[] attrIds = ConfigParse.GetMultipleStr<int>(cost.AttrType);
             int[] attrValues = ConfigParse.GetMultipleStr<int>(cost.AttrValue);
diff --git a/System/OpenServerActivity/ImpactRankWin.cs b/System/OpenServerActivity/ImpactRankWin.cs
index 710124a..e2468ba 100644
--- a/System/OpenServerActivity/ImpactRankWin.cs
+++ b/System/OpenServerActivity/ImpactRankWin.cs
@@ -114,6 +114,7 @@
         private void OnServerOpenDayRefresh()
         {
             UpdateRanks();
+            m_RankAwardCtrl.m_Scorller.RefreshActiveCellViews();
         }
 
         private void OnRefreshRankList(int type)
diff --git a/System/Pet/PlayerPetDatas.cs b/System/Pet/PlayerPetDatas.cs
index 8310f78..ef0090d 100644
--- a/System/Pet/PlayerPetDatas.cs
+++ b/System/Pet/PlayerPetDatas.cs
@@ -66,6 +66,7 @@
     public int petUpgradeToolId { get; set; }
 
     public event Action PlayerLoginOkData;
+    private Dictionary<int, int> DicDefaultPet = new Dictionary<int, int>();
 
     public override void Init()
     {
@@ -95,6 +96,8 @@
         {
             ListEffectSkill.Add(listeffect[i]);
         }
+        string PetRedDotstr = Config.Instance.Get<FuncConfigConfig>("MountPetRedDot").Numerical2;
+        DicDefaultPet = ConfigParse.GetDic<int, int>(PetRedDotstr);
     }
 
     public override void UnInit()
@@ -104,7 +107,7 @@
         PetAttributeWin.IsRedPointCultivate -= IsRedPointCultivate;
     }
 
- 
+
 
     public void OnBeforePlayerDataInitialize()
     {
@@ -141,7 +144,7 @@
         if (!Wait)
         {
             TimeSpan timeS = DateTime.Now - dateTimeA;
-            if (timeS.Seconds>= 2f)
+            if (timeS.Seconds >= 2f)
             {
                 Wait = true;
             }
@@ -172,7 +175,7 @@
         }
     }
 
-    public void SendPetTrainQuest(int petIndex,int number)
+    public void SendPetTrainQuest(int petIndex, int number)
     {
         CA704_tagCMPetClassUP _tagCA704 = new CA704_tagCMPetClassUP();
         _tagCA704.PetItemIndex = (byte)petIndex;
@@ -353,10 +356,20 @@
             }
         }
         int itemCount = playerPack.GetItemCountByID(PackType.rptItem, 4151);
+        foreach (var key in _DicPetBack.Keys)//鍥犱负鏈夋垚灏变换鍔¢檺鍒舵墍鏈� 绗竴鍙潗楠戠孩鐐归�昏緫鐗规畩鍐�
+        {
+            if (DicDefaultPet.ContainsKey(key) && DicDefaultPet[key] > _DicPetBack[key].PetClass
+                && itemCount > 0 && CultivateRedPoint.ContainsKey(key))
+            {
+                CultivateRedPoint[key].state = RedPointState.Simple;
+                CanEssence = true;
+                return;
+            }
+        }
         PetInfoConfig petinfo = Config.Instance.Get<PetInfoConfig>(GetPetId);
         if (PlayerDatas.Instance.baseData.LV >= 1500)
         {
-            if (CultivateRedPoint.ContainsKey(GetPetId) && itemCount > 0 && RedPointMaxLv && petinfo.MaxRank> petLv)
+            if (CultivateRedPoint.ContainsKey(GetPetId) && itemCount > 0 && RedPointMaxLv && petinfo.MaxRank > petLv)
             {
                 CultivateRedPoint[GetPetId].state = RedPointState.Simple;
                 CanEssence = true;
@@ -369,7 +382,7 @@
                 CultivateRedPoint[GetPetId].state = RedPointState.Simple;
                 CanEssence = true;
             }
-        }   
+        }
     }
 
     public int GetMinPetLv()
@@ -404,8 +417,8 @@
         PetInfoConfig petInfo = Config.Instance.Get<PetInfoConfig>(PetID);
         if (petInfo != null)
         {
-            curPetUnlocks= ConfigParse.GetMultipleStr<int>(petInfo.SkillUnLock);
-            maxskillLV = curPetUnlocks[(curPetUnlocks.Length)-1];
+            curPetUnlocks = ConfigParse.GetMultipleStr<int>(petInfo.SkillUnLock);
+            maxskillLV = curPetUnlocks[(curPetUnlocks.Length) - 1];
         }
         return maxskillLV;
     }
@@ -519,7 +532,7 @@
                     {
                         Event_H0704Add();
                     }
-                       
+
                 }
                 else
                 {
@@ -658,7 +671,7 @@
         }
     }
 
-    public int  IsPetPanelRedPointState()//鐢ㄤ簬鍒ゆ柇褰撳墠鐏靛疇椤电鏄惁鏈夌孩鐐逛寒璧�
+    public int IsPetPanelRedPointState()//鐢ㄤ簬鍒ゆ柇褰撳墠鐏靛疇椤电鏄惁鏈夌孩鐐逛寒璧�
     {
         int Type = 0;
         foreach (var value in DeblockingRedPoint.Values)
@@ -668,7 +681,7 @@
                 Type = 2;
                 return Type;
             }
-        }      
+        }
         if (MainRedDot.Instance.redPonintPetFunc2.state == RedPointState.Simple)
         {
             Type = 1;
@@ -680,20 +693,20 @@
 
     #region 棰勮瀹犵墿纰庣墖灞炴��
     Dictionary<int, int> petAttrDict = new Dictionary<int, int>();
-    public Dictionary<int,int> GetPetAttrAddDict(int petCode)
+    public Dictionary<int, int> GetPetAttrAddDict(int petCode)
     {
         PetInfoConfig infoConfig = Config.Instance.Get<PetInfoConfig>(petCode);
         petAttrDict.Clear();
         if (infoConfig == null) return petAttrDict;
 
         int maxRank = infoConfig.MaxRank;
-        PetClassCostConfig cost = PetClassCostConfig.GetPetIdAndRank(petCode,maxRank);
+        PetClassCostConfig cost = PetClassCostConfig.GetPetIdAndRank(petCode, maxRank);
         int allAtkAdd = 0;
-        if(cost != null)
+        if (cost != null)
         {
             allAtkAdd = cost.AtkAdd;
         }
-        petAttrDict.Add(7,allAtkAdd);
+        petAttrDict.Add(7, allAtkAdd);
         return petAttrDict;
     }
     #endregion
diff --git a/System/SystemSetting/SettingEffectMgr.cs b/System/SystemSetting/SettingEffectMgr.cs
index 1722176..20b6012 100644
--- a/System/SystemSetting/SettingEffectMgr.cs
+++ b/System/SystemSetting/SettingEffectMgr.cs
@@ -60,13 +60,11 @@
         delayTime = 2;
         HeroBehaviour.OnStartHandupAI -= OnStartHandupAI;
         HeroBehaviour.OnStopHandupAI -= OnStopHandupAI;
-        playerPack.ItemCntAddAct -= RefreshItemCnt;
         DeadModel.playerDieEvent -= OnPlayerDie;
         m_storeModel.RefreshBuyResultEvent -= RefreshBuySuccess;
         DeadModel.CloseRebornWinEvent -= PlayerRebornSuccess;
         HeroBehaviour.OnStartHandupAI += OnStartHandupAI;
         HeroBehaviour.OnStopHandupAI += OnStopHandupAI;
-        playerPack.ItemCntAddAct += RefreshItemCnt;
         DeadModel.playerDieEvent += OnPlayerDie;
         m_storeModel.RefreshBuyResultEvent += RefreshBuySuccess;
         DeadModel.CloseRebornWinEvent += PlayerRebornSuccess;
@@ -102,19 +100,10 @@
             }
         }
      
-        if (secondTimer > 1f)
+        if (secondTimer >= 1f)
         {
-            if(isGetNewItem)
-            {
-                secondTimer = 0f;
-                delayTime -= 1;
-                if (delayTime <= 0)
-                {
-                    isGetNewItem = false;
-                    delayTime = 2f;
-                    DealBagItem();
-                }
-            }
+            secondTimer = 0f;
+            RefreshBagItem();
         }
     }
 
@@ -153,11 +142,6 @@
         }
     }
 
-    private void RefreshItemCnt(PackType type, int index, int id)
-    {
-        RefreshBagItem();
-    }
-
     public void RefreshBagItem()
     {
         if (!_isAutoHangUp)
@@ -165,9 +149,7 @@
             DebugEx.Log("璇峰紑鍚嚜鍔ㄦ寕鏈猴紝鍚﹀垯鏃犳硶鍑哄敭");
             return;
         }
-
         DealBagItem();
-        isGetNewItem = true;
     }
 
     /// <summary>
@@ -175,12 +157,11 @@
     /// </summary>
     private void DealBagItem()
     {
-        if (playerPack.GetReaminGridCount(PackType.rptItem) < 5)
+        if (playerPack.GetReaminGridCount(PackType.rptItem) < 5 && modelInterface.isPackResetOk)
         {
             if (HangUpSetModel.Instance.GetBool(HangUpAutoBoolType.isAutoDevour))
             {
-                List<ItemModel> list = playerPack.GetCanDevourModellist();
-                if (list !=  null &&  list.Count > 0)
+                if(playerPack.IsReachMinDecomposeNum())
                 {
                     playerPack.SendEquipdevourQuest();
                     return;
diff --git a/System/Tip/PromoteDetailsWin.cs b/System/Tip/PromoteDetailsWin.cs
index b941bfc..17d1947 100644
--- a/System/Tip/PromoteDetailsWin.cs
+++ b/System/Tip/PromoteDetailsWin.cs
@@ -94,7 +94,7 @@
                     WindowCenter.Instance.Open<RolePromoteWin>();
                     break;
                 case RolePromoteModel.PromoteDetailType.Wash:
-                    WindowCenter.Instance.Open<EquipReinforceWin>(false, 4);
+                    WindowCenter.Instance.Open<EquipReinforceWin>(false, 3);
                     break;
                 case RolePromoteModel.PromoteDetailType.FairyHeart:
                     WindowCenter.Instance.Open<MethodToWin>();
diff --git a/System/Treasure/TreasureModel.cs b/System/Treasure/TreasureModel.cs
index c332573..0d8b239 100644
--- a/System/Treasure/TreasureModel.cs
+++ b/System/Treasure/TreasureModel.cs
@@ -19,7 +19,7 @@
         public const int TREASURE_GUIDE_ID = 102;
 
         const int TREASURE_REDPOINTID = 7000;
-        readonly static int[] CATEGORY_REDPOINTIDS = { 7001, 7002, 7003, 7004, 7005 };
+        public readonly static int[] CATEGORY_REDPOINTIDS = { 7001, 7002, 7003, 7004, 7005 };
         const int TREASURE_REDPOINTBASE = 7100;
 
         public static int redpointIndex = 1;
diff --git a/System/Treasure/TreasurePotentialPanel.cs b/System/Treasure/TreasurePotentialPanel.cs
index 4a83448..5e05670 100644
--- a/System/Treasure/TreasurePotentialPanel.cs
+++ b/System/Treasure/TreasurePotentialPanel.cs
@@ -279,7 +279,7 @@
         {
             var potential = m_Treasure.potentials[_index];
             potentialBriefInfos[_index].DisplayStateSfx();
-            potentialBriefInfos[_index].StartLevelTween();
+            //potentialBriefInfos[_index].StartLevelTween();
             var _nextPotential = GetNextPotential(potential.id);
             if (_nextPotential != 0)
             {
diff --git a/System/Vip/VipInvest/RotatePointer.cs b/System/Vip/VipInvest/RotatePointer.cs
new file mode 100644
index 0000000..a29f6ea
--- /dev/null
+++ b/System/Vip/VipInvest/RotatePointer.cs
@@ -0,0 +1,104 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Friday, September 21, 2018
+//--------------------------------------------------------
+using UnityEngine;
+using System.Collections;
+using UnityEngine.UI;
+using DG.Tweening;
+
+namespace Snxxz.UI {
+
+    public class RotatePointer:MonoBehaviour {
+        public bool _isRotate = false;//鏄惁鏃嬭浆      
+        public float Speed = 2000;//鏃嬭浆閫熷害
+        public float Angle = 0; // 杩欎釜鏄缃仠姝㈢殑瑙掑害
+        private float Acceleration = 0;//鍔犻�熷害
+        private float _time;
+        private bool IsRotateBool = false;//鏄惁杩涜鏃嬭浆
+        [Header("鎬绘棆杞椂闂�")]
+        public float ContinuousTime = 4;//鏃嬭浆鏃堕棿
+        [Header("鍔犻�熷噺閫熸椂闂�")]
+        public float SpeedTime = 1;
+        [Header("鏈�灏忛�熷害")]
+        public float MinSpeed= 400;
+        [Header("鏈�澶ч�熷害")]
+        public float MaxSpeed = 800;
+
+     
+        private void OnEnable()
+        {
+            IsRotateBool = false;
+            _time = 0;
+
+            Acceleration = (MaxSpeed - MinSpeed) / SpeedTime;
+        }
+
+        void Update()
+        {
+
+            if (!_isRotate)
+            {
+              //  transform.DORotate(new Vector3(0, 0, 360 + Angle), 0.5f, RotateMode.FastBeyond360);
+                return; //涓嶆棆杞粨鏉�
+            }
+               
+
+            if (IsRotateBool)
+            {
+
+                _time += Time.deltaTime;
+
+                if (_time < SpeedTime)//鍖�鍔犻��
+                {
+                    Speed = MinSpeed + Acceleration * _time;
+                    if (Speed >= MaxSpeed)
+                    {
+                        Speed = MaxSpeed;
+                    }
+                }
+                else if (_time > ContinuousTime - SpeedTime)//鍖�鍑忛��
+                {
+                    Speed = MaxSpeed - Acceleration * (_time - (ContinuousTime - SpeedTime));
+                    if (Speed <= MinSpeed)
+                    {
+                        Speed = MinSpeed;
+                    }
+                }
+                else//鍖�閫�
+                {
+                    Speed = MaxSpeed;
+                }
+                if (_time < ContinuousTime) // 娌$粨鏉�
+                {
+                    transform.Rotate(Vector3.forward * Speed * Time.deltaTime);
+                }
+                else
+                {
+                    //缁撴潫锛屼娇鐢―oTween鏃嬭浆鍒扮粨鏉熻搴︼紝鑰楁椂1绉�
+                    //杩欓噷鏈変釜360锛屼娇鐢ㄦ潵闃叉鎸囬拡鍥炶浆鐨勶紝濡傛灉涓嶅姞杩欎釜360锛屼綘浼氱湅鍒版寚閽堝�掗��
+                    transform.DORotate(new Vector3(0, 0, 360 + Angle), 1f, RotateMode.FastBeyond360);
+                    _isRotate = false; // 璁剧疆涓嶆棆杞�
+                    IsRotateBool = false;
+                }
+            }          
+        }
+
+        //澶栭儴璋冪敤锛屽垵濮嬪寲鏃堕棿鍜屾墦寮�鏃嬭浆
+        public void SetTime()
+        {
+            _time =0;
+            IsRotateBool = true;
+            _isRotate = true;
+        }
+        //澶栭儴璋冪敤锛岃缃仠姝㈣搴�
+        public void SetAngle(float angle)
+        {
+            Angle = angle;
+        }
+    }
+
+}
+
+
+
diff --git a/System/Vip/VipInvest/RotatePointer.cs.meta b/System/Vip/VipInvest/RotatePointer.cs.meta
new file mode 100644
index 0000000..f32b1db
--- /dev/null
+++ b/System/Vip/VipInvest/RotatePointer.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 172c3a5c67644144780312959c8d9b77
+timeCreated: 1537517643
+licenseType: Free
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/Vip/VipInvest/WheelOfFortuneWin.cs b/System/Vip/VipInvest/WheelOfFortuneWin.cs
new file mode 100644
index 0000000..e20b00b
--- /dev/null
+++ b/System/Vip/VipInvest/WheelOfFortuneWin.cs
@@ -0,0 +1,73 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Friday, September 21, 2018
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI {
+
+    public class WheelOfFortuneWin : Window
+    {
+        [SerializeField] Button m_LotteryBtn;
+        [SerializeField] RotatePointer m_RotatePointer;
+        [SerializeField] Toggle m_Toggle;
+        [SerializeField] Button m_CloseBtn;
+        #region Built-in
+        protected override void BindController()
+        {
+        }
+
+        protected override void AddListeners()
+        {
+            m_LotteryBtn.AddListener(OnClickButton);
+            m_CloseBtn.AddListener(()=> { Close(); });
+            m_Toggle.onValueChanged.AddListener(OnClickToggle);
+        }
+
+        protected override void OnPreOpen()
+        {
+        }
+
+        protected override void OnAfterOpen()
+        {
+        }
+
+        protected override void OnPreClose()
+        {
+        }
+
+        protected override void OnAfterClose()
+        {
+        }
+
+        private void OnClickButton()
+        {
+            m_RotatePointer.SetTime();
+        }
+        private void OnClickToggle(bool _bool)
+        {
+            if (_bool)
+            {
+                m_RotatePointer._isRotate = false;
+                m_RotatePointer.SetAngle(m_RotatePointer.Angle);
+            }
+            else
+            {
+                m_RotatePointer._isRotate = true;
+            }
+
+        }
+        #endregion
+   
+    }
+
+}
+
+
+
+
diff --git a/System/Vip/VipInvest/WheelOfFortuneWin.cs.meta b/System/Vip/VipInvest/WheelOfFortuneWin.cs.meta
new file mode 100644
index 0000000..8053dbc
--- /dev/null
+++ b/System/Vip/VipInvest/WheelOfFortuneWin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: d96c4104107a562479b36326b574b15e
+timeCreated: 1537517179
+licenseType: Free
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/WindowJump/WindowJumpMgr.cs b/System/WindowJump/WindowJumpMgr.cs
index 08b9a4d..4798be0 100644
--- a/System/WindowJump/WindowJumpMgr.cs
+++ b/System/WindowJump/WindowJumpMgr.cs
@@ -48,7 +48,7 @@
     ComposeWinModel composeModel { get { return ModelCenter.Instance.GetModel<ComposeWinModel>(); } }
 
     public bool IsJumpState { get; private set; }
-    private int jumpPhase = 0;
+    public int jumpPhase { get; private set;}
     public int jumpType { get; private set; }
     public void GetPreAllOpenWin()
     {
diff --git a/System/WorldMap/LocalMapFindPath.cs b/System/WorldMap/LocalMapFindPath.cs
index fc21a24..8cb3c67 100644
--- a/System/WorldMap/LocalMapFindPath.cs
+++ b/System/WorldMap/LocalMapFindPath.cs
@@ -292,9 +292,11 @@
             var npcRefreshIds = model.GetMapNPCRefreshIds(mapId);
             if (npcRefreshIds != null)
             {
-                for (int i = 0; i < npcRefreshIds.Count; i++)
+                foreach ( var item in   npcRefreshIds)
                 {
-                    DrawFunctionNPC(npcRefreshIds[i]);
+                    var config = Config.Instance.Get<mapnpcConfig>(item);
+                    var npcConfig = Config.Instance.Get<NPCConfig>(config.NPCID);
+                    DrawFunctionNPC(item);
                 }
             }
         }
diff --git a/System/WorldMap/MapModel.cs b/System/WorldMap/MapModel.cs
index 4b5d004..c030045 100644
--- a/System/WorldMap/MapModel.cs
+++ b/System/WorldMap/MapModel.cs
@@ -584,33 +584,36 @@
             foreach (var config in mapNpcConfigs)
             {
                 var mapId = config.MapID;
-                if (config.NPCType == (int)E_NpcType.Func)
+                if (config.NPCID != 0)
                 {
-                    List<string> npcRefreshIs;
-                    if (!mapFunctionNPCsToRefreshID.ContainsKey(mapId))
+                    if (config.NPCType == (int)E_NpcType.Func)
                     {
-                        mapFunctionNPCsToRefreshID[mapId] = npcRefreshIs = new List<string>();
-                    }
-                    else
-                    {
-                        npcRefreshIs = mapFunctionNPCsToRefreshID[mapId];
-                    }
+                        List<string> npcRefreshIs;
+                        if (!mapFunctionNPCsToRefreshID.ContainsKey(mapId))
+                        {
+                            mapFunctionNPCsToRefreshID[mapId] = npcRefreshIs = new List<string>();
+                        }
+                        else
+                        {
+                            npcRefreshIs = mapFunctionNPCsToRefreshID[mapId];
+                        }
 
-                    npcRefreshIs.Add(config.RefreshID.ToString());
-                }
-                else if (config.NPCType == (int)E_NpcType.Flag)
-                {
-                    List<string> npcRefreshIs;
-                    if (!mapCollectNPCsToRefreshID.ContainsKey(mapId))
-                    {
-                        mapCollectNPCsToRefreshID[mapId] = npcRefreshIs = new List<string>();
+                        npcRefreshIs.Add(config.RefreshID.ToString());
                     }
-                    else
+                    else if (config.NPCType == (int)E_NpcType.Flag)
                     {
-                        npcRefreshIs = mapCollectNPCsToRefreshID[mapId];
-                    }
+                        List<string> npcRefreshIs;
+                        if (!mapCollectNPCsToRefreshID.ContainsKey(mapId))
+                        {
+                            mapCollectNPCsToRefreshID[mapId] = npcRefreshIs = new List<string>();
+                        }
+                        else
+                        {
+                            npcRefreshIs = mapCollectNPCsToRefreshID[mapId];
+                        }
 
-                    npcRefreshIs.Add(config.RefreshID.ToString());
+                        npcRefreshIs.Add(config.RefreshID.ToString());
+                    }
                 }
             }
 

--
Gitblit v1.8.0