public class ShipStatus\r
{\r
public int Id { get; set; }\r
- public int Fleet { get; set; } // ShipListだけで使う\r
+ public int Fleet { get; set; }\r
public ShipSpec Spec { get; set; }\r
\r
public string Name => Spec.Name;\r
\r
public Damage DamageLevel => CalcDamage(NowHp, MaxHp);\r
\r
+ public int CombinedFleetType { get; set; }\r
+\r
public ShipStatus()\r
{\r
Id = -1;\r
return 0;\r
var levelBonus = Slot.Sum(item => item.FirePowerLevelBonus);\r
if (!Spec.IsAircraftCarrier)\r
- return Firepower + levelBonus + 5;\r
+ return Firepower + levelBonus + CombinedFleetFirepowerBonus + 5;\r
var specs = (from item in Slot where item.Spec.IsAircraft select item.Spec).ToArray();\r
var torpedo = specs.Sum(s => s.Torpedo);\r
var bomber = specs.Sum(s => s.Bomber);\r
if (torpedo == 0 && bomber == 0)\r
return 0;\r
- return (int)((Firepower + torpedo + levelBonus + (int)(bomber * 1.3)) * 1.5) + 55;\r
+ return (int)((Firepower + torpedo + levelBonus + (int)(bomber * 1.3) + CombinedFleetFirepowerBonus) * 1.5) + 55;\r
+ }\r
+ }\r
+\r
+ private int CombinedFleetFirepowerBonus\r
+ {\r
+ get\r
+ {\r
+ switch (CombinedFleetType)\r
+ {\r
+ case 0:\r
+ return 0;\r
+ case 1: // 機動\r
+ return Fleet == 0 ? 2 : 10;\r
+ case 2: // 水上\r
+ return Fleet == 0 ? 10 : -5;\r
+ case 3: // 輸送\r
+ return Fleet == 0 ? -5 : 10;\r
+ default:\r
+ return 0;\r
+ }\r
}\r
}\r
\r
{\r
if (Spec.IsAircraftCarrier || Torpedo == 0)\r
return 0;\r
- return Torpedo + Slot.Sum(item => item.TorpedoLevelBonus) + 5;\r
+ return Torpedo + Slot.Sum(item => item.TorpedoLevelBonus) + CombinedFleetTorpedoPenalty + 5;\r
}\r
}\r
\r
+ private int CombinedFleetTorpedoPenalty => CombinedFleetType > 0 && Fleet == 1 ? -5 : 0;\r
+\r
public double RealAntiSubmarine\r
{\r
get\r
s.Slot = s.Slot.Select(item => _itemInfo.GetStatus(item.Id)).ToArray();\r
s.SlotEx = _itemInfo.GetStatus(s.SlotEx.Id);\r
s.Escaped = _escapedShips.Contains(id);\r
+ int idx;\r
+ s.Fleet = FindFleet(s.Id, out idx);\r
+ s.CombinedFleetType = s.Fleet < 2 ? _combinedFleetType : 0;\r
return s;\r
}\r
\r
\r
public int CombinedFleetType => _combinedFleetType;\r
\r
- public ShipStatus[] ShipList\r
- => _shipInfo.Values.Where(s => s.Level != 0).Select(s =>\r
- {\r
- int oi;\r
- var f = FindFleet(s.Id, out oi);\r
- s.Fleet = f;\r
- s.Escaped = _escapedShips.Contains(s.Id);\r
- return s;\r
- }).ToArray();\r
+ public ShipStatus[] ShipList => _shipInfo.Keys.Where(id => id != -1).Select(GetStatus).ToArray();\r
\r
public ChargeStatus[] ChargeStatuses\r
=> (from deck in _decks\r