OSDN Git Service

戦果拡張任務!「Z作戦」後段作戦のカウンターを実装する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 17 Nov 2019 12:10:22 +0000 (21:10 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 17 Nov 2019 12:10:22 +0000 (21:10 +0900)
KancolleSniffer.Test/QuestCounterTest.cs
KancolleSniffer/Model/QuestCountList.cs
KancolleSniffer/Model/QuestCounter.cs

index a60eb10..b91fd02 100644 (file)
@@ -135,7 +135,8 @@ namespace KancolleSniffer.Test
                     new QuestCount {Id = 688, NowArray = new[] {2, 1, 2, 1}},\r
                     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 = 280, NowArray = new[] {1, 1, 1, 1}},\r
+                    new QuestCount {Id = 872, NowArray = new[] {1, 1, 1, 1}}\r
                 }\r
             };\r
             new QuestInfo().LoadState(status);\r
@@ -169,6 +170,9 @@ namespace KancolleSniffer.Test
             var q280 = status.QuestCountList[10];\r
             Assert.IsTrue(q280.ToString() == "4/4");\r
             Assert.IsTrue(q280.ToToolTip() == "1-2 1-3 1-4 2-1");\r
+            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
         }\r
     }\r
 \r
@@ -734,6 +738,40 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        /// 872: 戦果拡張任務!「Z作戦」後段作戦\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void BattleResult_872()\r
+        {\r
+            var quest = InjectQuest(872);\r
+\r
+            InjectMapNext(55, 4);\r
+            InjectBattleResult("A");\r
+            Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0, 0}));\r
+            InjectBattleResult("S");\r
+            Assert.IsTrue(CheckCount(quest, new[] {0, 0, 0, 0}));\r
+            InjectMapNext(55, 5);\r
+            InjectBattleResult("S");\r
+            Assert.IsTrue(CheckCount(quest, new[] {0, 1, 0, 0}));\r
+\r
+            InjectMapNext(62, 5);\r
+            InjectBattleResult("S");\r
+            Assert.IsTrue(CheckCount(quest, new[] {0, 1, 1, 0}));\r
+            InjectMapNext(65, 5);\r
+            InjectBattleResult("S");\r
+            Assert.IsTrue(CheckCount(quest, new[] {0, 1, 1, 1}));\r
+            _questCounter.InspectMapNext(Js(new\r
+            {\r
+                api_maparea_id = 7,\r
+                api_mapinfo_no = 2,\r
+                api_no = 15,\r
+                api_event_id = 5\r
+            }));\r
+            InjectBattleResult("S");\r
+            Assert.IsTrue(CheckCount(quest, new[] {1, 1, 1, 1}), "7-2M");\r
+        }\r
+\r
+        /// <summary>\r
         /// 873: 北方海域警備を実施せよ!\r
         /// </summary>\r
         [TestMethod]\r
index b4cfaf0..37d3571 100644 (file)
@@ -63,6 +63,7 @@ namespace KancolleSniffer.Model
             {854, new QuestSpec {Interval = Quarterly, MaxArray = new[] {1, 1, 1, 1}, Material = new[] {0, 0, 0, 4}}}, // 854: 戦果拡張任務!「Z作戦」前段作戦\r
             {861, new QuestSpec {Interval = Quarterly, Max = 2, Material = new[] {0, 4, 0, 0}}}, // 861: 強行輸送艦隊、抜錨!\r
             {862, new QuestSpec {Interval = Quarterly, Max = 2, Material = new[] {0, 0, 8, 4}}}, // 862: 前線の航空偵察を実施せよ!\r
+            {872, new QuestSpec {Interval = Quarterly, MaxArray = new[] {1, 1, 1, 1}, Material = new[] {0, 0, 0, 4}}}, // 872: 戦果拡張任務!「Z作戦」後段作戦\r
             {873, new QuestSpec {Interval = Quarterly, MaxArray = new[] {1, 1, 1}, Material = new[] {0, 0, 0, 0}}}, // 873: 北方海域警備を実施せよ!\r
             {875, new QuestSpec {Interval = Quarterly, Max = 2, Material = new[] {0, 0, 0, 0}}}, // 875: 精鋭「三一駆」、鉄底海域に突入せよ!\r
             {888, new QuestSpec {Interval = Quarterly, MaxArray = new[] {1, 1, 1}, Material = new[] {0, 0, 0, 0}}}, // 888: 新編成「三川艦隊」、鉄底海峡に突入せよ!\r
index 453a544..0a72732 100644 (file)
@@ -77,7 +77,7 @@ namespace KancolleSniffer.Model
 \r
         public override string ToString()\r
         {\r
-            if (Id == 280 || Id == 426 || Id == 854 || Id == 873 || Id == 888 || Id == 894)\r
+            if (Id == 280 || 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
@@ -122,6 +122,10 @@ namespace KancolleSniffer.Model
                     return string.Join(" ",\r
                         new[] {"2-4", "6-1", "6-3", "6-4"}.Zip(NowArray, (map, n) => n >= 1 ? map : "")\r
                             .Where(s => !string.IsNullOrEmpty(s)));\r
+                case 872:\r
+                    return string.Join(" ",\r
+                        new[] {"7-2M", "5-5", "6-2", "6-5"}.Zip(NowArray, (map, n) => n >= 1 ? map : "")\r
+                            .Where(s => !string.IsNullOrEmpty(s)));\r
                 case 873:\r
                     return string.Join(" ",\r
                         new[] {"3-1", "3-2", "3-3"}.Zip(NowArray, (map, n) => n >= 1 ? map : "")\r
@@ -164,7 +168,8 @@ namespace KancolleSniffer.Model
         {\r
             public ResultShipSpecs(BattleInfo battleInfo)\r
             {\r
-                Specs = battleInfo.Result?.Friend.Main.Where(s => s.NowHp > 0).Select(ship => ship.Spec).ToArray() ?? new ShipSpec[0];\r
+                Specs = battleInfo.Result?.Friend.Main.Where(s => s.NowHp > 0).Select(ship => ship.Spec).ToArray() ??\r
+                        new ShipSpec[0];\r
                 Ids = Specs.Select(spec => spec.Id).ToArray();\r
                 Types = Specs.Select(spec => spec.ShipType).ToArray();\r
                 Classes = Specs.Select(spec => spec.ShipClass).ToArray();\r
@@ -356,6 +361,27 @@ namespace KancolleSniffer.Model
                             Increment(count);\r
                         }\r
                         break;\r
+                    case 872:\r
+                        if (_boss && rank.S)\r
+                        {\r
+                            switch (_map)\r
+                            {\r
+                                case 72:\r
+                                    if (_cell != 7)\r
+                                        IncrementNth(count, 0);\r
+                                    break;\r
+                                case 55:\r
+                                    IncrementNth(count, 1);\r
+                                    break;\r
+                                case 62:\r
+                                    IncrementNth(count, 2);\r
+                                    break;\r
+                                case 65:\r
+                                    IncrementNth(count, 3);\r
+                                    break;\r
+                            }\r
+                        }\r
+                        break;\r
                     case 873:\r
                         if (_boss && rank.A &&\r
                             specs.Types.Count(type => type == 3) >= 1)\r