Hello, I made a script that removes health from the stone and finds the damage of your pickaxe. I made a stone respawn, and when stone respawns, the damage goes through two or more times and I don’t know what to do.

ToolScript1 =

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local collect = game:GetService("CollectionService")
local Players = game:GetService("Players")

local Tool = script.Parent
local Remotes = ReplicatedStorage:FindFirstChild("Remotes")

local player = Players.LocalPlayer
local character = player.Character
local humanoid = character:FindFirstChild("Humanoid")
local PickaxeSwingAnim = Instance.new("Animation")
PickaxeSwingAnim.AnimationId = "rbxassetid://11458130668"
local animationTrack1 = humanoid:LoadAnimation(PickaxeSwingAnim)

local ToolConfig = require(ReplicatedStorage:FindFirstChild("Config"):FindFirstChild("ToolConfig"))
local OreConfig = require(ReplicatedStorage:FindFirstChild("Config"):FindFirstChild("OreConfig"))


local inventory = player:FindFirstChild("inventory")
local pickaxeName2 = Tool.Name
print("Found", player.Name, "Pickaxe Equipped Name!")
local pickaxe = player.Character:FindFirstChild(pickaxeName2)
print (pickaxeName2)
local pickaxeDmg = ToolConfig[pickaxeName2].Damage
local Ore = player.leaderstats.Ore

Tool.Activated:Connect(function(player: Player)
	if Tool.Enabled == true then
		local punch = false
		for tool, toolTable in pairs(ToolConfig) do
			if tool == pickaxeName2 then
				local Lezvie = script.Parent.Handle.Lezvie
				Remotes.ToolActivated:FireServer()
				animationTrack1:Play()
				Tool.Enabled = false
				humanoid.WalkSpeed = 0
				wait(0.75)
				Tool.Enabled = true
				humanoid.WalkSpeed = 16
				Lezvie.Touched:Connect(function(hit)
					if collect:HasTag(hit, "RockHitbox") then
						if punch == false then
								Remotes.OreDamaged:FireServer()
						end
						punch = true
					end
				end)

				punch = false
			end
		end
	end
end)




Remotes.OreDestroyed.OnClientEvent:Connect(function()
	Remotes.OreDestroyed:FireServer()
end)
Remotes.OreRespawn.OnClientEvent:Connect(function()
	Remotes.OreRespawn:FireServer()
end)

Rock script:

local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local ReplicatedStorage = game:GetService("ReplicatedStorage")

local Remotes = ReplicatedStorage:FindFirstChild("Remotes")
local ToolConfig = require(ReplicatedStorage:FindFirstChild("Config"):FindFirstChild("ToolConfig"))
local OreConfig = require(ReplicatedStorage:FindFirstChild("Config"):FindFirstChild("OreConfig"))
local OreName = script.Parent.Name
local Ore = script.Parent
print(OreName)

local miningSound = Instance.new("Sound", Ore)
miningSound.SoundId = "rbxassetid://5772362759"
miningSound.Name = "MiningSound"

local OreDestroyed = false




Players.PlayerAdded:Connect(function()
	if not OreName.Health then
		local HP = Instance.new("IntValue", script.Parent)
		HP.Name = "Health"
		HP.Value = OreConfig[OreName].Health
	end
end)





Remotes.OreDamaged.OnServerEvent:Connect(function(player: Player)
	local OreL = player.leaderstats.Ore
	local pickaxeName = player.inventory.EquippedTool.Value
	local pickaxeDamage = ToolConfig[pickaxeName].Damage
	print(pickaxeDamage)
	local Tool = player.Character:FindFirstChild(pickaxeName)
	if OreDestroyed == false then
		local HP = script.Parent.Health
		print("02")
		HP.Value -= pickaxeDamage
		OreL.Value += pickaxeDamage
		print("02.1")
		miningSound:Play()
		print(HP.Value, "Rock HP.")
		if HP.Value == 0 then
			Remotes.OreDestroyed:FireClient(player)
		end
	end
end)




Remotes.OreDestroyed.OnServerEvent:Connect(function(player: Player)
	OreDestroyed = true
	Ore.Transparency = 1
	Ore.CanCollide = false
	Ore.CanTouch = false
	Ore.Hitbox.CanCollide = false
	Ore.Hitbox.CanTouch = false
	Remotes.OreRespawn:FireClient(player)
end)



Remotes.OreRespawn.OnServerEvent:Connect(function(player: player)
	local RespawnTime = 1
	wait(RespawnTime)
	OreDestroyed = false
	Ore.Transparency = 0
	Ore.CanCollide = true	
	Ore.CanTouch = true
	Ore.Hitbox.CanCollide = true
	Ore.Hitbox.CanTouch = true
	print("01")
	local Health = script.Parent.Health
	Health.Value = OreConfig[OreName].Health
	print("Rock health after RESPAWN:", Health.Value)
end)

Output:

  22:36:19.255  0 Rock HP.  -  Server - OreScript:46
  22:36:19.871  OsipStar4ik Used Pickaxe  -  Server - toolManger:13
  22:36:20.338  01  -  Server - OreScript:77
  22:36:20.338  Rock health after RESPAWN: 10  -  Server - OreScript:80
  22:36:22.687  OsipStar4ik Used Pickaxe  -  Server - toolManger:13
  22:36:22.954  1  -  Server - OreScript:37
  22:36:22.955  02  -  Server - OreScript:41
  22:36:22.955  02.1  -  Server - OreScript:44
  22:36:22.955  9 Rock HP.  -  Server - OreScript:46
  22:36:22.955  1  -  Server - OreScript:37
  22:36:22.955  02  -  Server - OreScript:41
  22:36:22.955  02.1  -  Server - OreScript:44
  22:36:22.955  8 Rock HP.  -  Server - OreScript:46