OSDN Git Service

「十八駆」演習!のカウンターを実装する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 7 Dec 2019 05:04:37 +0000 (14:04 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 7 Dec 2019 09:11:22 +0000 (18:11 +0900)
KancolleSniffer.Test/QuestCounterTest.cs
KancolleSniffer/Model/QuestCountList.cs
KancolleSniffer/Model/QuestCounter.cs
KancolleSniffer/Model/QuestSpec.cs

index c76fcd2..78c4f09 100644 (file)
@@ -1166,6 +1166,32 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        /// 337: 「十八駆」演習!\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void PracticeResult_337()\r
+        {\r
+            var quest = InjectQuest(337);\r
+\r
+            _battleInfo.InjectResultStatus(new []\r
+            {\r
+                ShipStatus(2, 48), ShipStatus(2, 49),\r
+                ShipStatus(2, 17), ShipStatus(2, 18),\r
+                ShipStatus(2, 19)\r
+            }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
+            InjectPracticeResult("A");\r
+            Assert.AreEqual(0, quest.Count.Now, "A");\r
+            InjectPracticeResult("S");\r
+            Assert.AreEqual(1, quest.Count.Now);\r
+            _battleInfo.Result.Friend.Main[0] = ShipStatus(2, 47);\r
+            InjectPracticeResult("S");\r
+            Assert.AreEqual(1, quest.Count.Now, "霰→涼風");\r
+            _battleInfo.Result.Friend.Main[4] = ShipStatus(2, 464);\r
+            InjectPracticeResult("S");\r
+            Assert.AreEqual(2, quest.Count.Now, "黒潮→霞改二");\r
+        }\r
+\r
+        /// <summary>\r
         /// 402: 「遠征」を3回成功させよう!\r
         /// 403: 「遠征」を10回成功させよう!\r
         /// 404: 大規模遠征作戦、発令!\r
index 2b3d9a3..388bf00 100644 (file)
@@ -72,13 +72,14 @@ namespace KancolleSniffer.Model
             {893, new QuestSortie {Interval = Quarterly, MaxArray = new[] {3, 3, 3, 3}, Rank = "S", Maps = new[] {15, 71, 721, 722}, Material = new[] {0, 0, 0, 0}}}, // 893: 泊地周辺海域の安全確保を徹底せよ!\r
             {894, new QuestSortie {Interval = Quarterly, MaxArray = new[] {1, 1, 1, 1, 1}, Rank = "S", Maps = new[] {13, 14, 21, 22, 23}, Material = new[] {0, 0, 0, 0}}}, // 894: 空母戦力の投入による兵站線戦闘哨戒\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
-            {302, new QuestPractice {Interval = Weekly, Max = 20, Win = true, Material = new[] {0, 0, 2, 1}}}, // 302: 大規模演習\r
-            {311, new QuestPractice {Interval = Daily, Max = 7, Win = true, Material = new[] {0, 2, 0, 0}}}, // 311: 精鋭艦隊演習\r
-            {315, new QuestPractice {Interval = Daily, Max = 8, Win = true, Material = new[] {0, 0, 0, 0}}}, // 315: 春季大演習\r
-            {318, new QuestPractice {Interval = Daily, Max = 3, Win = true, Material = new[] {0, 2, 2, 0}, AdjustCount = false}}, // 318: 給糧艦「伊良湖」の支援\r
-            {330, new QuestPractice {Interval = Daily, Max = 4, Win = true, Material = new[] {0, 0, 3, 0}}}, // 330: 空母機動部隊、演習始め!\r
+            {303, new QuestPractice {Interval = Daily, Max = 3, Rank = "E", Material = new[] {1, 0, 0, 0}}}, // 303: 「演習」で練度向上!\r
+            {304, new QuestPractice {Interval = Daily, Max = 5, Rank = "B", Material = new[] {0, 0, 1, 0}}}, // 304: 「演習」で他提督を圧倒せよ!\r
+            {302, new QuestPractice {Interval = Weekly, Max = 20, Rank = "B", Material = new[] {0, 0, 2, 1}}}, // 302: 大規模演習\r
+            {311, new QuestPractice {Interval = Daily, Max = 7, Rank = "B", Material = new[] {0, 2, 0, 0}}}, // 311: 精鋭艦隊演習\r
+            {315, new QuestPractice {Interval = Daily, Max = 8, Rank = "B", Material = new[] {0, 0, 0, 0}}}, // 315: 春季大演習\r
+            {318, new QuestPractice {Interval = Daily, Max = 3, Rank = "B", Material = new[] {0, 2, 2, 0}, AdjustCount = false}}, // 318: 給糧艦「伊良湖」の支援\r
+            {330, new QuestPractice {Interval = Daily, Max = 4, Rank = "B", Material = new[] {0, 0, 3, 0}}}, // 330: 空母機動部隊、演習始め!\r
+            {337, new QuestPractice {Interval = Daily, Max = 3, Rank = "S", Material = new[] {0, 0, 0, 3}}}, // 337: 「十八駆」演習!\r
 \r
             {402, new QuestMission {Interval = Daily, Max = 3, Material = new[] {0, 0, 1, 0}}}, // 402: 「遠征」を3回成功させよう!\r
             {403, new QuestMission {Interval = Daily, Max = 10, Material = new[] {0, 0, 0, 0}}}, // 403: 「遠征」を10回成功させよう!\r
index 274c249..9c66937 100644 (file)
@@ -334,6 +334,14 @@ namespace KancolleSniffer.Model
                     return specs.Flagship.IsAircraftCarrier &&\r
                            specs.Specs.Count(spec => spec.IsAircraftCarrier) >= 2 &&\r
                            specs.Types.Count(type => type == 2) >= 2;\r
+                case 337:\r
+                    return specs.Ids.Intersect(new[]\r
+                    {\r
+                        17, 225, 566, // 陽炎\r
+                        18, 226, 567, // 不知火\r
+                        48, 198, 252, // 霰\r
+                        49, 253, 464 // 霞\r
+                    }).Count() == 4;\r
                 default:\r
                     return true;\r
             }\r
index 31494b1..e200f03 100644 (file)
@@ -86,8 +86,8 @@ namespace KancolleSniffer.Model
 \r
     public class QuestPractice : QuestSpec\r
     {\r
-        public bool Win { get; set; }\r
-        public bool Check(string rank) => !Win || QuestSortie.CompareRank(rank, "B") <= 0;\r
+        public string Rank { get; set; }\r
+        public bool Check(string rank) => QuestSortie.CompareRank(rank, Rank) <= 0;\r
     }\r
 \r
     public class QuestMission : QuestSpec\r