From f2cd8cf71a54e251e5f507c7d69c6f91f90e5074 Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期二, 25 九月 2018 20:23:14 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/Dogz/DogzPackWin.cs                                      |   32 +
 System/Skill/SkillPassWin.cs                                    |   32 
 System/Pet/PlayerPetDatas.cs                                    |   41 +
 System/Store/PetAndMountPushWin.cs                              |    3 
 System/Login/LoginModel.cs                                      |   23 
 System/PlayerDead/PlayerDeadModel.cs                            |   16 
 System/Chat/ChatCenter.cs                                       |   17 
 System/KnapSack/Logic/PlayerPackModels.cs                       |    4 
 System/ClientVersion/VersionUpdateWin.cs                        |   50 ++
 System/OpenServerActivity/ImpactRankWin.cs                      |    1 
 System/DailyQuest/DailyQuestBehaviour.cs                        |   15 
 System/KnapSack/Logic/BoxGetItemWin.cs                          |   13 
 System/KnapSack/New/KnapSackWin.cs                              |    9 
 System/Market/PutawayWin.cs                                     |    1 
 Core/GameEngine/Model/TelPartialConfig/tagItemCompoundConfig.cs |   15 
 System/Compose/New/ComposeWin.cs                                |   16 
 System/Realm/RealmUpWin.cs                                      |   99 +++--
 System/Strengthening/WingsRedDot.cs                             |   98 ++++-
 System/Compose/New/ComposeWinModel.cs                           |   65 ++-
 System/Skill/SkillModel.cs                                      |   54 +-
 System/MainInterfacePanel/FeatureNoticeModel.cs                 |    3 
 System/PlayerDead/RebornWin.cs                                  |    2 
 System/Treasure/TreasureModel.cs                                |    2 
 System/Store/StoreWin.cs                                        |   24 +
 System/MainInterfacePanel/HighSettingTip.cs                     |    9 
 System/BlastFurnace/BlastFurnaceModel.cs                        |   11 
 System/Chat/ChatCtrl.cs                                         |    6 
 System/Dungeon/DungeonModel.cs                                  |   14 
 System/Chat/ChatWin.cs                                          |    1 
 System/Treasure/TreasurePotentialPanel.cs                       |   32 +
 System/BlastFurnace/BlastFurnaceWin.cs                          |    4 
 System/Chat/ChatTip.cs                                          |   22 -
 System/MainInterfacePanel/FeatureNoticeWin.cs                   |    2 
 System/Store/StoreModel.cs                                      |   21 +
 System/Login/LoginWin.cs                                        |    8 
 System/WindowJump/WindowJumpMgr.cs                              |    2 
 System/MainInterfacePanel/TaskBoxBGMWin.cs                      |    2 
 System/FairyAu/FairyAuTaskWin.cs                                |    2 
 System/MainInterfacePanel/TaskListTip.cs                        |   49 ++
 System/Mount/PlayerMountDatas.cs                                |   29 +
 System/ClientVersion/VersionUtility.cs                          |  146 +++++++-
 System/DogzDungeon/DogzDungeonModel.cs                          |   12 
 42 files changed, 721 insertions(+), 286 deletions(-)

diff --git a/Core/GameEngine/Model/TelPartialConfig/tagItemCompoundConfig.cs b/Core/GameEngine/Model/TelPartialConfig/tagItemCompoundConfig.cs
index daac07e..b50908a 100644
--- a/Core/GameEngine/Model/TelPartialConfig/tagItemCompoundConfig.cs
+++ b/Core/GameEngine/Model/TelPartialConfig/tagItemCompoundConfig.cs
@@ -140,6 +140,21 @@
             return null;
         }
 
+        public static ItemCompoundConfig GetItemCompoundByType(int firstType,int secondType, int thirdType)
+        {
+            if(allComposeModelDict.ContainsKey(firstType))
+            {
+                if(allComposeModelDict[firstType].ContainsKey(secondType))
+                {
+                    if(allComposeModelDict[firstType][secondType].ContainsKey(thirdType))
+                    {
+                        return allComposeModelDict[firstType][secondType][thirdType][0];
+                    }
+                }
+            }
+            return null;
+        }
+
         public static bool TryGetTicketCompose(int _ticketId, out List<ItemCompoundConfig> list)
         {
             return ticketComposeDict.TryGetValue(_ticketId, out list);
diff --git a/System/BlastFurnace/BlastFurnaceModel.cs b/System/BlastFurnace/BlastFurnaceModel.cs
index 9a06ab5..04a1403 100644
--- a/System/BlastFurnace/BlastFurnaceModel.cs
+++ b/System/BlastFurnace/BlastFurnaceModel.cs
@@ -10,7 +10,7 @@
 public class BlastFurnaceModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, IPlayerLoginOk
 {
     public BlastFurnaceFuncTitle funcTitle = BlastFurnaceFuncTitle.MakeDan;
-
+    private int makeDrugRedLv;
     public Action<AlchemySpecConfig> RefreshAddSpecMatEvent;
 
     private TreasureModel _model;
@@ -64,6 +64,8 @@
         }
 
         alchemyModellist = Config.Instance.GetAllValues<AlchemyConfig>();
+        FuncConfigConfig alchemyRedPoint = Config.Instance.Get<FuncConfigConfig>("AlchemyRedPoint");
+        int.TryParse(alchemyRedPoint.Numerical1,out makeDrugRedLv);
         SetDandrugRedPointlist();
         GlobalTimeEvent.Instance.secondEvent += SecondUpdate;
     }
@@ -757,11 +759,11 @@
         bool isCheckRed = false;
         if(!isClick)
         {
-            if(PlayerDatas.Instance.baseData.LV <= 151)
+            if(PlayerDatas.Instance.baseData.LV <= makeDrugRedLv)
             {
                 isCheckRed = true;
             }
-            else if(PlayerDatas.Instance.baseData.LV > 151 && !isLogin && !IsMakeDrugWin)
+            else if(PlayerDatas.Instance.baseData.LV > makeDrugRedLv && !isLogin && !IsMakeDrugWin)
             {
                 isCheckRed = true;
             }
@@ -790,7 +792,7 @@
         }
         else
         {
-            if(PlayerDatas.Instance.baseData.LV > 151)
+            if(PlayerDatas.Instance.baseData.LV > makeDrugRedLv)
             {
                 MakeDrugRedpoint.state = RedPointState.None;
             }
@@ -1361,6 +1363,7 @@
 {
     MakeDan,  //鐐间腹
     AttrDan,  //涓硅嵂灞炴��
+    DrugStore, //鍥炴敹鍟嗗簵
 }
 
 
diff --git a/System/BlastFurnace/BlastFurnaceWin.cs b/System/BlastFurnace/BlastFurnaceWin.cs
index 0dfd624..6574a14 100644
--- a/System/BlastFurnace/BlastFurnaceWin.cs
+++ b/System/BlastFurnace/BlastFurnaceWin.cs
@@ -94,6 +94,9 @@
                 case BlastFurnaceFuncTitle.AttrDan:
                     _treasureRefineTitle.state = TitleBtnState.Click;
                     break;
+                case BlastFurnaceFuncTitle.DrugStore:
+                    _storeTitle.state = TitleBtnState.Click;
+                    break;
             }
           
         }
@@ -137,6 +140,7 @@
 
         private void OnClickStoreTitle()
         {
+            FurnaceModel.funcTitle = BlastFurnaceFuncTitle.DrugStore;
             _lingDanTips.SetActive(false);
             attrDanTips.SetActive(false);
             storeTips.SetActive(true);
diff --git a/System/Chat/ChatCenter.cs b/System/Chat/ChatCenter.cs
index 38a14a3..f619199 100644
--- a/System/Chat/ChatCenter.cs
+++ b/System/Chat/ChatCenter.cs
@@ -49,8 +49,10 @@
             chatChannels.Add(ChatInfoType.System);
             chatChannels.Add(ChatInfoType.World);
             chatChannels.Add(ChatInfoType.Area);
+            chatChannels.Add(ChatInfoType.Team);
             chatChannels.Add(ChatInfoType.Invite);
             chatChannels.Add(ChatInfoType.Trumpet);
+            chatChannels.Add(ChatInfoType.Fairy);
             chatChannels.Add(ChatInfoType.Friend);
         }
 
@@ -708,7 +710,7 @@
             CheckChatFloatOpen();
             if (win is MainInterfaceWin)
             {
-                CheckOpenChatAfterCollect();
+                SnxxzGame.Instance.StartCoroutine(Co_CheckAfterCollect());
             }
         }
 
@@ -744,6 +746,12 @@
             CheckOpenChatAfterCollect();
         }
 
+        IEnumerator Co_CheckAfterCollect()
+        {
+            yield return null;
+            CheckOpenChatAfterCollect();
+        }
+
         void CheckOpenChatAfterCollect()
         {
             if (!openChatAfterCollect)
@@ -754,7 +762,7 @@
             {
                 return;
             }
-            if (!WindowCenter.Instance.Open<MainInterfaceWin>()
+            if (!WindowCenter.Instance.CheckOpen<MainInterfaceWin>()
                 || WindowCenter.Instance.ExitAnyFullScreenOrMaskWin()
                 || StageManager.Instance.isLoading
                 || NewBieCenter.Instance.inGuiding)
@@ -762,11 +770,10 @@
                 return;
             }
             openChatAfterCollect = false;
-            if (!WindowCenter.Instance.CheckOpen<SocialWin>())
+            if (!WindowCenter.Instance.CheckOpen<ChatWin>())
             {
                 ChatCtrl.Inst.presentChatType = ChatInfoType.Fairy;
-                WindowCenter.Instance.CloseImmediately<MainInterfaceWin>();
-                WindowCenter.Instance.Open<SocialWin>();
+                WindowCenter.Instance.Open<ChatWin>();
             }
         }
         #endregion
diff --git a/System/Chat/ChatCtrl.cs b/System/Chat/ChatCtrl.cs
index b8eca6c..f71eee7 100644
--- a/System/Chat/ChatCtrl.cs
+++ b/System/Chat/ChatCtrl.cs
@@ -1029,13 +1029,15 @@
         switch (type)
         {
             case ChatInfoType.Team:
-                if (!WindowCenter.Instance.CheckOpen<TeamChatWin>())
+                if (!WindowCenter.Instance.CheckOpen<TeamChatWin>()
+                    && (!WindowCenter.Instance.CheckOpen<ChatWin>() || presentChatType != ChatInfoType.Team))
                 {
                     unReadChatCounts[ChatInfoType.Team] = Mathf.Min(unReadChatCounts[ChatInfoType.Team] + 1, 99);
                 }
                 break;
             case ChatInfoType.Fairy:
-                if (!WindowCenter.Instance.CheckOpen<FairyChatWin>())
+                if (!WindowCenter.Instance.CheckOpen<FairyChatWin>()
+                    && (!WindowCenter.Instance.CheckOpen<ChatWin>() || presentChatType != ChatInfoType.Fairy))
                 {
                     unReadChatCounts[ChatInfoType.Fairy] = Mathf.Min(unReadChatCounts[ChatInfoType.Fairy] + 1, 99);
                 }
diff --git a/System/Chat/ChatTip.cs b/System/Chat/ChatTip.cs
index bfb9a37..0cc5b43 100644
--- a/System/Chat/ChatTip.cs
+++ b/System/Chat/ChatTip.cs
@@ -145,7 +145,7 @@
 
     private void OnChatClick()
     {
-        if (WindowCenter.Instance.CheckOpen<ChatWin>() || WindowCenter.Instance.CheckOpen<SocialWin>())
+        if (WindowCenter.Instance.CheckOpen<ChatWin>())
         {
             return;
         }
@@ -154,9 +154,6 @@
         if (mapId == 31230)
         {
             ChatCtrl.Inst.presentChatType = ChatInfoType.Fairy;
-            WindowCenter.Instance.CloseImmediately<MainInterfaceWin>();
-            WindowCenter.Instance.Open<SocialWin>();
-            return;
         }
         WindowCenter.Instance.Open<ChatWin>();
     }
@@ -214,7 +211,7 @@
 
     void OnChatDataClick(ChatData data)
     {
-        if (WindowCenter.Instance.CheckOpen<ChatWin>() || WindowCenter.Instance.CheckOpen<SocialWin>())
+        if (WindowCenter.Instance.CheckOpen<ChatWin>())
         {
             return;
         }
@@ -224,20 +221,7 @@
         {
             ChatCtrl.Inst.presentChatType = ChatInfoType.Fairy;
         }
-        switch (ChatCtrl.Inst.presentChatType)
-        {
-            case ChatInfoType.Team:
-                WindowCenter.Instance.CloseImmediately<MainInterfaceWin>();
-                WindowCenter.Instance.Open<SocialWin>(false, 2);
-                break;
-            case ChatInfoType.Fairy:
-                WindowCenter.Instance.CloseImmediately<MainInterfaceWin>();
-                WindowCenter.Instance.Open<SocialWin>();
-                break;
-            default:
-                WindowCenter.Instance.Open<ChatWin>();
-                break;
-        }
+        WindowCenter.Instance.Open<ChatWin>();
     }
 
     void OnRefreshChatTip(ChatInfoType type)
diff --git a/System/Chat/ChatWin.cs b/System/Chat/ChatWin.cs
index b250bc7..7be4a67 100644
--- a/System/Chat/ChatWin.cs
+++ b/System/Chat/ChatWin.cs
@@ -170,6 +170,7 @@
                     break;
             }
             m_ChatContent.chatType = ChatCtrl.Inst.presentChatType;
+            ChatCtrl.Inst.ViewChat(ChatCtrl.Inst.presentChatType);
         }
 
         private void OnChannelSelect(CellView _cell)
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..9eb49d0 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,54 @@
         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 = "https://api.maoergame.com/update/download/url";
+
+            HttpRequest.Instance.RequestHttpPost(url, tables, HttpRequest.defaultHttpContentType, 1, OnMaoErVersionCheckResult);
+        }
+    }
+
+    private void OnMaoErVersionCheckResult(bool ok, string 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 +273,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 +332,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 42607a1..f100981 100644
--- a/System/Compose/New/ComposeWinModel.cs
+++ b/System/Compose/New/ComposeWinModel.cs
@@ -814,44 +814,49 @@
 
         int[] composeCondi = itemConfig.JumpComposeCondi;
         if (composeCondi.Length < 3) return false;
-        ItemCompoundConfig itemCompound = GetThirdTypeModellist(composeCondi[0],composeCondi[1],composeCondi[2])[0];
-        if(itemCompound.levelNeed <= PlayerDatas.Instance.baseData.LV)
+        ItemCompoundConfig itemCompound = ItemCompoundConfig.GetItemCompoundByType(composeCondi[0], composeCondi[1], composeCondi[2]);
+        if(itemCompound != null)
         {
-            switch (itemCompound.firstType)
+            if (itemCompound.levelNeed <= PlayerDatas.Instance.baseData.LV)
             {
-                case 1:
-                    jumpId = (int)JumpUIType.ComposeFunc1;
-                    break;
-                case 2:
-                    jumpId = (int)JumpUIType.ComposeFunc2;
-                    break;
-                case 3:
-                    jumpId = (int)JumpUIType.ComposeFunc3;
-                    break;
-                case 4:
-                    jumpId = (int)JumpUIType.ComposeFunc4;
-                    break;
-                case 5:
-                    jumpId = (int)JumpUIType.ComposeFunc5;
-                    break;
-            }
-            this.secondType = itemCompound.secondType;
+                switch (itemCompound.firstType)
+                {
+                    case 1:
+                        jumpId = (int)JumpUIType.ComposeFunc1;
+                        break;
+                    case 2:
+                        jumpId = (int)JumpUIType.ComposeFunc2;
+                        break;
+                    case 3:
+                        jumpId = (int)JumpUIType.ComposeFunc3;
+                        break;
+                    case 4:
+                        jumpId = (int)JumpUIType.ComposeFunc4;
+                        break;
+                    case 5:
+                        jumpId = (int)JumpUIType.ComposeFunc5;
+                        break;
+                }
+                this.secondType = itemCompound.secondType;
 
-            if(itemCompound.firstType == 5 && itemCompound.secondType == 3)
-            {
-                this.thirdType = PlayerDatas.Instance.baseData.Job;
+                if (itemCompound.firstType == 5 && itemCompound.secondType == 3)
+                {
+                    this.thirdType = PlayerDatas.Instance.baseData.Job;
+                }
+                else
+                {
+                    this.thirdType = itemCompound.thirdType;
+                }
+                return true;
             }
             else
             {
-                this.thirdType = itemCompound.thirdType;
+                SysNotifyMgr.Instance.ShowTip("TicketComposeUnlock", itemCompound.levelNeed, itemCompound.secondTypeName);
+                return false;
             }
-            return true;
         }
-        else
-        {
-            SysNotifyMgr.Instance.ShowTip("TicketComposeUnlock", itemCompound.levelNeed, itemCompound.secondTypeName);
-            return false;
-        }
+
+        return false;
     }
 
     public bool CheckIsComposeByType(int firstType,int secondType,int thirdType)
diff --git a/System/DailyQuest/DailyQuestBehaviour.cs b/System/DailyQuest/DailyQuestBehaviour.cs
index 8a540ee..6262cdd 100644
--- a/System/DailyQuest/DailyQuestBehaviour.cs
+++ b/System/DailyQuest/DailyQuestBehaviour.cs
@@ -15,6 +15,7 @@
     {
         [SerializeField] Text m_Title;
         [SerializeField] RectTransform m_ContainerTimes;
+        [SerializeField] Text m_TimesUnit;
         [SerializeField] TextEx m_Times;
         [SerializeField] Text m_PracticePoint;
         [SerializeField] Text m_UnLockCondition;
@@ -189,6 +190,17 @@
             else
             {
                 m_ContainerTimes.gameObject.SetActive(true);
+
+                switch ((DailyQuestType)this.data.id)
+                {
+                    case DailyQuestType.KillMonster:
+                        m_TimesUnit.text = Language.Get("DailyQuestMonster");
+                        break;
+                    default:
+                        m_TimesUnit.text = Language.Get("DailyQuestTimes");
+                        break;
+                }
+
                 m_Times.text = StringUtility.Contact(completedTimes, "/", totalTimes);
                 m_Times.colorType = completedTimes >= totalTimes ? TextColType.DarkGreen : TextColType.NavyBrown;
             }
@@ -318,6 +330,9 @@
 
             switch ((DailyQuestType)data.id)
             {
+                case DailyQuestType.KillMonster:
+                    m_PracticePoint.text = Language.Get("DailyQuestPerPoint2", config.OnceActivity, config.OnceActivityTime);
+                    break;
                 case DailyQuestType.BlastStove:
                     m_PracticePoint.text = Language.Get("DailyQuestLiandan", config.OnceActivity);
                     break;
diff --git a/System/Dogz/DogzPackWin.cs b/System/Dogz/DogzPackWin.cs
index 6d6cbde..61ffb22 100644
--- a/System/Dogz/DogzPackWin.cs
+++ b/System/Dogz/DogzPackWin.cs
@@ -24,6 +24,8 @@
         [SerializeField] ScrollerController m_PackController;
         [SerializeField] Button qualitySelectBtn;
         [SerializeField] Button starSelectBtn;
+        [SerializeField] Transform qualityArrow;
+        [SerializeField] Transform starArrow;
         [SerializeField] SortTable qualitySort;
         [SerializeField] SortTable starSort;
 
@@ -63,14 +65,19 @@
             playerPack.RefreshItemCountAct += RefreshDogzItemEvent;
             qualitySort.onSelectSortEvent += RefreshDogzSelectEvent;
             starSort.onSelectSortEvent += RefreshDogzSelectEvent;
+            qualitySort.onSortCloseEvent += CloseQualitySort;
+            starSort.onSortCloseEvent += CloseStarSort;
             dogzModel.SelectDogzItemQuality = 0;
             dogzModel.SelectDogzItemStart = 0;
+
             starSort.SetDefault();
             qualitySort.SetDefault();
             UpdateDogzEquip();
             UpdateDogzPack();
             starSort.gameObject.SetActive(false);
             qualitySort.gameObject.SetActive(false);
+            starArrow.localRotation = Quaternion.Euler(0, 0, 180);
+            qualityArrow.localRotation = Quaternion.Euler(0, 0, 180);
         }
 
         protected override void OnAfterOpen()
@@ -83,6 +90,8 @@
             playerPack.RefreshItemCountAct -= RefreshDogzItemEvent;
             qualitySort.onSelectSortEvent -= RefreshDogzSelectEvent;
             starSort.onSelectSortEvent -= RefreshDogzSelectEvent;
+            qualitySort.onSortCloseEvent -= CloseQualitySort;
+            starSort.onSortCloseEvent -= CloseStarSort;
         }
 
         protected override void OnAfterClose()
@@ -183,12 +192,31 @@
 
         private void ClickStarSelect()
         {
-            starSort.gameObject.SetActive(!starSort.gameObject.activeInHierarchy);
+            starArrow.localRotation = Quaternion.Euler(0, 0, 0);
+            if (!starSort.gameObject.activeInHierarchy)
+            {
+                starSort.gameObject.SetActive(true);
+            }
         }
 
         private void ClickQualitySelect()
         {
-            qualitySort.gameObject.SetActive(!qualitySort.gameObject.activeInHierarchy);
+            qualityArrow.localRotation = Quaternion.Euler(0, 0, 0);
+            if (!qualitySort.gameObject.activeInHierarchy)
+            {
+                qualitySort.gameObject.SetActive(true);
+            }
+        }
+
+
+        private void CloseQualitySort()
+        {
+            qualityArrow.localRotation = Quaternion.Euler(0, 0, 180);
+        }
+
+        private void CloseStarSort()
+        {
+            starArrow.localRotation = Quaternion.Euler(0, 0, 180);
         }
 
         [Serializable]
diff --git a/System/DogzDungeon/DogzDungeonModel.cs b/System/DogzDungeon/DogzDungeonModel.cs
index 7d90c9f..987270f 100644
--- a/System/DogzDungeon/DogzDungeonModel.cs
+++ b/System/DogzDungeon/DogzDungeonModel.cs
@@ -286,17 +286,25 @@
                 }
             }
 
+            if (containBox)
+            {
+                dogzDungeonBox.UpdateBoxRefreshTime(boxRefreshSecond);
+            }
+
+            if (containElite)
+            {
+                dogzDungeonElite.UpdateEliteRefreshTime(eliteRefreshSecond);
+            }
+
             if (WindowCenter.Instance.CheckOpen("DogzDungeonWin"))
             {
                 if (containBox)
                 {
-                    dogzDungeonBox.UpdateBoxRefreshTime(boxRefreshSecond);
                     RequestBoxSurplusInfo();
                 }
 
                 if (containElite)
                 {
-                    dogzDungeonElite.UpdateEliteRefreshTime(eliteRefreshSecond);
                     RequestEliteSurplusInfo();
                 }
             }
diff --git a/System/Dungeon/DungeonModel.cs b/System/Dungeon/DungeonModel.cs
index 7d4a868..d4c2aa7 100644
--- a/System/Dungeon/DungeonModel.cs
+++ b/System/Dungeon/DungeonModel.cs
@@ -453,7 +453,7 @@
                             }
                             else
                             {
-                                CancelGroupEnter(_dungeon.mapId);
+                                CancelGroupEnter(_dungeon);
                             }
                         });
                     }
@@ -479,9 +479,9 @@
             }
         }
 
-        private void CancelGroupEnter(int _mapId)
+        private void CancelGroupEnter(Dungeon _dungeon)
         {
-            switch (_mapId)
+            switch (_dungeon.mapId)
             {
                 case RealmModel.REALM_DUNGEON_ID:
                     if (!WindowCenter.Instance.CheckOpen<TeamFrameWin>())
@@ -491,6 +491,14 @@
                         WindowCenter.Instance.Open<TeamFrameWin>(false, teamModel.myTeam.inTeam ? 1 : 0);
                     }
                     break;
+                default:
+                    if (!WindowCenter.Instance.CheckOpen<TeamFrameWin>())
+                    {
+                        var teamModel = ModelCenter.Instance.GetModel<TeamModel>();
+                        teamModel.missionBuf = teamModel.currentMission = new TeamMission(_dungeon.mapId, _dungeon.lineId);
+                        WindowCenter.Instance.Open<TeamFrameWin>(false, teamModel.myTeam.inTeam ? 1 : 0);
+                    }
+                    break;
             }
         }
 
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/PlayerPackModels.cs b/System/KnapSack/Logic/PlayerPackModels.cs
index 4b4fbe2..8b4bfc1 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>();
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/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..b123d33 100644
--- a/System/Login/LoginWin.cs
+++ b/System/Login/LoginWin.cs
@@ -169,6 +169,14 @@
                 return;
             }
 
+            if (VersionUtility.Instance.IsMaoErGame())
+            {
+                if (VersionUtility.Instance.step != VersionUtility.Step.Completed)
+                {
+                    return;
+                }
+            }
+
             Login();
         }
 
diff --git a/System/MainInterfacePanel/FeatureNoticeModel.cs b/System/MainInterfacePanel/FeatureNoticeModel.cs
index e2b91db..1b28179 100644
--- a/System/MainInterfacePanel/FeatureNoticeModel.cs
+++ b/System/MainInterfacePanel/FeatureNoticeModel.cs
@@ -242,9 +242,10 @@
         var IsOpenMaininterface = WindowCenter.Instance.CheckOpen<MainInterfaceWin>();
         var IsOpenOffLineOnHook = WindowCenter.Instance.CheckOpen<OffLineOnHookWin>();
         var treasureModel = ModelCenter.Instance.GetModel<TreasureModel>();
+        var IsLoading = StageManager.Instance.isLoading;
         if (NewBieCenter.Instance.inGuiding || treasureModel.newGotShowing || inDungeon || !IsOpenMaininterface
             || treasureModel.treasureStageUpShow || WindowCenter.Instance.ExitAnyFullScreenOrMaskWin() ||
-            IsOpenOffLineOnHook)
+            IsOpenOffLineOnHook || IsLoading)
         {
             yield break;
         }
diff --git a/System/MainInterfacePanel/FeatureNoticeWin.cs b/System/MainInterfacePanel/FeatureNoticeWin.cs
index 700562c..c504631 100644
--- a/System/MainInterfacePanel/FeatureNoticeWin.cs
+++ b/System/MainInterfacePanel/FeatureNoticeWin.cs
@@ -19,7 +19,7 @@
         Pet = 6,//鐏靛疇
         Horse = 8,//鍧愰獞
         Wing = 97,//缈呰唨
-        GossipFurnace = 87,//鍏崷鐐�
+        GossipFurnace = 143,//鍏崷鐐�
     }
 
     public class FeatureNoticeWin : Window
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/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 f36c97b..fc42051 100644
--- a/System/MainInterfacePanel/TaskListTip.cs
+++ b/System/MainInterfacePanel/TaskListTip.cs
@@ -155,19 +155,19 @@
             }
         }
 
-        private void CardLevelChangeEvent(int taskID)
+        private void CardLevelChangeEvent(int taskID)//鍗$骇鐘舵�佹敼鍙�
         {
             if (taskmodel.allMissionDict.ContainsKey(taskID) && taskmodel.allMissionDict[taskID].Type == 3)
             {
                 TaskScheduling();
-                TheTaskToGenerate();
+                ChangeSort();
                 TaskJump(taskID);
             }
         }
-        private void MainCardLevelChange(int _id)
+        private void MainCardLevelChange(int _id)//涓荤嚎浠诲姟鍗$骇鐘舵�佹敼鍙�
         {
-            TaskScheduling();    
-            TheTaskToGenerate();
+            TaskScheduling();
+            ChangeSort();
             TaskJump(_id);
         }
 
@@ -326,6 +326,20 @@
                 }
             }
         }
+        private void ChangeSort()//鍏充簬浠诲姟鍙樻洿鎺掑簭
+        {
+            for (int i = 0; i < Content.childCount; i++)
+            {
+                GameObject obj = Content.GetChild(i).gameObject;
+                TaskType taskType = obj.GetComponent<TaskType>();
+                if (taskType.TaskID != 0 && _list.Contains(taskType.TaskID))
+                {
+                    int Inedx = _list.IndexOf(taskType.TaskID);
+                    obj.transform.SetSiblingIndex(Inedx);
+                }
+            }
+        }
+
 
         void TaskInformation(int _Taskid, Dictionary<int, Dictionary<string, string>> _Dic)//浠诲姟瀛楀吀淇℃伅
         {
@@ -376,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)
@@ -393,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/Market/PutawayWin.cs b/System/Market/PutawayWin.cs
index deb941d..49781a5 100644
--- a/System/Market/PutawayWin.cs
+++ b/System/Market/PutawayWin.cs
@@ -514,6 +514,7 @@
             if (PutawayData.Instance.itemModel == null) return;
             if (PlayerDatas.Instance.market.putawayCnt >= model.totalPutawayCnt)
             {
+                SysNotifyMgr.Instance.ShowTip("MarketNoPutaway4", model.totalPutawayCnt);
                 return;
             }
             if (PutawayData.Instance.priceCnt == 0)
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/PlayerDead/PlayerDeadModel.cs b/System/PlayerDead/PlayerDeadModel.cs
index 532cffb..5a12a6a 100644
--- a/System/PlayerDead/PlayerDeadModel.cs
+++ b/System/PlayerDead/PlayerDeadModel.cs
@@ -26,7 +26,7 @@
         IsCanReborn = false;
         isOpenPrompting = true;
         this.deadCD = 0;
-        localBossState = 0;
+        localBossState = false;
         playerIsDie = false;
     }
 
@@ -81,13 +81,14 @@
     private DungeonOpenTimeConfig _dungeonOpenTimeModel;
 
     public bool IsCanReborn { get; private set; }
-    public int localBossState { get; private set;}
+    public bool localBossState { get; private set;}
     public string killerName { get; private set; }
     public bool isKillByPlayer { get; private set; }
     public int npcRealmLv { get; private set; }
     private void RefreshPlayerDieInfo(string key, ArrayList infolist)
     {
         npcRealmLv = 0;
+        localBossState = false;
         switch (key)
         {
             case "PK_lhs_318691":
@@ -100,11 +101,16 @@
             case "GeRen_chenxin_279029":
                 if(infolist.Count > 0)
                 {
+                    WorldBossConfig bossConfig = Config.Instance.Get<WorldBossConfig>(int.Parse(infolist[0].ToString()));
                     NPCConfig nPCConfig = Config.Instance.Get<NPCConfig>(int.Parse(infolist[0].ToString()));
                     if(nPCConfig != null)
                     {
                         killerName = nPCConfig.charName;
                         npcRealmLv = nPCConfig.Realm;
+                    }
+                    if(bossConfig != null)
+                    {
+                        localBossState = true;
                     }
                     isKillByPlayer = false;
                 }
@@ -141,8 +147,6 @@
         {
             return;
         }
-
-        localBossState = PlayerDatas.Instance.extersion.bossState;
         playerIsDie = true;
         _tagMapModel = Config.Instance.Get<MapConfig>(PlayerDatas.Instance.baseData.MapID);
         if (_tagMapModel.MapFBType == 0)
@@ -151,7 +155,7 @@
             rebornTiredNum = RebornConditions[0];
             rebornPrice = RebornConditions[2];
             //isBossKill = StatusManager.Instance.IsExist((int)playerId,20022);
-            if (!isKillByPlayer && localBossState == 1)
+            if (!isKillByPlayer && localBossState)
             {
                 autoRebornTime = RebornConditions[3];
             }
@@ -253,7 +257,7 @@
         if (PlayerDatas.Instance.baseData.PlayerID != data.PlayerID)
             return;
 
-        localBossState = 0;
+        localBossState = false;
         this.deadCD = 0;
         isKillByPlayer = false;
         playerIsDie = false;
diff --git a/System/PlayerDead/RebornWin.cs b/System/PlayerDead/RebornWin.cs
index 01f26a9..ae4b4cb 100644
--- a/System/PlayerDead/RebornWin.cs
+++ b/System/PlayerDead/RebornWin.cs
@@ -79,7 +79,7 @@
         {
             questTimes = 0;
             _rebornPriceText.text = 1.ToString();
-            if(DeadModel.isKillByPlayer || DeadModel.localBossState != 1)
+            if(DeadModel.isKillByPlayer || !DeadModel.localBossState)
             {
                 OnShowBtnlist();
             }
diff --git a/System/Realm/RealmUpWin.cs b/System/Realm/RealmUpWin.cs
index 60eb8e7..ef5507d 100644
--- a/System/Realm/RealmUpWin.cs
+++ b/System/Realm/RealmUpWin.cs
@@ -41,10 +41,14 @@
 
         [SerializeField] UIEffect m_RealmDungeonSfx;
 
+        [SerializeField] RectTransform m_ContainerGroup;
+        [SerializeField] Button m_Group;
+        [SerializeField] Button m_AutoGroup;
+        [SerializeField] Button m_GroupDungeon;
         [SerializeField] Button m_SingleDungeon;
         [SerializeField] Button m_FuncButton;
-        [SerializeField] Text m_FuncButtonTxt;
         [SerializeField] Text m_RealmStageTip;
+        [SerializeField] RedpointBehaviour m_SingleRedpoint;
 
         [SerializeField] RectTransform m_ContainerFightPower;
         [SerializeField] Text m_FightPower;
@@ -77,6 +81,9 @@
             m_SingleDungeon.onClick.AddListener(SingleDungeon);
             m_FuncButton.onClick.AddListener(OnFunctionClick);
             m_RealmPreview.onClick.AddListener(OnRealmPreview);
+            m_Group.onClick.AddListener(OpenGroup);
+            m_AutoGroup.onClick.AddListener(AutoGroup);
+            m_GroupDungeon.onClick.AddListener(GroupDungeon);
         }
 
         protected override void OnPreOpen()
@@ -86,6 +93,7 @@
             cacheRealmPoint = PlayerDatas.Instance.extersion.realmPoint;
             m_RawBoss.gameObject.SetActive(false);
             m_RawPlayer.gameObject.SetActive(false);
+            m_ContainerGroup.gameObject.SetActive(false);
             overdueTime = DateTime.Now;
             Display();
         }
@@ -326,56 +334,71 @@
         {
             var _realmPoint = PlayerDatas.Instance.extersion.realmPoint;
             var config = Config.Instance.Get<RealmConfig>(PlayerDatas.Instance.baseData.realmLevel);
-            m_FuncButton.gameObject.SetActive(!realmModel.IsRealmHighest);
-            m_SingleDungeon.gameObject.SetActive(false);
-            if (_realmPoint >= config.NeedPoint)
-            {
-                m_FuncButtonTxt.text = Language.Get(config.IsBigRealm == 1 ? "RealmWin_Bewrite_13" : "RealmWin_Bewrite_12");
-                m_SingleDungeon.gameObject.SetActive(config.IsBigRealm == 1 && !realmModel.IsRealmHighest);
-            }
-            else
-            {
-                m_FuncButtonTxt.text = Language.Get("RealmWin_Bewrite_1");
-            }
+            bool satisfyChallenge = _realmPoint >= config.NeedPoint;
+            m_Group.gameObject.SetActive(!realmModel.IsRealmHighest && config.IsBigRealm == 1 && satisfyChallenge);
+            m_SingleDungeon.gameObject.SetActive(!realmModel.IsRealmHighest && satisfyChallenge);
+            m_FuncButton.gameObject.SetActive(!realmModel.IsRealmHighest && !satisfyChallenge);
+            m_SingleRedpoint.gameObject.SetActive(!m_Group.gameObject.activeSelf);
         }
 
         private void OnFunctionClick()
         {
-            var _realmPoint = PlayerDatas.Instance.extersion.realmPoint;
-            var config = Config.Instance.Get<RealmConfig>(PlayerDatas.Instance.baseData.realmLevel);
-            if (_realmPoint >= config.NeedPoint)
+            WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.DailyQuestFunc1);
+        }
+
+        private void GroupDungeon()
+        {
+            if (DateTime.Now < overdueTime)
             {
-                if (DateTime.Now < overdueTime)
-                {
-                    return;
-                }
-                PlayerDatas.Instance.realm.realmHelpList.Clear();
-                if (config.IsBigRealm == 1)
-                {
-                    var teamModel = ModelCenter.Instance.GetModel<TeamModel>();
-                    if (teamModel.myTeam.inTeam && teamModel.myTeam.iamCaptainer)
-                    {
-                        ModelCenter.Instance.GetModel<DungeonModel>().GroupChallenge(RealmModel.REALM_DUNGEON_ID, 1);
-                    }
-                    else
-                    {
-                        teamModel.missionBuf = teamModel.currentMission = new TeamMission(31110, 1);
-                        WindowCenter.Instance.Open<TeamFrameWin>(false, teamModel.myTeam.inTeam ? 1 : 0);
-                    }
-                }
-                else
-                {
-                    ModelCenter.Instance.GetModel<DungeonModel>().SingleChallenge(RealmModel.REALM_DUNGEON_ID);
-                }
+                return;
+            }
+            if (PlayerDatas.Instance.baseData.MapID == RealmModel.REALM_DUNGEON_ID)
+            {
+                return;
+            }
+            var teamModel = ModelCenter.Instance.GetModel<TeamModel>();
+            if (teamModel.myTeam.inTeam && teamModel.myTeam.iamCaptainer)
+            {
+                ModelCenter.Instance.GetModel<DungeonModel>().GroupChallenge(RealmModel.REALM_DUNGEON_ID, 1);
             }
             else
             {
-                WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.DailyQuestFunc1);
+                teamModel.missionBuf = teamModel.currentMission = new TeamMission(31110, 1);
+                WindowCenter.Instance.Open<TeamFrameWin>(false, teamModel.myTeam.inTeam ? 1 : 0);
+            }
+        }
+
+        private void AutoGroup()
+        {
+            if (DateTime.Now < overdueTime)
+            {
+                return;
+            }
+            var teamModel = ModelCenter.Instance.GetModel<TeamModel>();
+            teamModel.RequestAutoMatchTeam(new TeamMission(RealmModel.REALM_DUNGEON_ID, 1));
+            WindowCenter.Instance.Open<TeamFrameWin>(false, 1);
+        }
+
+        private void OpenGroup()
+        {
+            var opened = m_ContainerGroup.gameObject.activeSelf;
+            if (!opened)
+            {
+                m_ContainerGroup.gameObject.SetActive(true);
             }
         }
 
         private void SingleDungeon()
         {
+            if (DateTime.Now < overdueTime)
+            {
+                return;
+            }
+            if (PlayerDatas.Instance.baseData.MapID == RealmModel.REALM_DUNGEON_ID)
+            {
+                return;
+            }
+            PlayerDatas.Instance.realm.realmHelpList.Clear();
             var _realmPoint = PlayerDatas.Instance.extersion.realmPoint;
             var config = Config.Instance.Get<RealmConfig>(PlayerDatas.Instance.baseData.realmLevel);
             if (_realmPoint >= config.NeedPoint)
diff --git a/System/Skill/SkillModel.cs b/System/Skill/SkillModel.cs
index 7f93764..29903ea 100644
--- a/System/Skill/SkillModel.cs
+++ b/System/Skill/SkillModel.cs
@@ -350,7 +350,7 @@
                     taskHoleCondition = result;
                 }
             }
-            UpdateTaskHoleRedpoint();
+            //UpdateTaskHoleRedpoint();
         }
 
         RolePromoteModel m_PromoteModel;
@@ -528,7 +528,7 @@
             }
             playerLoginOk = true;
             UpdateRedpoint();
-            UpdateTaskHoleRedpoint();
+            //UpdateTaskHoleRedpoint();
         }
 
         public void CheckEquipPassSkill(PlayerSkillData _skill)
@@ -648,29 +648,29 @@
             UpdateRedpoint();
         }
 
-        public Redpoint taskHoleRedpoint = new Redpoint(10302, 1030299);
-        void UpdateTaskHoleRedpoint()
-        {
-            taskHoleRedpoint.state = RedPointState.None;
-            if (DayRemind.Instance.GetDayRemind(DayRemind.TASK_SKILL_HOLE))
-            {
-                return;
-            }
-            foreach (var hole in taskHoleDict.Keys)
-            {
-                var taskId = taskHoleDict[hole];
-                if (IsImmediatelyUnlock(hole))
-                {
-                    var config = Config.Instance.Get<PyTaskConfig>(taskId);
-                    if (PlayerDatas.Instance.baseData.LV >= config.lv
-                        && !IsTaskHoleUnlock(hole))
-                    {
-                        taskHoleRedpoint.state = RedPointState.Simple;
-                    }
-                    return;
-                }
-            }
-        }
+        //public Redpoint taskHoleRedpoint = new Redpoint(10302, 1030299);
+        //void UpdateTaskHoleRedpoint()
+        //{
+        //    taskHoleRedpoint.state = RedPointState.None;
+        //    if (DayRemind.Instance.GetDayRemind(DayRemind.TASK_SKILL_HOLE))
+        //    {
+        //        return;
+        //    }
+        //    foreach (var hole in taskHoleDict.Keys)
+        //    {
+        //        var taskId = taskHoleDict[hole];
+        //        if (IsImmediatelyUnlock(hole))
+        //        {
+        //            var config = Config.Instance.Get<PyTaskConfig>(taskId);
+        //            if (PlayerDatas.Instance.baseData.LV >= config.lv
+        //                && !IsTaskHoleUnlock(hole))
+        //            {
+        //                taskHoleRedpoint.state = RedPointState.Simple;
+        //            }
+        //            return;
+        //        }
+        //    }
+        //}
 
         public bool IsImmediatelyUnlock(int hole)
         {
@@ -685,7 +685,7 @@
         public void SetTaskHoleRemind()
         {
             DayRemind.Instance.SetDayRemind(DayRemind.TASK_SKILL_HOLE, true);
-            UpdateTaskHoleRedpoint();
+            //UpdateTaskHoleRedpoint();
         }
         #endregion
 
@@ -694,7 +694,7 @@
             if (_id == 109)
             {
                 UpdateRedpoint();
-                UpdateTaskHoleRedpoint();
+                //UpdateTaskHoleRedpoint();
             }
         }
     }
diff --git a/System/Skill/SkillPassWin.cs b/System/Skill/SkillPassWin.cs
index 2185243..ee401b6 100644
--- a/System/Skill/SkillPassWin.cs
+++ b/System/Skill/SkillPassWin.cs
@@ -152,22 +152,22 @@
                     OnClickEquipHole(hole, false);
                 }
             }
-            else if (model.taskHoleRedpoint.state == RedPointState.Simple)
-            {
-                model.SetTaskHoleRemind();
-                for (int i = 0; i < equipPassSkills.Count; i++)
-                {
-                    PassSkillLimit limit;
-                    if (model.TryGetPassSkillLimit(i, out limit))
-                    {
-                        if (limit.OpenSkillSlots > 0 && model.IsImmediatelyUnlock(i))
-                        {
-                            OnClickEquipHole(i, false);
-                            return;
-                        }
-                    }
-                }
-            }
+            //else if (model.taskHoleRedpoint.state == RedPointState.Simple)
+            //{
+            //    model.SetTaskHoleRemind();
+            //    for (int i = 0; i < equipPassSkills.Count; i++)
+            //    {
+            //        PassSkillLimit limit;
+            //        if (model.TryGetPassSkillLimit(i, out limit))
+            //        {
+            //            if (limit.OpenSkillSlots > 0 && model.IsImmediatelyUnlock(i))
+            //            {
+            //                OnClickEquipHole(i, false);
+            //                return;
+            //            }
+            //        }
+            //    }
+            //}
         }
 
         protected override void OnAfterOpen()
diff --git a/System/Store/PetAndMountPushWin.cs b/System/Store/PetAndMountPushWin.cs
index 4ab0a23..4347bef 100644
--- a/System/Store/PetAndMountPushWin.cs
+++ b/System/Store/PetAndMountPushWin.cs
@@ -83,7 +83,8 @@
         private void ClickGoTo()
         {
             CloseImmediately();
-            WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.StoreFunc3);
+            storeModel.SetJumpModel(StoreFunc.BindStore, storeModel.currentPushId);
+            WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.StoreFunc4);
         }
         private void ClickCloseBtn()
         {
diff --git a/System/Store/StoreModel.cs b/System/Store/StoreModel.cs
index 8586001..400548f 100644
--- a/System/Store/StoreModel.cs
+++ b/System/Store/StoreModel.cs
@@ -58,6 +58,7 @@
     {
         IsMustBuyDay = false;
         isLogin = true;
+        ClearJumpModel();
         StageManager.Instance.onStageLoadFinish -= OnStageLoadFinish;
         FuncOpen.Instance.OnFuncStateChangeEvent -= FuncStateChange;
         WindowCenter.Instance.windowAfterCloseEvent -= windowAfterOpen;
@@ -1019,7 +1020,7 @@
         List<StoreConfig> storelist = StoreConfig.GetAllShoplist();
         for(int i = 0; i < storelist.Count; i++)
         {
-            if (storelist[i].ShopType != (int)StoreFunc.GrowStrongerStore) continue;
+            if (storelist[i].ShopType != (int)StoreFunc.BindStore) continue;
 
             ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(storelist[i].ItemID);
             string key = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID,"ShopId",storelist[i].ID);
@@ -1242,6 +1243,24 @@
     }
 
     #endregion
+
+    #region 澶勭悊璺宠浆鏁版嵁
+    public int funcOrder { get; private set; }
+    public int jumpShopId { get; private set; }
+    public void SetJumpModel(StoreFunc storeFunc,int shopId)
+    {
+        if (shopId == 0) return;
+
+        funcOrder = (int)storeFunc - 1;
+        jumpShopId = shopId;
+    }
+
+    public void ClearJumpModel()
+    {
+        funcOrder = -1;
+        jumpShopId = 0;
+    }
+    #endregion
 }
 
 public enum StoreFunc
diff --git a/System/Store/StoreWin.cs b/System/Store/StoreWin.cs
index 39b8b6f..7c4d282 100644
--- a/System/Store/StoreWin.cs
+++ b/System/Store/StoreWin.cs
@@ -130,6 +130,11 @@
                     functionOrder = _integralStoreTitle.order;
                 }
             }
+
+            if(!WindowJumpMgr.Instance.IsJumpState && m_storeModel.funcOrder != -1)
+            {
+                functionOrder = m_storeModel.funcOrder;
+            }
             _funcBtnGroup.TriggerByOrder(functionOrder);
             GlobalTimeEvent.Instance.secondEvent += RefreshResetTime;
         }
@@ -182,8 +187,25 @@
                     AchievementGoto.guideAchievementId = 0;
                 }
             }
+            else
+            {
+                if(m_storeModel.jumpShopId != 0)
+                {
+                    _tagStoreModellist = StoreConfig.GetTypeStoreModel((int)m_storeModel.storeFuncType);
+                    for (int i = 0; i < _tagStoreModellist.Count; i++)
+                    {
+                        if (_tagStoreModellist[i].ID == m_storeModel.jumpShopId)
+                        {
+                            int index = i / 2 ;
+                            _shopCtrl.JumpIndex(index > 2 ? index - 1 : index);
+                            _shopCtrl.m_Scorller.RefreshActiveCellViews();
+                            break;
+                        }
+                    }
+                    m_storeModel.ClearJumpModel();
+                }
+            }
         }
-
 
         private void RefreshResetTime()
         {
diff --git a/System/Strengthening/WingsRedDot.cs b/System/Strengthening/WingsRedDot.cs
index edec637..83f915d 100644
--- a/System/Strengthening/WingsRedDot.cs
+++ b/System/Strengthening/WingsRedDot.cs
@@ -29,13 +29,13 @@
 
         public override void Init()
         {
-          
+
         }
         public void OnPlayerLoginOk()
         {
-           
-            playerPack.ItemCntAddAct += ItemCntAddAct;
-            playerPack.RefreshItemCountAct += OnItemRefreshEvent;
+
+            playerPack.ItemCntAddAct += ItemCntAddAct;//鐗╁搧鏁伴噺澧炲姞
+            playerPack.ItemCntReduceAct += ItemCntReduceAct;//鐗╁搧鏁伴噺鍑忓皯
             FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChange;
             ItemModel itemModel = playerPack.GetItemModelByIndex(PackType.rptEquip, (int)RoleEquipType.retWing);
             if (IsOnePutOn)
@@ -46,29 +46,23 @@
             {
                 IsOnePutOn = false;
             }
-          
+
         }
         public void OnBeforePlayerDataInitialize()
         {
-            playerPack.ItemCntAddAct -= ItemCntAddAct;//鐗╁搧鏁伴噺鍒锋柊
-            playerPack.RefreshItemCountAct -= OnItemRefreshEvent;//鑳屽寘鍒锋柊
+            playerPack.ItemCntAddAct -= ItemCntAddAct;//鐗╁搧鏁伴噺澧炲姞
             FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChange;
+            playerPack.ItemCntReduceAct -= ItemCntReduceAct;//鐗╁搧鏁伴噺鍑忓皯
         }
-        private void OnItemRefreshEvent(PackType type, int index, int id)
-        {
-            if (type == PackType.rptItem && ItemConfig.tag_Wings.ContainsKey(id)&& IsOnePutOn)
-            {
-                WingsDot();
-                IsOnePutOn = false;
-            }
-        }
+
+
 
         public override void UnInit()
         {
-          
+
         }
 
-       
+
 
         private void OnFuncStateChange(int obj)
         {
@@ -168,25 +162,71 @@
                 Marking = WingNumber;
             }
         }
-        private void ItemCntAddAct(PackType arg1, int WingsItemIndex, int ItemCount)
+        private void ItemCntAddAct(PackType arg1, int ItemIndex, int ItemID)//鐗╁搧鏁伴噺澧炲姞
         {
-            if (arg1 == PackType.rptItem)
+
+            if (arg1 == PackType.rptItem)//鐗╁搧鑳屽寘鐗╁搧澧炲姞
             {
-                if (IsBoolOpenWingeWin)
+                ItemBagAdd(ItemIndex, ItemID);
+            }
+            if (arg1 == PackType.rptEquip)//瑁呭鑳屽寘鐗╁搧澧炲姞
+            {
+                ItemModel itemModel = playerPack.GetItemModelByIndex(PackType.rptEquip, (int)RoleEquipType.retWing);
+                if (IsOnePutOn)
                 {
-                    return;
+                    WingsDot();
                 }
-                if (_dicWings.ContainsKey(WingsItemIndex))
+                if (itemModel != null)
                 {
-                    if (ItemCount > _dicWings[WingsItemIndex].WingsCount)
+                    IsOnePutOn = false;
+                }
+            }
+        }
+
+        private void ItemBagAdd(int ItemIndex, int ItemID)//鐗╁搧鑳屽寘鏁伴噺娣诲姞
+        {
+            ItemModel ItemModel = playerPack.GetItemModelByIndex(PackType.rptItem, ItemIndex);
+            int ItemCount = ItemModel.preItemCount;
+            var WingItem = Config.Instance.Get<WingRefineExpConfig>(ItemModel.itemId);
+            if (IsBoolOpenWingeWin || WingItem == null)
+            {
+                return;
+            }
+            if (_dicWings.ContainsKey(ItemIndex))
+            {
+                if (ItemCount > _dicWings[ItemIndex].WingsCount)
+                {
+                    _dicWings[ItemIndex].WingsCount = ItemCount;
+                    redPointStre.state = RedPointState.Simple;
+                }
+                else
+                {
+                    _dicWings[ItemIndex].WingsCount = ItemCount;
+                }
+            }
+        }
+        private void ItemCntReduceAct(PackType arg1, int Index, int ItemID)
+        {
+            if (arg1 == PackType.rptItem)//鐗╁搧鑳屽寘鐗╁搧鍑忓皯
+            {
+                var WingItem = Config.Instance.Get<WingRefineExpConfig>(ItemID);
+                if (WingItem != null && _dicWings.ContainsKey(Index))
+                {
+                    _dicWings.Remove(Index);
+                    if (_dicWings.Count <= 0 && redPointStre.state == RedPointState.Simple)
                     {
-                        _dicWings[WingsItemIndex].WingsCount = ItemCount;
-                        redPointStre.state = RedPointState.Simple;
+                        redPointStre.state = RedPointState.None;
+                        return;
                     }
-                    else
-                    {
-                        _dicWings[WingsItemIndex].WingsCount = ItemCount;
-                    }
+                }
+            }
+            if (arg1 == PackType.rptEquip)//瑁呭鑴变笅
+            {
+                ItemModel itemModel = playerPack.GetItemModelByIndex(PackType.rptEquip, (int)RoleEquipType.retWing);
+                if (itemModel == null && redPointStre.state == RedPointState.Simple)
+                {
+                    redPointStre.state = RedPointState.None;
+                    return;
                 }
             }
         }
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 9b91016..4a83448 100644
--- a/System/Treasure/TreasurePotentialPanel.cs
+++ b/System/Treasure/TreasurePotentialPanel.cs
@@ -595,7 +595,7 @@
         {
             var levelUpConfig = GetPotentialLevelUpConfig();
             m_SuccessRatio.text = StringUtility.Contact((levelUpConfig.rate * 0.01f).ToString("f0"), "%");
-            m_RatioUp.gameObject.SetActive(model.selectedPotentialBook != 0 && levelUpConfig.rate > 0);
+            m_RatioUp.gameObject.SetActive(model.selectedPotentialBook != 0 && levelUpConfig.rate > 0 && levelUpConfig.materilaKind > 1);
             m_SuccessRatio.color = UIHelper.GetUIColor(model.selectedPotentialBook != 0 && levelUpConfig.rate > 0
                 ? TextColType.DarkGreen : TextColType.LightYellow);
             m_UpgradeImage.gray = levelUpConfig.rate == 0 && model.selectedPotentialBook == 0;
@@ -622,14 +622,25 @@
         private void OnSpNeedItem()
         {
             var levelUpConfig = GetPotentialLevelUpConfig();
-            if (levelUpConfig.rate < 10000 || model.selectedPotentialBook != 0)
+            if (levelUpConfig.rate >= 10000)
+            {
+                SysNotifyMgr.Instance.ShowTip("SPSuccessHint");
+                return;
+            }
+            if (model.selectedPotentialBook == 0)
             {
                 WindowCenter.Instance.Open<PotentialItemUseWin>();
             }
             else
             {
-                SysNotifyMgr.Instance.ShowTip("SPSuccessHint");
-                //DesignDebug.Log("鎴愬姛鐜囧凡缁忓楂樹簡锛屼笉闇�瑕佸啀澧炲姞姒傜巼浜嗭紒");
+                if (levelUpConfig.materilaKind > 1)
+                {
+                    WindowCenter.Instance.Open<PotentialItemUseWin>();
+                }
+                else
+                {
+                    ModelCenter.Instance.GetModel<GetItemPathModel>().SetChinItemModel(model.selectedPotentialBook);
+                }
             }
         }
 
@@ -642,7 +653,7 @@
         {
             m_PotentialBook.gameObject.SetActive(_potentialBookId != 0);
             m_PotentialCount.gameObject.SetActive(_potentialBookId != 0);
-            m_RemoveBook.gameObject.SetActive(_potentialBookId != 0);
+            m_RemoveBook.gameObject.SetActive(false);
             m_AddBookSign.gameObject.SetActive(_potentialBookId == 0);
             if (_potentialBookId != 0)
             {
@@ -653,6 +664,7 @@
                 bool satisfy = levelUpConfig.own >= levelUpConfig.need;
                 m_PotentialCount.text = StringUtility.Contact(UIHelper.GetTextColorByItemColor(satisfy ?
                     TextColType.LightYellow : TextColType.Red, levelUpConfig.own.ToString()), "/", levelUpConfig.need);
+                m_RemoveBook.gameObject.SetActive(levelUpConfig.materilaKind > 1);
             }
 
             DisplaySuccessRatio();
@@ -762,11 +774,11 @@
             var config = Config.Instance.Get<TreasureSkillConfig>(levelupId);
             if (config == null)
             {
-                return new PotentialLevelUpConfig(0, 0, 0, 0);
+                return new PotentialLevelUpConfig(0, 0, 0, 0, 0);
             }
             if (model.selectedPotentialBook == 0)
             {
-                return new PotentialLevelUpConfig(config.InitialRate, 0, 0, 0);
+                return new PotentialLevelUpConfig(config.InitialRate, 0, 0, 0, 0);
             }
             else
             {
@@ -784,7 +796,7 @@
                 var need = config.MeterialNum2[index];
                 var ratio = own >= need ? config.Rate[index] : config.InitialRate;
 
-                return new PotentialLevelUpConfig(ratio, index + 1, own, need);
+                return new PotentialLevelUpConfig(ratio, index + 1, own, need, config.Meterial2ID.Length);
             }
         }
 
@@ -1050,13 +1062,15 @@
             public int rate;
             public int need;
             public int own;
+            public int materilaKind;
 
-            public PotentialLevelUpConfig(int _rate, int _materilaIndex, int _own, int _need)
+            public PotentialLevelUpConfig(int _rate, int _materilaIndex, int _own, int _need,int materilaKind)
             {
                 this.rate = _rate;
                 this.materilaIndex = _materilaIndex;
                 this.need = _need;
                 this.own = _own;
+                this.materilaKind = materilaKind;
             }
         }
         [Serializable]
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()
     {

--
Gitblit v1.8.0