select (int)Math.Floor(spec.AntiAir * Math.Sqrt(slot.max))).DefaultIfEmpty().Sum();\r
}\r
\r
- private void CalcDamage(dynamic json)\r
+ private void CalcDamage(dynamic json, bool surfaceFleet = false)\r
{\r
+ var combined = json.api_nowhps_combined();\r
if (json.api_kouku.api_stage3 != null)\r
CalcSimpleDamage(json.api_kouku.api_stage3, _friendHp, _enemyHp);\r
- if (json.api_kouku2() && json.api_kouku2.api_stage3 != null) // 航空戦2回目\r
- CalcSimpleDamage(json.api_kouku2.api_stage3, _friendHp, _enemyHp);\r
+ if (json.api_kouku.api_stage3_combined() && json.api_kouku.api_stage3_combined != null)\r
+ CalcSimpleDamage(json.api_kouku.api_stage3_combined.api_fdam, _guardHp);\r
+ if (json.api_kouku2()) // 航空戦2回目\r
+ {\r
+ if (json.api_kouku2.api_stage3 != null)\r
+ CalcSimpleDamage(json.api_kouku2.api_stage3, _friendHp, _enemyHp);\r
+ if (json.api_kouku2.api_stage3_combined() && json.api_kouku2.api_stage3_combined != null)\r
+ CalcSimpleDamage(json.api_kouku2.api_stage3_combined.api_fdam, _guardHp);\r
+ }\r
if (!json.api_opening_atack()) // 航空戦のみ\r
return;\r
if (json.api_support_info() && json.api_support_info != null)\r
CalcSupportDamage(json.api_support_info);\r
if (json.api_opening_atack != null)\r
- CalcSimpleDamage(json.api_opening_atack, _friendHp, _enemyHp);\r
+ {\r
+ var friend = combined ? _guardHp : _friendHp; // 雷撃の対象は護衛\r
+ CalcSimpleDamage(json.api_opening_atack, friend, _enemyHp);\r
+ }\r
if (json.api_hougeki1 != null)\r
- CalcHougekiDamage(json.api_hougeki1, _friendHp, _enemyHp);\r
+ {\r
+ var friend = combined && !surfaceFleet ? _guardHp : _friendHp; // 空母機動部隊は一巡目が護衛\r
+ CalcHougekiDamage(json.api_hougeki1, friend, _enemyHp);\r
+ }\r
if (json.api_hougeki2 != null)\r
+ {\r
CalcHougekiDamage(json.api_hougeki2, _friendHp, _enemyHp);\r
- if (json.api_raigeki != null)\r
- CalcSimpleDamage(json.api_raigeki, _friendHp, _enemyHp);\r
+ }\r
+ if (json.api_hougeki3() && json.api_hougeki3 != null)\r
+ {\r
+ var friend = combined && surfaceFleet ? _guardHp : _friendHp; // 水上打撃部隊は三順目が護衛\r
+ CalcHougekiDamage(json.api_hougeki3, friend, _enemyHp);\r
+ }\r
+ if (json.api_raigeki() && json.api_raigeki != null)\r
+ {\r
+ var friend = combined ? _guardHp : _friendHp;\r
+ CalcSimpleDamage(json.api_raigeki, friend, _enemyHp);\r
+ }\r
}\r
\r
private void CalcSupportDamage(dynamic json)\r
ShowResultCombined(false);\r
SetupHp(json);\r
if (IsNightBattle(json))\r
- {\r
CalcHougekiDamage(json.api_hougeki, _guardHp, _enemyHp);\r
- }\r
else\r
- {\r
- if (surfaceFleet)\r
- CalcDamageCombinedFleetSurface(json);\r
- else\r
- CalcDamageCombinedFleetAir(json);\r
- }\r
+ CalcDamage(json, surfaceFleet);\r
ClearOverKill(_friendHp);\r
ClearOverKill(_guardHp);\r
ClearOverKill(_enemyHp);\r
UpdateDamgedShipNames(_shipInfo.GetShipStatuses(0).Concat(_shipInfo.GetShipStatuses(1)));\r
}\r
\r
- private void CalcDamageCombinedFleetAir(dynamic json)\r
- {\r
- var kouku = json.api_kouku;\r
- if (kouku.api_stage3 != null)\r
- CalcSimpleDamage(kouku.api_stage3, _friendHp, _enemyHp);\r
- if (kouku.api_stage3_combined != null)\r
- CalcSimpleDamage(kouku.api_stage3_combined.api_fdam, _guardHp);\r
- if (json.api_kouku2()) // 航空戦2回目\r
- {\r
- kouku = json.api_kouku2;\r
- if (kouku.api_stage3 != null)\r
- CalcSimpleDamage(kouku.api_stage3, _friendHp, _enemyHp);\r
- if (kouku.api_stage3_combined != null)\r
- CalcSimpleDamage(kouku.api_stage3_combined.api_fdam, _guardHp);\r
- }\r
- if (!json.api_opening_atack()) // 航空戦のみ\r
- return;\r
- if (json.api_support_info() && json.api_support_info != null)\r
- CalcSupportDamage(json.api_support_info);\r
- if (json.api_opening_atack != null)\r
- CalcSimpleDamage(json.api_opening_atack.api_fdam, _guardHp);\r
- if (json.api_hougeki1 != null)\r
- CalcHougekiDamage(json.api_hougeki1, _guardHp, _enemyHp);\r
- if (json.api_hougeki2() && json.api_hougeki2 != null)\r
- CalcHougekiDamage(json.api_hougeki2, _friendHp, _enemyHp);\r
- if (json.api_hougeki3() && json.api_hougeki3 != null)\r
- CalcHougekiDamage(json.api_hougeki3, _friendHp, _enemyHp);\r
- if (json.api_raigeki() && json.api_raigeki != null)\r
- CalcSimpleDamage(json.api_raigeki, _guardHp, _enemyHp);\r
- }\r
-\r
- private void CalcDamageCombinedFleetSurface(dynamic json)\r
- {\r
- var kouku = json.api_kouku;\r
- if (kouku.api_stage3 != null)\r
- CalcSimpleDamage(kouku.api_stage3, _friendHp, _enemyHp);\r
- if (kouku.api_stage3_combined != null)\r
- CalcSimpleDamage(kouku.api_stage3_combined.api_fdam, _guardHp);\r
- if (json.api_support_info() && json.api_support_info != null)\r
- CalcSupportDamage(json.api_support_info);\r
- if (json.api_opening_atack != null)\r
- CalcSimpleDamage(json.api_opening_atack, _guardHp, _enemyHp);\r
- if (json.api_hougeki1 != null)\r
- CalcHougekiDamage(json.api_hougeki1, _friendHp, _enemyHp);\r
- if (json.api_hougeki2() && json.api_hougeki2 != null)\r
- CalcHougekiDamage(json.api_hougeki2, _friendHp, _enemyHp);\r
- if (json.api_hougeki3() && json.api_hougeki3 != null)\r
- CalcHougekiDamage(json.api_hougeki3, _guardHp, _enemyHp);\r
- if (json.api_raigeki() && json.api_raigeki != null)\r
- CalcSimpleDamage(json.api_raigeki, _guardHp, _enemyHp);\r
- }\r
-\r
// 以下のコードは航海日誌拡張版の以下のファイルのcalcResultRankを移植したもの\r
// https://github.com/nekopanda/logbook/blob/94ceca4be6d4ce79a8759d1ee747fb9827c08edc/main/logbook/dto/BattleExDto.java\r
//\r