public virtual void Damage()
    {
        if (!base.enabled)
        {
            return;
        }
        if (!vp_Utility.IsActive(base.gameObject))
        {
            return;
        }
        if (this.id == 255)
        {
            return;
        }
        Vector3 origin = vp_HitscanBullet.lastray.origin;
        Vector3 point  = vp_HitscanBullet.lasthit.point;
        int     num    = 0;

        if (BasePlayer.weapon[0] != null)
        {
            num = BasePlayer.weapon[0].clip;
        }
        else if (BasePlayer.weapon[1] != null)
        {
            num = BasePlayer.weapon[1].clip;
        }
        Client.cs.send_takedamage(this.id, this.hitzone, (byte)num, origin.x, origin.y, origin.z, point.x, point.y, point.z);
        if (this.hitzone == 1)
        {
            this.NoDelayHitHS();
        }
        else
        {
            this.NoDelayHit();
        }
        Crosshair.SetHit();
        if (this.hitzone == 1)
        {
            PlayerControll.SetBlood(vp_HitscanBullet.lasthit.point.x, vp_HitscanBullet.lasthit.point.y, vp_HitscanBullet.lasthit.point.z, 1f);
        }
        else
        {
            PlayerControll.SetBlood(vp_HitscanBullet.lasthit.point.x, vp_HitscanBullet.lasthit.point.y, vp_HitscanBullet.lasthit.point.z, 0.5f);
        }
        PlayerControll.Player[(int)this.id].hitReaction.Hit(vp_HitscanBullet.lasthit.collider, vp_HitscanBullet.lastray.direction * 1f, vp_HitscanBullet.lasthit.point);
    }