_battleInfo.InspectBattleResult(JsonParser.Parse(logs[6]));\r
PAssert.That(() => _shipInfo.GetShipStatuses(0)[3].NowHp == 12);\r
}\r
+\r
+ private dynamic Data(string json) => ((dynamic)JsonParser.Parse(json)).api_data;\r
+\r
+ [TestMethod]\r
+ public void NpcFriendFleetAttack()\r
+ {\r
+ var logs = ReadAllLines("friendfleet_001");\r
+ var battle = Data(logs[3]);\r
+ _shipInfo.InjectShips(battle, JsonParser.Parse(logs[0]));\r
+ _battleInfo.InspectBattle(logs[1], logs[2], battle);\r
+ _battleInfo.InspectBattle(logs[4], logs[5], Data(logs[6]));\r
+ _battleInfo.InspectBattleResult(Data(logs[9]));\r
+ PAssert.That(() => !_battleInfo.DisplayedResultRank.IsError);\r
+ }\r
}\r
}
\ No newline at end of file
ByTurn,\r
Support,\r
Aircraft,\r
- AirBase\r
+ AirBase,\r
+ Friend\r
}\r
\r
private class Phase\r
new Phase("support_info", CombatType.Support),\r
new Phase("opening_taisen", CombatType.ByTurn),\r
new Phase("opening_atack", CombatType.AtOnce),\r
+ new Phase("friendly_battle", CombatType.Friend),\r
new Phase("hougeki", CombatType.ByTurn),\r
new Phase("hougeki1", CombatType.ByTurn),\r
new Phase("hougeki2", CombatType.ByTurn),\r
case CombatType.AirBase:\r
CalcAirBaseAttackDamage(json[api]);\r
break;\r
+ case CombatType.Friend:\r
+ CalcFriendAttackDamage(json[api]);\r
+ break;\r
}\r
}\r
\r
}\r
}\r
\r
+ private void CalcFriendAttackDamage(dynamic json)\r
+ {\r
+ CalcDamageByTurn(json.api_hougeki, true);\r
+ }\r
+\r
private void AddAirBattleResult(dynamic json, string phaseName)\r
{\r
var stage1 = json.api_stage1;\r
guard[i].ApplyDamage(damage[i + 6]);\r
}\r
\r
- private void CalcDamageByTurn(dynamic json)\r
+ private void CalcDamageByTurn(dynamic json, bool ignoreFriendDamage = false)\r
{\r
if (!(json.api_df_list() && json.api_df_list != null &&\r
json.api_damage() && json.api_damage != null &&\r
var hit = new {t = targets[i][0], d = damages[i].Sum(d => d >= 0 ? d : 0)};\r
if (hit.t == -1)\r
continue;\r
+ if (ignoreFriendDamage && eflags[i] == 1)\r
+ continue;\r
records[eflags[i]][hit.t].ApplyDamage(hit.d);\r
}\r
}\r