};\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
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
[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
}\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