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));
                }
            }
        }