private async void PerformHit(Hit hit) { if (hit.IsMiss) { await _character.SendPacketAsync(new SystemMessage(SystemMessageId.MissedTarget)); if (_target is L2Player) { await _target.SendPacketAsync(new SystemMessage(SystemMessageId.AvoidedS1Attack) .AddName(_character)); } } else { _target.CharStatus.ReduceHp(hit.Damage, _character); // start autoAttack await _character.SendPacketAsync(new SystemMessage(SystemMessageId.YouDidS1Dmg).AddNumber(hit.Damage)); if (hit.IsCritical) { await _character.SendPacketAsync(new SystemMessage(SystemMessageId.CriticalHit)); } if (_target is L2Player) { await _target.SendPacketAsync(new SystemMessage(SystemMessageId.C1HasReceivedS3DamageFromC2) .AddName(_target) .AddName(_character) .AddNumber(hit.Damage)); } } }