Raycast Shoot Error

My game is a simple FPS. What I’m trying to do is have it so that each time a raycast shot by the player hits an enemy, their health decreases by a defined amount. but when i shoot the enemy once, it dies i cant fix

This is the weapon script

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using EZCameraShake;
using TMPro;

public class sWeapon : MonoBehaviour
{
//Recoil
[Header(“Recoil”)]
public sRecoil recoil;

//UI
[Header("Text Mesh Pro UI Field")]
public TextMeshProUGUI WeaponAmmoUI;

//Camera Shake
[Header("Camera Shake")]
public CameraShaker CameraShake;

//Audio
[Header("Audio Settings")]
public AudioSource ShootSound;
public AudioSource ReloadSound;

[Header("Particle System Settings")]
//Particle System
public ParticleSystem ShootMuzzleFlash;

//Public Variables
[Header("Weapon Configures")]
public float damage = 10f;
public float range = 200f;
public float FireRate = 15f;

//Ammo 
[Header("Ammo Settings")]
public int maxAmmo = 10;
//Reload
[Header("Reaload Settings")]
public float reloadtime = 1.9f;
private bool isReloading = false;
private int CurrentAmmo;

//Animator
[Header("Animator")]

public Animator animator;

[Header("Camera")]
public Camera fpsCamera;

private float nextTimeTofire = 0f;

void Start()
{
    animator = gameObject.GetComponent<Animator>();
    CurrentAmmo = maxAmmo;
}

private void OnEnable()
{
    isReloading = false;
    animator.SetBool("Reload", false);
}

void Update()
{
    //UI TEXT
    WeaponAmmoUI.SetText(CurrentAmmo + " / " + maxAmmo);

    if (isReloading)
        return;

    if (CurrentAmmo <= 0)
    {
        StartCoroutine(Reload());
        return;
    }

    if (Input.GetButton("Fire1") && Time.time >= nextTimeTofire)
    {

        nextTimeTofire = Time.time + 1f / FireRate;
        Shoot();
    }
}

IEnumerator Reload()
{
    isReloading = true;
    Debug.Log("Reloading..");

    ReloadSound.Play();
    animator.SetBool("Reload", true);

    yield return new WaitForSeconds(reloadtime);

    animator.SetBool("Reload", false);
    yield return new WaitForSeconds(0.5f);

    CurrentAmmo = maxAmmo;
    isReloading = false;
}

void Shoot()
{
    if (isReloading)
        return;

    //Particles sound recoil// 
    ShootSound.Play();
    ShootMuzzleFlash.Play();
    recoil.Fire();

    //Camera Shake

    //Ammo Reducing
    CurrentAmmo--;

    RaycastHit hit;
    if (Physics.Raycast(fpsCamera.transform.position, fpsCamera.transform.forward, out hit, range))

    {
        Vector3 fpsCamera = transform.TransformDirection(Vector3.forward) * 10;
        Debug.DrawRay(transform.position, fpsCamera, Color.red);
        Debug.Log(hit.transform.name);

        sTarget target = hit.transform.GetComponent<sTarget>();
        if (target != null)
        {
            target.TakeDamage(damage);
        }
    }
}

}

This is my enemy script

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class sTarget : MonoBehaviour
{
//Public Variables
public float Health = 200f;

public void TakeDamage (float amount)
{
    Health =- amount;
    if (Health <= 0f)
    {
        Die();
    }

    void Die ()
    {
        Destroy(gameObject);
        Debug.Log("died");
    }

}

}

You are setting Health to -amount, which is automatically below zero for any positive damage value. what you are trying to do is health -= amount; not health =- amount;