Как правильно выйти с анонимного делегата
public override async Task<DamageResult> TakeDamage(CharacterEntity target)
{
if (target == null)
return DamageResult.DamageFail;
if (target.IsDead)
return DamageResult.DamageFail;
Formulas.CalculateTakeDamage(CharacterStats, target.CharacterStats);
EventsHandler.ValidDeathTarget(target, async () =>
{
await target.BroadcastPacketAsync(CharacterDeath.ToPacket());
await Task.Delay(1000);
});
// here
StatusUpdate status = new StatusUpdate();
status.AddAttribute(StatusUpdate.CurrentHealth, target.CharacterStats.CurrentHealth);
status.AddAttribute(StatusUpdate.MaxHealth, target.CharacterStats.BaseHealth);
await target.BroadcastPacketAsync(StatusUpdate.ToPacket(status, target), excludeYourself: false);
return DamageResult.DamageNormal;
}
Если EventsHandler.ValidDeathTarget вернет true, выполняется синхронный анонимный делегат. Программа дальше пойдет работать? И как с этого делегата полностью завершить работу метода?