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
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
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