[PunRPC]
    private void Shoot()
	{
        if (currentWeapon.clipSize == 0 || isReloading)
            return;

		Vector3 direction = muzzle.transform.forward;

		currentWeapon.clipSize--;

		if (Physics.Raycast(muzzle.transform.position, direction, out RaycastHit hit, currentWeapon.range))
		{
			//GameObject clone = Instantiate(hitParticle, hit.point, Quaternion.LookRotation(hit.normal));
			//Destroy(clone, 2);

            GameObject objectHit = hit.transform.gameObject;
            var team = objectHit.GetComponent<Team>();

            if (team)
            {
                if (playerRoot.GetComponent<Team>().playerTeamIndex != objectHit.GetComponent<Team>().playerTeamIndex)
                {
                    if (objectHit.CompareTag("Entity"))
                    {
                        objectHit.GetComponent<PlayerStats>().Damage
                            (
                            currentWeapon.maxDamage - currentWeapon.maxDamage / Vector3.Distance(transform.position, objectHit.transform.position)
                            );
                    }
                    else if (objectHit.CompareTag("Destructable"))
                    {
                        objectHit.GetComponent<GeneratorStats>().Damage(currentWeapon.maxDamage);
                    }
                }
            }
		}
	}