OSDN Git Service

大破艦がダメコンや女神を装備しているときに大破警告を出さない
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 30 Jun 2019 11:16:25 +0000 (20:16 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 30 Jun 2019 11:16:25 +0000 (20:16 +0900)
KancolleSniffer.Test/BattleTest.cs
KancolleSniffer.Test/logs
KancolleSniffer/Model/ShipInfo.cs

index 2ec395e..a6b5f61 100644 (file)
@@ -329,5 +329,16 @@ namespace KancolleSniffer.Test
             var fp = sniffer.Battle.EnemyFighterPower;\r
             PAssert.That(() => fp.AirCombat == 209 && fp.Interception == 212);\r
         }\r
+\r
+        /// <summary>\r
+        /// ダメコン進撃する\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void NotWarnDamagedShipWithDamageControl()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "damecon_advance_001");\r
+            PAssert.That(() => sniffer.BadlyDamagedShips.Length == 0);\r
+        }\r
     }\r
 }
\ No newline at end of file
index 5ee9f9c..a7eff40 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 5ee9f9c57a1d9feab6b327b82b92401251776d4c
+Subproject commit a7eff40685cdda124f94216a5a1185bddd663a31
index df6ce6a..7d00338 100644 (file)
@@ -65,7 +65,8 @@ namespace KancolleSniffer.Model
         {\r
             _shipMaster = shipMaster;\r
             _shipInventory = shipInventory;\r
-            _fleets = Enumerable.Range(0, FleetCount).Select((x, i) => new Fleet(_shipInventory, i, () => _hqLevel)).ToArray();\r
+            _fleets = Enumerable.Range(0, FleetCount).Select((x, i) => new Fleet(_shipInventory, i, () => _hqLevel))\r
+                .ToArray();\r
             _itemInventory = itemInventory;\r
             Counter = new AlarmCounter(() => _shipInventory.Count) {Margin = 5};\r
         }\r
@@ -403,14 +404,17 @@ namespace KancolleSniffer.Model
         public void SetBadlyDamagedShips()\r
         {\r
             BadlyDamagedShips =\r
-            (from s in _fleets.Where(fleet => fleet.State == FleetState.Sortie)\r
-                    .SelectMany(fleet => fleet.CombinedType != 0 && fleet.Number == 1\r
-                        ? fleet.ActualShips.Skip(1) // 第二艦隊の旗艦を除く\r
-                        : fleet.ActualShips)\r
-                where !s.Escaped && s.DamageLevel == ShipStatus.Damage.Badly\r
-                select s.Name).ToArray();\r
+                (from s in ShipsInSortie\r
+                    where !s.Escaped && s.PreparedDamageControl == -1 && s.DamageLevel == ShipStatus.Damage.Badly\r
+                    select s.Name).ToArray();\r
         }\r
 \r
+        private IEnumerable<ShipStatus> ShipsInSortie =>\r
+            _fleets.Where(fleet => fleet.State == FleetState.Sortie)\r
+                .SelectMany(fleet => fleet.CombinedType != 0 && fleet.Number == 1\r
+                    ? fleet.ActualShips.Skip(1) // 連合艦隊の護衛の旗艦をのぞく\r
+                    : fleet.ActualShips);\r
+\r
         public void ClearBadlyDamagedShips()\r
         {\r
             BadlyDamagedShips = new string[0];\r