From 51fab14cee367849d673ccf9a0809c68cac843fc Mon Sep 17 00:00:00 2001
From: client_Zxw <826696702@qq.com>
Date: 星期四, 30 八月 2018 23:49:07 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/Skill/SkillModel.cs |   34 ++++++++++++++++++++++++++--------
 1 files changed, 26 insertions(+), 8 deletions(-)

diff --git a/System/Skill/SkillModel.cs b/System/Skill/SkillModel.cs
index 755ab6c..daca465 100644
--- a/System/Skill/SkillModel.cs
+++ b/System/Skill/SkillModel.cs
@@ -47,6 +47,8 @@
         public Dictionary<int, Dictionary<int, List<SkillConfig>>> skillActDict { get; private set; }
         public List<int> betterPassSkills { get; private set; }
         public bool jumpToPass { get; set; }
+        public int minTaskHole { get; private set; }
+        public int maxTaskHole { get; private set; }
         void ParseConfig()
         {
             for (int i = 1; i <= 3; i++)
@@ -71,6 +73,14 @@
                     PassSkillLimit limit = JsonMapper.ToObject<PassSkillLimit>(jsonData[key].ToJson());
                     limit.hole = int.Parse(key);
                     passSkillLimits.Add(limit);
+                    if (minTaskHole == 0 && limit.OpenSkillSlots > 0)
+                    {
+                        minTaskHole = limit.OpenSkillSlots;
+                    }
+                    if (limit.OpenSkillSlots > maxTaskHole)
+                    {
+                        maxTaskHole = limit.OpenSkillSlots;
+                    }
                 }
                 passEquipCnt = int.Parse(funcCfg.Numerical2);
                 taskHoleDict = ConfigParse.GetDic<int, int>(funcCfg.Numerical4);
@@ -290,7 +300,7 @@
 
         public event Action taskUnlockUpdate;
 
-        public int taskHoleCondition { get; private set; }
+        public uint taskHoleCondition { get; private set; }
 
         public const string TASKHOLEKEY = "OpenSkillSlots";
 
@@ -305,9 +315,10 @@
             if (task._DicTaskInformation.ContainsKey(1)
                 && task._DicTaskInformation[1].ContainsKey(TASKHOLEKEY))
             {
-                var value = 0;
-                int.TryParse(task._DicTaskInformation[1][TASKHOLEKEY], out value);
-                return value >= condition;
+                uint value = 0;
+                uint.TryParse(task._DicTaskInformation[1][TASKHOLEKEY], out value);
+                return MathUtility.GetBitValue(value, (ushort)condition);
+                //return value >= condition;
             }
             return false;
         }
@@ -319,11 +330,18 @@
                 var dict = _Dic[1];
                 if (dict.ContainsKey(TASKHOLEKEY))
                 {
-                    var result = 0;
-                    int.TryParse(dict[TASKHOLEKEY], out result);
-                    if (result != taskHoleCondition && playerLoginOk)
+                    uint result = 0;
+                    uint.TryParse(dict[TASKHOLEKEY], out result);
+                    if (playerLoginOk)
                     {
-                        UnlockPassHole = result;
+                        for (int k = minTaskHole; k <= maxTaskHole; k++)
+                        {
+                            if (!MathUtility.GetBitValue(taskHoleCondition, (ushort)k)
+                                && MathUtility.GetBitValue(result, (ushort)k))
+                            {
+                                UnlockPassHole = k;
+                            }
+                        }
                         if (taskUnlockUpdate != null)
                         {
                             taskUnlockUpdate();

--
Gitblit v1.8.0