From: Kazuhiro Fujieda Date: Tue, 19 Jul 2016 11:18:09 +0000 (+0900) Subject: 爆戦の改修効果を修正する X-Git-Tag: v8.13~1 X-Git-Url: http://git.osdn.net/view?p=kancollesniffer%2FKancolleSniffer.git;a=commitdiff_plain;h=14ff8688b1ebf4c27d4351c5ba6cad6ec871d8e2 爆戦の改修効果を修正する --- diff --git a/KancolleSniffer.Test/SnifferTest.cs b/KancolleSniffer.Test/SnifferTest.cs index 769c5d3..89ddbeb 100644 --- a/KancolleSniffer.Test/SnifferTest.cs +++ b/KancolleSniffer.Test/SnifferTest.cs @@ -388,6 +388,17 @@ namespace KancolleSniffer.Test } /// + /// 改修効果込みの制空値を正しく計算する + /// + [TestMethod] + public void FighterPowerWithImprovement() + { + var sniffer = new Sniffer(); + SniffLogFile(sniffer, "fighterpower_003"); + PAssert.That(() => sniffer.GetFighterPower(0).SequenceEqual(new [] {135, 135})); + } + + /// /// マップ索敵の判定式(33)を正しく計算する /// [TestMethod] diff --git a/KancolleSniffer.Test/logs b/KancolleSniffer.Test/logs index a72f158..48dbfae 160000 --- a/KancolleSniffer.Test/logs +++ b/KancolleSniffer.Test/logs @@ -1 +1 @@ -Subproject commit a72f1580ee5e41d43bf0d428a6e5b06a2b88acb2 +Subproject commit 48dbfae75e7584b5ab9488e49d26d2dab5f51e13 diff --git a/KancolleSniffer/ItemInfo.cs b/KancolleSniffer/ItemInfo.cs index 7a5174e..9e03712 100644 --- a/KancolleSniffer/ItemInfo.cs +++ b/KancolleSniffer/ItemInfo.cs @@ -292,6 +292,18 @@ namespace KancolleSniffer } } + public double FighterPowerLevelBonus + { + get + { + if (Spec.Type == 6) + return 0.2 * Level; + if (Spec.Type == 7) // 改修可能なのは爆戦のみ + return 0.25 * Level; + return 0; + } + } + public double LoSLevelBonus { get diff --git a/KancolleSniffer/ShipInfo.cs b/KancolleSniffer/ShipInfo.cs index 7bd113e..5ca5a06 100644 --- a/KancolleSniffer/ShipInfo.cs +++ b/KancolleSniffer/ShipInfo.cs @@ -550,13 +550,12 @@ namespace KancolleSniffer public int[] GetFighterPower(int fleet) => GetShipStatuses(fleet).Where(ship => !ship.Escaped).SelectMany(ship => ship.Slot.Zip(ship.OnSlot, (slot, onslot) => - !slot.Spec.CanAirCombat || onslot == 0 - ? new[] {0, 0} - : new[] - { - (int)((slot.Spec.AntiAir + slot.Level * 0.2) * Sqrt(onslot) + slot.AlvBonus[0]), - (int)((slot.Spec.AntiAir + slot.Level * 0.2) * Sqrt(onslot) + slot.AlvBonus[1]) - })) + { + if (!slot.Spec.CanAirCombat || onslot == 0) + return new[] {0, 0}; + var unskilled = (slot.Spec.AntiAir + slot.FighterPowerLevelBonus) * Sqrt(onslot); + return new[] {(int)(unskilled + slot.AlvBonus[0]), (int)(unskilled + slot.AlvBonus[1])}; + })) .Aggregate(new[] {0, 0}, (prev, fp) => new[] {prev[0] + fp[0], prev[1] + fp[1]}); public double GetContactTriggerRate(int fleet)