OSDN Git Service

爆戦の改修効果を修正する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Tue, 19 Jul 2016 11:18:09 +0000 (20:18 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Tue, 19 Jul 2016 11:21:15 +0000 (20:21 +0900)
KancolleSniffer.Test/SnifferTest.cs
KancolleSniffer.Test/logs
KancolleSniffer/ItemInfo.cs
KancolleSniffer/ShipInfo.cs

index 769c5d3..89ddbeb 100644 (file)
@@ -388,6 +388,17 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        /// 改修効果込みの制空値を正しく計算する\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void FighterPowerWithImprovement()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "fighterpower_003");\r
+            PAssert.That(() => sniffer.GetFighterPower(0).SequenceEqual(new [] {135, 135}));\r
+        }\r
+\r
+        /// <summary>\r
         /// マップ索敵の判定式(33)を正しく計算する\r
         /// </summary>\r
         [TestMethod]\r
index a72f158..48dbfae 160000 (submodule)
@@ -1 +1 @@
-Subproject commit a72f1580ee5e41d43bf0d428a6e5b06a2b88acb2
+Subproject commit 48dbfae75e7584b5ab9488e49d26d2dab5f51e13
index 7a5174e..9e03712 100644 (file)
@@ -292,6 +292,18 @@ namespace KancolleSniffer
             }\r
         }\r
 \r
+        public double FighterPowerLevelBonus\r
+        {\r
+            get\r
+            {\r
+                if (Spec.Type == 6)\r
+                    return 0.2 * Level;\r
+                if (Spec.Type == 7) // 改修可能なのは爆戦のみ\r
+                    return 0.25 * Level;\r
+                return 0;\r
+            }\r
+        }\r
+\r
         public double LoSLevelBonus\r
         {\r
             get\r
index 7bd113e..5ca5a06 100644 (file)
@@ -550,13 +550,12 @@ namespace KancolleSniffer
         public int[] GetFighterPower(int fleet)\r
             => GetShipStatuses(fleet).Where(ship => !ship.Escaped).SelectMany(ship =>\r
                 ship.Slot.Zip(ship.OnSlot, (slot, onslot) =>\r
-                    !slot.Spec.CanAirCombat || onslot == 0\r
-                        ? new[] {0, 0}\r
-                        : new[]\r
-                        {\r
-                            (int)((slot.Spec.AntiAir + slot.Level * 0.2) * Sqrt(onslot) + slot.AlvBonus[0]),\r
-                            (int)((slot.Spec.AntiAir + slot.Level * 0.2) * Sqrt(onslot) + slot.AlvBonus[1])\r
-                        }))\r
+                {\r
+                    if (!slot.Spec.CanAirCombat || onslot == 0)\r
+                        return new[] {0, 0};\r
+                    var unskilled = (slot.Spec.AntiAir + slot.FighterPowerLevelBonus) * Sqrt(onslot);\r
+                    return new[] {(int)(unskilled + slot.AlvBonus[0]), (int)(unskilled + slot.AlvBonus[1])};\r
+                }))\r
                 .Aggregate(new[] {0, 0}, (prev, fp) => new[] {prev[0] + fp[0], prev[1] + fp[1]});\r
 \r
         public double GetContactTriggerRate(int fleet)\r