OSDN Git Service

「軽巡」級の改修工事を実施せよ!と続~のカウンターを実装する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 7 Feb 2021 13:03:07 +0000 (22:03 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 7 Feb 2021 13:03:07 +0000 (22:03 +0900)
KancolleSniffer.Test/QuestCounterTest.cs
KancolleSniffer/Model/QuestCountList.cs
KancolleSniffer/Model/QuestCounter.cs

index 1c2e733..defb340 100644 (file)
@@ -2223,5 +2223,41 @@ namespace KancolleSniffer.Test
             _questCounter.InspectPowerUp("api_id=4&api_id_items=5,6,7", Js(new {api_powerup_flag = 1}));\r
             Assert.AreEqual(1, q715.Now);\r
         }\r
+\r
+        /// <summary>\r
+        /// 716: 「軽巡」級の改修工事を実施せよ!\r
+        /// 717: 続:「軽巡」級の改修工事を実施せよ!\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void PowerUp_716_717()\r
+        {\r
+            var ships = new[]\r
+            {\r
+                ShipStatus(3), ShipStatus(3), ShipStatus(4), ShipStatus(21),\r
+                ShipStatus(5), ShipStatus(6), ShipStatus(6)\r
+            };\r
+            _shipInventory.Add(ships.Select((s, i) =>\r
+            {\r
+                s.Id = i + 1;\r
+                return s;\r
+            }));\r
+\r
+            var q716 = InjectQuest(716);\r
+            _questCounter.InspectPowerUp("api_id=1&api_id_items=2,3", Js(new {api_powerup_flag = 1}));\r
+            Assert.AreEqual(0, q716.Now);\r
+            _questCounter.InspectPowerUp("api_id=1&api_id_items=2,3,5", Js(new {api_powerup_flag = 1}));\r
+            Assert.AreEqual(0, q716.Now);\r
+            _questCounter.InspectPowerUp("api_id=5&api_id_items=2,3,4", Js(new {api_powerup_flag = 1}));\r
+            Assert.AreEqual(0, q716.Now);\r
+            _questCounter.InspectPowerUp("api_id=1&api_id_items=2,3,4", Js(new {api_powerup_flag = 1}));\r
+            Assert.AreEqual(1, q716.Now);\r
+\r
+            var q717 = InjectQuest(717);\r
+            _questCounter.InspectPowerUp("api_id=1&api_id_items=3,4,5", Js(new {api_powerup_flag = 1}));\r
+            Assert.AreEqual(0, q717.Now);\r
+            _questCounter.InspectPowerUp("api_id=1&api_id_items=5,6,7", Js(new {api_powerup_flag = 1}));\r
+            Assert.AreEqual(1, q717.Now);\r
+        }\r
+\r
     }\r
 }
\ No newline at end of file
index a7d9c33..5edb117 100644 (file)
@@ -152,6 +152,8 @@ namespace KancolleSniffer.Model
             {703, new QuestPowerUp {Interval = Weekly, Max = 15, Material = new[] {1, 0, 2, 0}}}, // 703: 「近代化改修」を進め、戦備を整えよ!\r
             {714, new QuestPowerUp {Interval = Yearly11, Max = 2, Material = new[] {0, 2, 2, 0}}}, // 714: 「駆逐艦」の改修工事を実施せよ!\r
             {715, new QuestPowerUp {Interval = Yearly11, Max = 2, Material = new[] {0, 2, 3, 2}}}, // 715: 続:「駆逐艦」の改修工事を実施せよ!\r
+            {716, new QuestPowerUp {Interval = Yearly2, Max = 2, Material = new[] {0, 2, 3, 0}}}, // 716: 「軽巡」級の改修工事を実施せよ!\r
+            {717, new QuestPowerUp {Interval = Yearly2, Max = 2, Material = new[] {0, 0, 4, 2}}}, // 717: 続:「軽巡」級の改修工事を実施せよ!\r
         };\r
         // @formatter:on\r
 \r
index d99e59d..db979b9 100644 (file)
@@ -465,6 +465,7 @@ namespace KancolleSniffer.Model
         {\r
             if ((int)json.api_powerup_flag == 0)\r
                 return;\r
+            var values = HttpUtility.ParseQueryString(request);\r
             foreach (var quest in _quests.Values)\r
             {\r
                 var count = quest.Count;\r
@@ -472,18 +473,38 @@ namespace KancolleSniffer.Model
                     continue;\r
                 if (quest.Id == 714 || quest.Id == 715)\r
                 {\r
-                    var values = HttpUtility.ParseQueryString(request);\r
-                    if (_shipInventory[int.Parse(values["api_id"])].Spec.ShipType != 2)\r
+                    if (ShipTypeById(values["api_id"]) != 2)\r
                         return;\r
-                    var ships = values["api_id_items"].Split(',').Select(id => _shipInventory[int.Parse(id)]).ToArray();\r
-                    var type = quest.Id == 714 ? 2 : quest.Id == 715 ? 3 : -1;\r
-                    if (ships.Count(s => s.Spec.ShipType == type) < 3)\r
+                    var ships = values["api_id_items"].Split(',').Select(ShipTypeById).ToArray();\r
+                    var required = quest.Id == 714 ? 2 : quest.Id == 715 ? 3 : -1;\r
+                    if (ships.Count(type => type == required) < 3)\r
                         return;\r
                 }\r
+                if (quest.Id == 716 || quest.Id == 717)\r
+                {\r
+                    if (!new[] {3, 4, 21}.Contains(ShipTypeById(values["api_id"])))\r
+                        return;\r
+                    var ships = values["api_id_items"].Split(',').Select(ShipTypeById).ToArray();\r
+                    if (quest.Id == 716)\r
+                    {\r
+                        if (ships.Count(type => new[] {3, 4, 21}.Contains(type)) < 3)\r
+                            return;\r
+                    }\r
+                    else\r
+                    {\r
+                        if (ships.Count(type => new[] {5, 6}.Contains(type)) < 3)\r
+                            return;\r
+                    }\r
+                }\r
                 Increment(count);\r
             }\r
         }\r
 \r
+        private int ShipTypeById(string id)\r
+        {\r
+            return _shipInventory[int.Parse(id)].Spec.ShipType;\r
+        }\r
+\r
         private void Increment(QuestCount count)\r
         {\r
             Add(count, 1);\r