OSDN Git Service

遠征における大発系の効果を表示する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Thu, 6 Jul 2017 17:00:36 +0000 (02:00 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Fri, 7 Jul 2017 11:32:55 +0000 (20:32 +0900)
KancolleSniffer/FleetPanel.cs
KancolleSniffer/ShipInfo.cs
KancolleSniffer/Sniffer.cs

index 0ffcabe..da638d4 100644 (file)
@@ -135,10 +135,12 @@ namespace KancolleSniffer
                     ships.Add(ship);\r
                     ships.AddRange(equips);\r
                 }\r
+                var daihatsu = sniffer.GetDaihatsuBonus(f);\r
                 list.Add(new Record\r
                 {\r
                     Fleet = fn[f] + (levelTotal == 0 ? "" : " 合計Lv" + levelTotal) +\r
-                            (drumTotal == 0 ? "" : " ドラム缶" + drumTotal + "(" + drumShips + "隻)")\r
+                            (drumTotal == 0 ? "" : " 缶" + drumTotal + "(" + drumShips + "隻)") +\r
+                            (daihatsu > 0 ? $" 発{daihatsu * 100:f1}%" : "")\r
                 });\r
                 list.AddRange(ships);\r
             }\r
index 24ce670..0fc81e3 100644 (file)
@@ -378,7 +378,6 @@ namespace KancolleSniffer
                 where s.NowHp < s.MaxHp && !dockInfo.InNDock(s.Id)\r
                 select s).OrderByDescending(s => s.RepairTime).ToArray();\r
 \r
-\r
         public double GetLineOfSights(int fleet, int factor)\r
         {\r
             var result = 0.0;\r
@@ -398,6 +397,59 @@ namespace KancolleSniffer
             return result > 0 ? result - Ceiling(_hqLevel * 0.4) + emptyBonus * 2 : 0.0;\r
         }\r
 \r
+        public double GetDaihatsuBonus(int fleet)\r
+        {\r
+            var tokudaiBonus = new[,]\r
+            {\r
+                {0.00, 0.00, 0.00, 0.00, 0.00},\r
+                {0.02, 0.02, 0.02, 0.02, 0.02},\r
+                {0.04, 0.04, 0.04, 0.04, 0.04},\r
+                {0.05, 0.05, 0.052, 0.054, 0.054},\r
+                {0.054, 0.056, 0.058, 0.059, 0.06}\r
+            };\r
+            var daihatsu = 0;\r
+            var tokudai = 0;\r
+            var bonus = 0.0;\r
+            var level = 0;\r
+            var sum = 0;\r
+            foreach (var ship in GetShipStatuses(fleet))\r
+            {\r
+                if (ship.Name == "鬼怒改二")\r
+                    bonus += 0.05;\r
+                foreach (var item in ship.Slot)\r
+                {\r
+                    switch (item.Spec.Name)\r
+                    {\r
+                        case "大発動艇":\r
+                            level += item.Level;\r
+                            sum++;\r
+                            daihatsu++;\r
+                            bonus += 0.05;\r
+                            break;\r
+                        case "特大発動艇":\r
+                            level += item.Level;\r
+                            sum++;\r
+                            tokudai++;\r
+                            bonus += 0.05;\r
+                            break;\r
+                        case "大発動艇(八九式中戦車&陸戦隊)":\r
+                            level += item.Level;\r
+                            sum++;\r
+                            bonus += 0.02;\r
+                            break;\r
+                        case "特二式内火艇":\r
+                            level += item.Level;\r
+                            sum++;\r
+                            bonus += 0.01;\r
+                            break;\r
+                    }\r
+                }\r
+            }\r
+            var levelAverage = sum == 0 ? 0.0 : (double)level / sum;\r
+            bonus = Min(bonus, 0.2);\r
+            return bonus + 0.01 * bonus * levelAverage + tokudaiBonus[Min(tokudai, 4), Min(daihatsu, 4)];\r
+        }\r
+\r
         public string[] BadlyDamagedShips { get; private set; } = new string[0];\r
 \r
         public void SetBadlyDamagedShips()\r
index 4c2914b..005f81b 100644 (file)
@@ -523,6 +523,8 @@ namespace KancolleSniffer
 \r
         public string[] BadlyDamagedShips => _shipInfo.BadlyDamagedShips;\r
 \r
+        public double GetDaihatsuBonus(int fleet) => _shipInfo.GetDaihatsuBonus(fleet);\r
+\r
         public ItemStatus[] ItemList\r
         {\r
             get\r