OSDN Git Service

戦艦が伊勢改二だと水上打撃部隊がカウントされないのを直す
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 24 Jun 2018 14:50:59 +0000 (23:50 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 24 Jun 2018 14:50:59 +0000 (23:50 +0900)
KancolleSniffer.Test/QuestInfoTest.cs
KancolleSniffer/QuestInfo.cs
KancolleSniffer/ShipMaster.cs

index 6be72ee..2907000 100644 (file)
@@ -480,6 +480,9 @@ namespace KancolleSniffer.Test
             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "駆逐軽巡以外");\r
         }\r
 \r
+        private ShipStatus ShipStatus(int shipType, int shipClass, int specId) =>\r
+            new ShipStatus {NowHp = 1, Spec = new ShipSpec {Id = specId, ShipType = shipType, ShipClass = shipClass}};\r
+\r
         /// <summary>\r
         /// 257: 「水上打撃部隊」南方へ!\r
         /// </summary>\r
@@ -490,11 +493,14 @@ namespace KancolleSniffer.Test
             var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
             questInfo.InspectQuestList(CreateQuestList(new[] {259}));\r
 \r
-            battleInfo.InjectResultStatus(new[]\r
+            var org = new[]\r
             {\r
-                ShipStatus(3, 183), ShipStatus(9, 276), ShipStatus(10, 411),\r
-                ShipStatus(10, 412), ShipStatus(5, 193), ShipStatus(5, 194)\r
-            }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
+                ShipStatus(3, 52, 321), ShipStatus(9, 19, 276), ShipStatus(10, 26, 411),\r
+                ShipStatus(10, 26, 412), ShipStatus(5, 29, 193), ShipStatus(5, 29, 194)\r
+            };\r
+            battleInfo.InjectResultStatus(\r
+                org.ToArray(), new ShipStatus[0],\r
+                new ShipStatus[0], new ShipStatus[0]);\r
             questInfo.InspectMapNext(Js(new\r
             {\r
                 api_maparea_id = 5,\r
@@ -519,14 +525,19 @@ namespace KancolleSniffer.Test
             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "軽巡轟沈");\r
             battleInfo.Result.Friend.Main[0].NowHp = 1;\r
 \r
-            battleInfo.Result.Friend.Main[4].Spec = new ShipSpec {Id = 136, ShipType = 9};\r
+            battleInfo.Result.Friend.Main[4] = ShipStatus(9, 37, 136);\r
             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "戦艦4隻");\r
-            battleInfo.Result.Friend.Main[4].Spec = new ShipSpec {Id = 193, ShipType = 5};\r
+            battleInfo.Result.Friend.Main[4] = org[4];\r
 \r
-            battleInfo.Result.Friend.Main[0].Spec = new ShipSpec {Id = 58, ShipType = 4};\r
+            battleInfo.Result.Friend.Main[0] = ShipStatus(4, 4, 58);\r
             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
             PAssert.That(() => questInfo.Quests[0].Count.Now == 0, "軽巡なし");\r
+            battleInfo.Result.Friend.Main[0] = org[0];\r
+\r
+            battleInfo.Result.Friend.Main[2] = ShipStatus(10, 2, 553);\r
+            questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
+            PAssert.That(() => questInfo.Quests[0].Count.Now == 1, "伊勢改二");\r
         }\r
 \r
         /// <summary>\r
index a3ee0f9..9efe6d8 100644 (file)
@@ -606,18 +606,14 @@ namespace KancolleSniffer
                 if (_map == 51 && _boss && QuestSortie.CompareRank(rank, "S") == 0)\r
                 {\r
                     var fleet = _battleInfo.Result.Friend.Main.Where(s => s.NowHp > 0).Select(s => s.Spec).ToArray();\r
-                    var senkan = new[]\r
+                    var ctype = new[]\r
                     {\r
-                        131, 136, // 大和\r
-                        143, 148, 546, // 武蔵\r
-                        80, 275, 541, // 長門\r
-                        81, 276, // 陸奥\r
-                        26, 286, 411, // 扶桑\r
-                        27, 287, 412, // 山城\r
-                        77, 82, // 伊勢\r
-                        87, 88 // 日向\r
+                        2, // 伊勢型\r
+                        19, // 長門型\r
+                        26, // 扶桑型\r
+                        37 // 大和型\r
                     };\r
-                    if (fleet.Select(s => s.Id).Intersect(senkan).Count() == 3 &&\r
+                    if (fleet.Select(s => s.ShipClass).Count(c => ctype.Contains(c)) == 3 &&\r
                         fleet.Count(s => s.ShipType == 3) > 0)\r
                     {\r
                         IncrementCount(q259.Count);\r
index e9975af..ae11930 100644 (file)
@@ -41,7 +41,8 @@ namespace KancolleSniffer
                     BullMax = entry.api_bull_max() ? (int)entry.api_bull_max : 0,\r
                     SlotNum = (int)entry.api_slot_num,\r
                     ShipType = (int)entry.api_stype,\r
-                    ShipTypeName = dict[entry.api_stype]\r
+                    ShipTypeName = dict[entry.api_stype],\r
+                    ShipClass = entry.api_ctype() ? (int)entry.api_ctype : 0\r
                 };\r
                 if (entry.api_afterlv())\r
                 {\r
@@ -114,6 +115,7 @@ namespace KancolleSniffer
         public int SlotNum { get; set; }\r
         public int[] MaxEq { get; set; }\r
         public int ShipType { get; set; }\r
+        public int ShipClass { get; set; }\r
         public string ShipTypeName { get; set; }\r
         public RemodelInfo Remodel { get; } = new RemodelInfo();\r
 \r