OSDN Git Service

新編成「三川艦隊」、鉄底海峡に突入せよ!のカウンタを実装する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 4 Aug 2018 06:18:23 +0000 (15:18 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 4 Aug 2018 06:18:23 +0000 (15:18 +0900)
KancolleSniffer.Test/QuestInfoTest.cs
KancolleSniffer/Model/QuestInfo.cs

index f0719b9..c64f206 100644 (file)
@@ -882,6 +882,70 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        /// 888: 新編成「三川艦隊」、鉄底海峡に突入せよ!\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void BattleResult_888()\r
+        {\r
+            var battleInfo = new BattleInfo(null, null);\r
+            var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
+            questInfo.InspectQuestList(CreateQuestList(new[] {888}));\r
+            var count = questInfo.Quests[0].Count;\r
+\r
+            battleInfo.InjectResultStatus(new[]\r
+            {\r
+                ShipStatus(5, 427), ShipStatus(5, 264), ShipStatus(5, 142),\r
+                ShipStatus(5, 417), ShipStatus(2, 144), ShipStatus(2, 195)\r
+            }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
+            questInfo.InspectMapNext(Js(new\r
+            {\r
+                api_maparea_id = 5,\r
+                api_mapinfo_no = 1,\r
+                api_event_id = 4\r
+            }));\r
+            questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
+            questInfo.InspectMapNext(Js(new\r
+            {\r
+                api_maparea_id = 5,\r
+                api_mapinfo_no = 1,\r
+                api_event_id = 5\r
+            }));\r
+            questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
+            PAssert.That(() => count.NowArray[0] == 0);\r
+            questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
+            PAssert.That(() => count.NowArray[0] == 1);\r
+\r
+            battleInfo.Result.Friend.Main[0].NowHp = 0;\r
+            questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
+            PAssert.That(() => count.NowArray[0] == 1, "轟沈あり");\r
+            battleInfo.Result.Friend.Main[0].NowHp = 1;\r
+\r
+            battleInfo.Result.Friend.Main[0].Spec.Id = 319;\r
+            questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
+            PAssert.That(() => count.NowArray[0] == 1, "三川艦隊3隻");\r
+            battleInfo.Result.Friend.Main[0].Spec.Id = 427;\r
+\r
+            questInfo.InspectMapNext(Js(new\r
+            {\r
+                api_maparea_id = 5,\r
+                api_mapinfo_no = 3,\r
+                api_event_id = 5,\r
+            }));\r
+            questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 0}));\r
+\r
+            questInfo.InspectMapNext(Js(new\r
+            {\r
+                api_maparea_id = 5,\r
+                api_mapinfo_no = 4,\r
+                api_event_id = 5,\r
+            }));\r
+            questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1}));\r
+        }\r
+\r
+\r
+        /// <summary>\r
         /// 302: 大規模演習\r
         /// 303: 「演習」で練度向上!\r
         /// 304: 「演習」で他提督を圧倒せよ!\r
@@ -1175,7 +1239,8 @@ namespace KancolleSniffer.Test
                     new QuestCount {Id = 854, NowArray = new[] {2, 1, 1, 1}},\r
                     new QuestCount {Id = 426, NowArray = new[] {1, 1, 1, 1}},\r
                     new QuestCount {Id = 428, NowArray = new[] {1, 1, 1}},\r
-                    new QuestCount {Id = 873, NowArray = new[] {1, 1, 1}}\r
+                    new QuestCount {Id = 873, NowArray = new[] {1, 1, 1}},\r
+                    new QuestCount {Id= 888, NowArray = new []{1, 1, 1}}\r
                 }\r
             };\r
             questInfo.LoadState(status);\r
@@ -1196,6 +1261,9 @@ namespace KancolleSniffer.Test
             var q873 = status.QuestCountList[5];\r
             PAssert.That(() => q873.ToString() == "3/3");\r
             PAssert.That(() => q873.ToToolTip() == "3-1 3-2 3-3");\r
+            var q888 = status.QuestCountList[6];\r
+            PAssert.That(() => q888.ToString() == "3/3");\r
+            PAssert.That(() => q888.ToToolTip() == "5-1 5-3 5-4");\r
         }\r
 \r
         /// <summary>\r
index 72987d5..220e001 100644 (file)
@@ -195,7 +195,7 @@ namespace KancolleSniffer.Model
 \r
         public override string ToString()\r
         {\r
-            if (Id == 426 || Id == 854 || Id == 873)\r
+            if (Id == 426 || Id == 854 || Id == 873 || Id == 888)\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
@@ -223,6 +223,10 @@ namespace KancolleSniffer.Model
                     return string.Join(" ",\r
                         new[] {"3-1", "3-2", "3-3"}.Zip(NowArray, (map, n) => n >= 1 ? map : "")\r
                             .Where(s => !string.IsNullOrEmpty(s)));\r
+                case 888:\r
+                    return string.Join(" ",\r
+                        new[] {"5-1", "5-3", "5-4"}.Zip(NowArray, (map, n) => n >= 1 ? map : "")\r
+                            .Where(s => !string.IsNullOrEmpty(s)));\r
             }\r
             return "";\r
         }\r
@@ -277,6 +281,7 @@ namespace KancolleSniffer.Model
             {862, new QuestSpec {Interval = Quarterly, Max = 2, Material = new[] {0, 0, 8, 4}}}, // 862: 前線の航空偵察を実施せよ!\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
 \r
             {303, new QuestPractice {Interval = Daily, Max = 3, Win = false, Material = new[] {1, 0, 0, 0}}}, // 303: 「演習」で練度向上!\r
             {304, new QuestPractice {Interval = Daily, Max = 5, Win = true, Material = new[] {0, 0, 1, 0}}}, // 304: 「演習」で他提督を圧倒せよ!\r
@@ -708,6 +713,40 @@ namespace KancolleSniffer.Model
                         IncrementCount(q875.Count);\r
                 }\r
             }\r
+            if (_quests.TryGetValue(888, out var q888))\r
+            {\r
+                if (!_boss || QuestSortie.CompareRank(rank, "S") != 0)\r
+                    return;\r
+                var fleet = from ship in _battleInfo.Result.Friend.Main where ship.NowHp > 0 select ship.Spec.Id;\r
+                var member = new[]\r
+                {\r
+                    69, 272, 427, // 鳥海\r
+                    61, 264, // 青葉\r
+                    123, 295, 142, // 衣笠\r
+                    59, 262, 416, // 古鷹\r
+                    60, 263, 417, // 加古\r
+                    51, 213, 477, // 天龍\r
+                    115, 293 // 夕張\r
+                };\r
+                if (fleet.Intersect(member).Count() < 4)\r
+                    return;\r
+                var array = q888.Count.NowArray;\r
+                switch (_map)\r
+                {\r
+                    case 51:\r
+                        array[0]++;\r
+                        NeedSave = true;\r
+                        break;\r
+                    case 53:\r
+                        array[1]++;\r
+                        NeedSave = true;\r
+                        break;\r
+                    case 54:\r
+                        array[2]++;\r
+                        NeedSave = true;\r
+                        break;\r
+                }\r
+            }\r
         }\r
 \r
         private int _questFleet;\r