OSDN Git Service

南西諸島方面「海上警備行動」発令!のカウンターを実装する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 17 Nov 2019 12:44:23 +0000 (21:44 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 17 Nov 2019 12:44:23 +0000 (21:44 +0900)
KancolleSniffer.Test/QuestCounterTest.cs
KancolleSniffer/Model/QuestCountList.cs
KancolleSniffer/Model/QuestCounter.cs

index b91fd02..a480a98 100644 (file)
@@ -136,7 +136,8 @@ namespace KancolleSniffer.Test
                     new QuestCount {Id = 893, NowArray = new[] {1, 1, 1, 1}},\r
                     new QuestCount {Id = 894, NowArray = new[] {1, 1, 1, 1, 1}},\r
                     new QuestCount {Id = 280, NowArray = new[] {1, 1, 1, 1}},\r
-                    new QuestCount {Id = 872, NowArray = new[] {1, 1, 1, 1}}\r
+                    new QuestCount {Id = 872, NowArray = new[] {1, 1, 1, 1}},\r
+                    new QuestCount {Id = 284, NowArray = new[] {1, 1, 1, 1}}\r
                 }\r
             };\r
             new QuestInfo().LoadState(status);\r
@@ -173,6 +174,9 @@ namespace KancolleSniffer.Test
             var q872 = status.QuestCountList.First(q => q.Id == 872);\r
             Assert.IsTrue(q872.ToString() == "4/4");\r
             Assert.IsTrue(q872.ToToolTip() == "7-2M 5-5 6-2 6-5");\r
+            var q284 = status.QuestCountList.First(q => q.Id == 284);\r
+            Assert.IsTrue(q284.ToString() == "4/4");\r
+            Assert.IsTrue(q284.ToToolTip() == "1-4 2-1 2-2 2-3");\r
         }\r
     }\r
 \r
@@ -603,7 +607,7 @@ namespace KancolleSniffer.Test
             var quest = InjectQuest(280);\r
 \r
             _battleInfo.InjectResultStatus(\r
-                ShipStatusList(7, 1, 1, 1, 8, 8), new ShipStatus[0],\r
+                ShipStatusList(7, 2, 1, 1, 8, 8), new ShipStatus[0],\r
                 new ShipStatus[0], new ShipStatus[0]);\r
 \r
             InjectMapNext(12, 4);\r
@@ -643,6 +647,36 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        ///  // 284: 南西諸島方面「海上警備行動」発令!\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void BattleResult_284()\r
+        {\r
+            var quest = InjectQuest(284);\r
+\r
+            _battleInfo.InjectResultStatus(\r
+                ShipStatusList(7, 2, 1, 1, 8, 8), new ShipStatus[0],\r
+                new ShipStatus[0], new ShipStatus[0]);\r
+\r
+            InjectMapNext(14, 4);\r
+            InjectBattleResult("S");\r
+            InjectMapNext(14, 5);\r
+            InjectBattleResult("A");\r
+            Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0, 0}));\r
+\r
+            InjectBattleResult("S");\r
+            InjectMapNext(21, 5);\r
+            InjectBattleResult("S");\r
+            InjectMapNext(22, 5);\r
+            InjectBattleResult("S");\r
+            InjectMapNext(23, 5);\r
+            InjectBattleResult("S");\r
+            Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 1}));\r
+\r
+            // 艦種チェックは280と共通\r
+        }\r
+\r
+        /// <summary>\r
         /// 822: 沖ノ島海域迎撃戦\r
         /// 854: 戦果拡張任務!「Z作戦」前段作戦\r
         /// </summary>\r
index 37d3571..010c613 100644 (file)
@@ -58,6 +58,7 @@ namespace KancolleSniffer.Model
             {265, new QuestSortie {Interval = Monthly, Max = 10, Rank = "A", Maps = new[] {15}, Material = new[] {0, 0, 5, 3}}}, // 265: 海上護衛強化月間\r
             {266, new QuestSpec {Interval = Monthly, Max = 1, Material = new[] {4, 4, 0, 2}}}, // 266: 「水上反撃部隊」突入せよ!\r
             {280, new QuestSpec {Interval = Monthly, MaxArray = new[] {1, 1, 1, 1}, Material = new[] {0, 4, 4, 2}}}, // 280: 兵站線確保!海上警備を強化実施せよ!\r
+            {284, new QuestSpec {Interval = Quarterly, MaxArray = new[] {1, 1, 1, 1}, Material = new[] {0, 0, 0, 4}}}, // 284: 南西諸島方面「海上警備行動」発令!\r
 \r
             {822, new QuestSortie {Interval = Quarterly, Max = 2, Rank = "S", Maps = new[] {24}, Material = new[] {0, 0, 0, 5}}}, // 822: 沖ノ島海域迎撃戦\r
             {854, new QuestSpec {Interval = Quarterly, MaxArray = new[] {1, 1, 1, 1}, Material = new[] {0, 0, 0, 4}}}, // 854: 戦果拡張任務!「Z作戦」前段作戦\r
index 0a72732..cda13f4 100644 (file)
@@ -77,7 +77,7 @@ namespace KancolleSniffer.Model
 \r
         public override string ToString()\r
         {\r
-            if (Id == 280 || Id == 426 || Id == 854 || Id == 872 || Id == 873 || Id == 888 || Id == 894)\r
+            if (Id == 280 || Id == 284 || Id == 426 || Id == 854 || Id == 872 || Id == 873 || Id == 888 || Id == 894)\r
                 return $"{NowArray.Count(n => n >= 1)}/{Spec.MaxArray.Length}";\r
             return NowArray != null\r
                 ? string.Join(" ", NowArray.Zip(Spec.MaxArray, (n, m) => $"{n}/{m}"))\r
@@ -109,6 +109,10 @@ namespace KancolleSniffer.Model
                     return string.Join(" ",\r
                         new[] {"1-2", "1-3", "1-4", "2-1"}.Zip(NowArray, (map, n) => n >= 1 ? map : "")\r
                             .Where(s => !string.IsNullOrEmpty(s)));\r
+                case 284:\r
+                    return string.Join(" ",\r
+                        new[] {"1-4", "2-1", "2-2", "2-3"}.Zip(NowArray, (map, n) => n >= 1 ? map : "")\r
+                            .Where(s => !string.IsNullOrEmpty(s)));\r
                 case 426:\r
                     return string.Join(" ",\r
                         new[] {"警備任務", "対潜警戒任務", "海上護衛任務", "強硬偵察任務"}\r
@@ -333,6 +337,28 @@ namespace KancolleSniffer.Model
                             }\r
                         }\r
                         break;\r
+                    case 284:\r
+                        if (_boss && rank.S &&\r
+                            specs.Types.Count(type => type == 1 || type == 2) >= 3 &&\r
+                            specs.Types.Intersect(new[] {3, 4, 7, 21}).Any())\r
+                        {\r
+                            switch (_map)\r
+                            {\r
+                                case 14:\r
+                                    IncrementNth(count, 0);\r
+                                    break;\r
+                                case 21:\r
+                                    IncrementNth(count, 1);\r
+                                    break;\r
+                                case 22:\r
+                                    IncrementNth(count, 2);\r
+                                    break;\r
+                                case 23:\r
+                                    IncrementNth(count, 3);\r
+                                    break;\r
+                            }\r
+                        }\r
+                        break;\r
                     case 854:\r
                         if (_boss)\r
                         {\r