OSDN Git Service

素対潜に装備ボーナスが含まれているのを直す
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Mon, 24 Feb 2020 07:46:21 +0000 (16:46 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Mon, 24 Feb 2020 07:46:21 +0000 (16:46 +0900)
KancolleSniffer.Test/ShipStatusTest.cs
KancolleSniffer/Model/ShipStatus.cs

index 1fedd52..cb501c6 100644 (file)
@@ -616,6 +616,26 @@ namespace KancolleSniffer.Test
                 };\r
                 Assert.AreEqual("83.8", ship.EffectiveAntiSubmarine.ToString("f1"), "三種コンビネーションにならない");\r
             }\r
+\r
+            [TestMethod]\r
+            public void 装備ボーナス()\r
+            {\r
+                var ship = new ShipStatus\r
+                {\r
+                    Fleet = new Fleet(null, 0, null),\r
+                    Firepower = 50,\r
+                    Spec = new ShipSpec\r
+                    {\r
+                        Name = "神風改"\r
+                    },\r
+                    AntiSubmarine = 50 + 10 + 3,\r
+                    Slot = new[]\r
+                    {\r
+                        三式水中探信儀\r
+                    }\r
+                };\r
+                Assert.AreEqual(50, ship.ShipAntiSubmarine);\r
+            }\r
         }\r
 \r
         // ReSharper disable once InconsistentNaming\r
@@ -635,7 +655,8 @@ namespace KancolleSniffer.Test
         private static readonly ItemStatus A25mm三連装機銃集中配備 = new ItemStatus\r
         {\r
             Id = 1,\r
-            Spec = new ItemSpec{\r
+            Spec = new ItemSpec\r
+            {\r
                 Id = 131,\r
                 Type = 21,\r
                 IconType = 15,\r
@@ -651,13 +672,13 @@ namespace KancolleSniffer.Test
             [TestInitialize]\r
             public void Initialize()\r
             {\r
-                _ship =new ShipStatus\r
+                _ship = new ShipStatus\r
                 {\r
                     AntiAir = 93,\r
                     Lucky = 46,\r
                     Spec = new ShipSpec\r
                     {\r
-                        ShipType = 4,\r
+                        ShipType = 4\r
                     },\r
                     Slot = new ItemStatus[0]\r
                 };\r
index e87cb1b..e030b66 100644 (file)
@@ -215,7 +215,39 @@ namespace KancolleSniffer.Model
             }\r
         }\r
 \r
-        public int ShipAntiSubmarine => AntiSubmarine - Slot.Sum(item => item.Spec.AntiSubmarine);\r
+        public int ShipAntiSubmarine => AntiSubmarine - Slot.Sum(item => item.Spec.AntiSubmarine + AntiSubmarineBonus(item.Spec));\r
+\r
+        private int AntiSubmarineBonus(ItemSpec spec)\r
+        {\r
+            switch (spec.Name)\r
+            {\r
+                case "四式水中聴音機":\r
+                    if (Spec.ShipClass == 54) // 秋月型\r
+                        return 1;\r
+                    if (new[] {"五十鈴改二", "那珂改二", "由良改二", "夕張改二", "夕張改二特"}.Any(name => Spec.Name == name))\r
+                        return 1;\r
+                    if (Spec.Name == "夕張改二丁")\r
+                        return 3;\r
+                    break;\r
+                case "三式水中探信儀":\r
+                    if (new[] {"神風", "春風", "時雨", "山風", "舞風", "朝霜"}.Any(Spec.Name.StartsWith))\r
+                        return 3;\r
+                    if (new[] {"潮", "雷", "山雲", "磯風", "浜風", "岸波"}.Any(Spec.Name.StartsWith))\r
+                        return 2;\r
+                    break;\r
+                case "三式爆雷投射機 集中配備":\r
+                    if (new[] {"五十鈴改二", "那珂改二", "由良改二"}.Any(name => Spec.Name == name))\r
+                        return 1;\r
+                    break;\r
+                case "試製15cm9連装対潜噴進砲":\r
+                    if (new[] {"五十鈴改二", "那珂改二", "由良改二", "夕張改二"}.Any(name => Spec.Name == name))\r
+                        return 2;\r
+                    if (Spec.Name == "夕張改二丁")\r
+                        return 3;\r
+                    break;\r
+            }\r
+            return 0;\r
+        }\r
 \r
         public bool CanOpeningAntiSubmarineAttack\r
         {\r