{\r
var damage = (int[])rawDamage;\r
for (var i = 0; i < friend.Length; i++)\r
+ {\r
friend[i].ApplyDamage(damage[i]);\r
+ friend[i].CheckDamageControl();\r
+ }\r
if (guard == null)\r
return;\r
for (var i = 0; i < guard.Length; i++)\r
continue;\r
records[eFlags[turn]][target].ApplyDamage(damage);\r
}\r
+ foreach (var ship in records[1])\r
+ ship?.CheckDamageControl();\r
}\r
}\r
\r
\r
public void ApplyDamage(int damage)\r
{\r
- if (_status.NowHp > damage)\r
- {\r
- _status.NowHp -= damage;\r
- return;\r
- }\r
- _status.NowHp = 0;\r
- if (_practice)\r
+ _status.NowHp = Max(0, _status.NowHp - damage);\r
+ }\r
+\r
+ public void CheckDamageControl()\r
+ {\r
+ if (_status.NowHp > 0 || _practice)\r
return;\r
foreach (var item in new[] {_status.SlotEx}.Concat(_status.Slot))\r
{\r