From 23b7dfea0fed60fb6961ebeae779e0ea84a3f90e Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期三, 12 九月 2018 17:40:20 +0800
Subject: [PATCH] 3496【前端】【1.0.15】【主干】成就类型91:X技能提升X级跳转优化

---
 System/Achievement/AchievementGotoPart1.cs    |   25 ++++++++++--
 System/Treasure/TreasurePotentialBriefInfo.cs |    2 
 System/Treasure/TreasurePotentialPanel.cs     |   40 ++++++++++++++++++++
 System/Achievement/AchievementModel.cs        |   42 +++++++++++++++++++++
 4 files changed, 103 insertions(+), 6 deletions(-)

diff --git a/System/Achievement/AchievementGotoPart1.cs b/System/Achievement/AchievementGotoPart1.cs
index b5cd718..203c33c 100644
--- a/System/Achievement/AchievementGotoPart1.cs
+++ b/System/Achievement/AchievementGotoPart1.cs
@@ -314,7 +314,8 @@
         public static void GotoSpSkillLevelUp(int _achievementId)
         {
             var config = Config.Instance.Get<SuccessConfig>(_achievementId);
-            var skillId = config.Condition[0];
+            var index = PlayerDatas.Instance.baseData.Job - 1;
+            var skillId = index < config.Condition.Length ? config.Condition[index] : config.Condition[0];
 
             var treasureId = 0;
             var humanTreasures = treasureModel.GetTreasureCategory(TreasureCategory.Human);
@@ -330,13 +331,27 @@
                 }
             }
 
+            var skillConfig = Config.Instance.Get<SkillConfig>(skillId);
+            var treasureConfig = Config.Instance.Get<TreasureConfig>(treasureId);
+
             if (treasureId != 0)
             {
-                treasureModel.currentCategory = TreasureCategory.Human;
-                treasureModel.selectedTreasure = treasureId;
-                treasureModel.selectedPotential = skillId;
+                if (!FuncOpen.Instance.IsFuncOpen(82))
+                {
+                    FuncOpen.Instance.ProcessorFuncErrorTip(82);
+                    return;
+                }
 
-                guideAchievementId = _achievementId;
+                Treasure treasure;
+                if (treasureModel.TryGetTreasure(treasureId, out treasure))
+                {
+                    if (!treasure.IsHighestStage)
+                    {
+                        SysNotifyMgr.Instance.ShowTip("TreasureSkillUnGet", skillConfig.SkillName, treasureConfig.Name);
+                        return;
+                    }
+                    guideAchievementId = _achievementId;
+                }
             }
 
         }
diff --git a/System/Achievement/AchievementModel.cs b/System/Achievement/AchievementModel.cs
index 0a00a3c..9119dee 100644
--- a/System/Achievement/AchievementModel.cs
+++ b/System/Achievement/AchievementModel.cs
@@ -428,6 +428,48 @@
                     case 116:
                         getItemPathModel.SetChinItemModel(config.Condition[0]);
                         break;
+                    case 91:
+                        var index = PlayerDatas.Instance.baseData.Job - 1;
+                        var potentialId = index < config.Condition.Length ? config.Condition[index] : config.Condition[0];
+
+                        var treasureModel = ModelCenter.Instance.GetModel<TreasureModel>();
+                        var treasureId = 0;
+                        var treasures = treasureModel.GetTreasureCategory(TreasureCategory.Human);
+
+                        foreach (var id in treasures)
+                        {
+                            Treasure treasure;
+                            treasureModel.TryGetTreasure(id, out treasure);
+                            if (treasure.GetPotential(potentialId) != null)
+                            {
+                                treasureId = treasure.id;
+                                break;
+                            }
+                        }
+                        var skillConfig = Config.Instance.Get<SkillConfig>(potentialId);
+                        var treasureConfig = Config.Instance.Get<TreasureConfig>(treasureId);
+                        if (treasureId != 0)
+                        {
+                            if (!FuncOpen.Instance.IsFuncOpen(82))
+                            {
+                                return;
+                            }
+                            Treasure treasure;
+                            if (treasureModel.TryGetTreasure(treasureId, out treasure))
+                            {
+                                if (!treasure.IsHighestStage)
+                                {
+                                    return;
+                                }
+                                treasureModel.currentCategory = TreasureCategory.Human;
+                                treasureModel.selectedTreasure = treasureId;
+                                if (!WindowCenter.Instance.CheckOpen<TreasureLevelUpWin>())
+                                {
+                                    WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.TreasureCollectSoul);
+                                }
+                            }
+                        }
+                        break;
                     default:
                         WindowCenter.Instance.Close<TreasureLevelUpWin>();
 
diff --git a/System/Treasure/TreasurePotentialBriefInfo.cs b/System/Treasure/TreasurePotentialBriefInfo.cs
index 427695b..57414d2 100644
--- a/System/Treasure/TreasurePotentialBriefInfo.cs
+++ b/System/Treasure/TreasurePotentialBriefInfo.cs
@@ -112,7 +112,7 @@
                 if (config.LearnSkillReq > 0 && config.LearnSkillLV > 0)
                 {
                     var preskillConfig = Config.Instance.Get<SkillConfig>(config.LearnSkillReq);
-                    requirement = Language.Get("Hallows_NeedSkillLVStart", preskillConfig.SkillName, config.LearnSkillLV);
+                    requirement = Language.Get("Hallows_NeedSkillLVStart", preskillConfig.SkillName, config.LearnSkillLV, config.SkillName);
                     m_PotentialName.text = requirement;
                     m_PotentialName.color = UIHelper.GetUIColor(TextColType.Red);
                 }
diff --git a/System/Treasure/TreasurePotentialPanel.cs b/System/Treasure/TreasurePotentialPanel.cs
index 7d82eb1..19a4b8e 100644
--- a/System/Treasure/TreasurePotentialPanel.cs
+++ b/System/Treasure/TreasurePotentialPanel.cs
@@ -299,6 +299,7 @@
         {
             selectedPotential = m_Treasure.potentials[_index].id;
             m_TreasureAnimation.DisplayPotentialLine(_index);
+            HandleAchievement();
         }
 
         private void OnPotentialLineAnimComplete(int _index)
@@ -321,6 +322,10 @@
                         m_TreasureAnimation.UnlockTreasurePotential(0);
                         model.SetPotentialUnlockShow(model.selectedTreasure);
                     }
+                    else
+                    {
+                        HandleAchievement();
+                    }
                     DisplayLines();
                     break;
                 case TreasureAnimation.TreasureShowStep.FirstPotential:
@@ -331,10 +336,45 @@
                         m_TreasureAnimation.UnlockTreasurePotential(0);
                         model.SetPotentialUnlockShow(model.selectedTreasure);
                     }
+                    else
+                    {
+                        HandleAchievement();
+                    }
                     break;
             }
         }
 
+        void HandleAchievement()
+        {
+            if (AchievementGoto.guideAchievementId != 0 && m_Treasure != null)
+            {
+                var config = Config.Instance.Get<SuccessConfig>(AchievementGoto.guideAchievementId);
+                if (config != null && config.Type == 91)
+                {
+                    var index = PlayerDatas.Instance.baseData.Job - 1;
+                    var skillId = index < config.Condition.Length ? config.Condition[index] : config.Condition[0];
+                    var potential = m_Treasure.GetPotential(skillId);
+                    if (potential != null)
+                    {
+                        if (model.IsPotentialUnlock(m_Treasure.id, potential.id))
+                        {
+                            selectedPotential = potential.id;
+                        }
+                        else
+                        {
+                            var skillConfig = Config.Instance.Get<SkillConfig>(potential.id);
+                            if (skillConfig.LearnSkillReq > 0 && skillConfig.LearnSkillLV > 0)
+                            {
+                                var preskillConfig = Config.Instance.Get<SkillConfig>(skillConfig.LearnSkillReq);
+                                SysNotifyMgr.Instance.ShowTip("TreasurePotentialSelectError", preskillConfig.SkillName, skillConfig.LearnSkillLV, skillConfig.SkillName);
+                            }
+                        }
+                    }
+                    AchievementGoto.guideAchievementId = 0;
+                }
+            }
+        }
+
         void DisplayLines()
         {
             if (m_Treasure == null)

--
Gitblit v1.8.0