{\r
var fc = _guard.Length > 0;\r
var ec = _enemyGuardHp.Length > 0;\r
+ var both = fc && ec;\r
if (json.api_air_base_attack())\r
CalcAirBaseAttackDamage(json.api_air_base_attack);\r
if (json.api_kouku.api_stage3 != null)\r
CalcSupportDamage(json.api_support_info);\r
if (json.api_opening_taisen() && json.api_opening_taisen != null)\r
{\r
- var friend = fc ? _guard : _friend; // 先制対潜攻撃の対象は護衛(たぶん)\r
- CalcHougekiDamage(json.api_opening_taisen, friend, _enemyHp);\r
+ CalcHougekiDamage(json.api_opening_taisen,\r
+ fc ? _guard : _friend, // 先制対潜攻撃の対象は護衛(たぶん)\r
+ _enemyHp);\r
}\r
if (json.api_opening_atack != null)\r
{\r
- var friend = fc ? _guard : _friend; // 雷撃の対象は護衛\r
- CalcSimpleDamage(json.api_opening_atack, friend, _enemyHp, _enemyGuardHp);\r
+ if (both)\r
+ {\r
+ CalcSimpleDamage(json.api_opening_atack, _friend, _guard, _enemyHp, _enemyGuardHp);\r
+ }\r
+ else\r
+ {\r
+ CalcSimpleDamage(json.api_opening_atack,\r
+ fc ? _guard : _friend, // 雷撃の対象は護衛\r
+ _enemyHp, _enemyGuardHp);\r
+ }\r
}\r
if (json.api_hougeki1() && json.api_hougeki1 != null)\r
{\r
- CalcHougekiDamage(json.api_hougeki1,\r
- fc && !surfaceFleet ? _guard : _friend, // 空母機動部隊は一巡目が護衛\r
- ec ? _enemyGuardHp : _enemyHp); // 敵連合艦隊は一巡目が護衛\r
+ if (json.api_hougeki1.api_at_eflag())\r
+ {\r
+ CalcCombinedHougekiDamage(json.api_hougeki1, _friend, _guard, _enemyHp, _enemyGuardHp);\r
+ }\r
+ else\r
+ {\r
+ CalcHougekiDamage(json.api_hougeki1,\r
+ fc && !surfaceFleet ? _guard : _friend, // 空母機動部隊は一巡目が護衛\r
+ ec ? _enemyGuardHp : _enemyHp); // 敵連合艦隊は一巡目が護衛\r
+ }\r
}\r
if (json.api_hougeki2() && json.api_hougeki2 != null)\r
{\r
}\r
else\r
{\r
- var friend = fc && surfaceFleet ? _guard : _friend; // 水上打撃部隊は三順目が護衛\r
- CalcHougekiDamage(json.api_hougeki3, friend, _enemyHp);\r
+ CalcHougekiDamage(json.api_hougeki3,\r
+ fc && surfaceFleet ? _guard : _friend, // 水上打撃部隊は三順目が護衛\r
+ _enemyHp);\r
}\r
}\r
if (json.api_raigeki() && json.api_raigeki != null)\r
{\r
- var friend = fc ? _guard : _friend;\r
- CalcSimpleDamage(json.api_raigeki, friend, _enemyHp, _enemyGuardHp);\r
+ if (both)\r
+ {\r
+ CalcSimpleDamage(json.api_raigeki, _friend, _guard, _enemyHp, _enemyGuardHp);\r
+ }\r
+ else\r
+ {\r
+ CalcSimpleDamage(json.api_raigeki,\r
+ fc ? _guard : _friend, // 雷撃の対象は護衛\r
+ _enemyHp, _enemyGuardHp);\r
+ }\r
}\r
}\r
\r
private void CalcSupportDamage(dynamic json)\r
{\r
if (json.api_support_hourai != null)\r
- CalcSimpleDamage(json.api_support_hourai.api_damage, _enemyHp);\r
+ {\r
+ CalcSimpleDamage(json.api_support_hourai.api_damage, _enemyHp, _enemyGuardHp);\r
+ }\r
else if (json.api_support_airatack != null)\r
{\r
- var stage3 = json.api_support_airatack.api_stage3;\r
- if (stage3 != null)\r
- CalcSimpleDamage(stage3.api_edam, _enemyHp);\r
+ var airattack = json.api_support_airatack;\r
+ if (airattack.api_stage3 != null)\r
+ CalcSimpleDamage(airattack.api_stage3.api_edam, _enemyHp);\r
+ if (airattack.api_stage3_combined() && airattack.api_stage3_combined != null)\r
+ CalcSimpleDamage(airattack.api_stage3_combined.api_edam, _enemyGuardHp);\r
}\r
}\r
\r
private void CalcSimpleDamage(dynamic json, Record[] friend, int[] enemy, int[] enemyGuard)\r
{\r
CalcSimpleDamage(json.api_fdam, friend);\r
- var damage = (int[])json.api_edam;\r
- for (var i = 0; i < enemy.Length; i++)\r
- enemy[i] -= damage[i + 1];\r
- for (var i = 0; i < enemyGuard.Length; i++)\r
- enemyGuard[i] -= damage[i + 6 + 1];\r
+ CalcSimpleDamage(json.api_edam, enemy, enemyGuard);\r
+ }\r
+\r
+ private void CalcSimpleDamage(dynamic json, Record[] friend, Record[] guard, int[] enemy, int[] enemyGuard)\r
+ {\r
+ CalcSimpleDamage(json.api_fdam, friend, guard);\r
+ CalcSimpleDamage(json.api_edam, enemy, enemyGuard);\r
}\r
\r
- private void CalcSimpleDamage(dynamic rawDamage, Record[] result)\r
+ private void CalcSimpleDamage(dynamic rawDamage, Record[] friend, Record[] guard)\r
{\r
var damage = (int[])rawDamage;\r
- for (var i = 0; i < result.Length; i++)\r
- result[i].ApplyDamage(damage[i + 1]);\r
+ for (var i = 0; i < friend.Length; i++)\r
+ friend[i].ApplyDamage(damage[i + 1]);\r
+ for (var i = 0; i < guard.Length; i++)\r
+ friend[i].ApplyDamage(damage[i + 6 + 1]);\r
+ }\r
+\r
+ private void CalcSimpleDamage(dynamic rawDamage, Record[] friend)\r
+ {\r
+ var damage = (int[])rawDamage;\r
+ for (var i = 0; i < friend.Length; i++)\r
+ friend[i].ApplyDamage(damage[i + 1]);\r
+ }\r
+\r
+ private void CalcSimpleDamage(dynamic rawDamage, int[] enemy, int[] enemyGuard)\r
+ {\r
+ var damage = (int[])rawDamage;\r
+ for (var i = 0; i < enemy.Length; i++)\r
+ enemy[i] -= damage[i + 1];\r
+ for (var i = 0; i < enemyGuard.Length; i++)\r
+ enemyGuard[i] -= damage[i + 6 + 1];\r
}\r
\r
private void CalcSimpleDamage(dynamic rawDamage, int[] result)\r
if (hit.t <= 6)\r
friend[hit.t - 1].ApplyDamage(hit.d);\r
else\r
- guard[hit.t - 1].ApplyDamage(hit.d);\r
+ guard[(hit.t - 1) % 6].ApplyDamage(hit.d);\r
}\r
else\r
{\r