.Equipped listener on a tool not working

My friend @joshcraft900 and I as well as some other people are working on a game and him and I have come across a confusing bug. The tool is supposed to set a joint’s Part1 to the character’s left arm (R6), so making the tool spin in it’s animations can be possible.
However, the weld and/or the equipped listener itself isn’t functioning. I tried putting a print statement in the listener but there were no prints. Another problem is with the tool simply disappearing after being equipped for a few seconds.
I suspect it could be an error yielding before the listener is declared, but there have been no errors or warnings from the output stemming from the script, nor are there any loops or functions that will yield infinitely, such as a while loop. This is very confusing.

I’m not looking for a total rescript but just a simple answer maybe pointing out something I did wrong or forgot to do.

Hierarchy:
The script named “Script” with the Equipped remote as a child to it is the script that is having problem
Screenshot 2021-05-10 191758

Screenshot 2021-05-10 191947

Script
local player = nil
local addedon = false
local blade = script.Parent['Bostaff'].Hitbox
local idleanim = nil
local walkanim = nil
local jumpanim = nil
local fallanim = nil
local attack1anim = nil
local attack2anim = nil
local attack3anim = nil
local airattack1anim = nil
local airattack2anim = nil
local waterattack1anim = nil
local waterattack2anim = nil
local waterattack3anim = nil
local waterairattack1anim = nil
local infuse = nil
local equipped = false
local state = "Grounded"
local trail = blade.Trail
trail.Enabled = false
local combo = 0
local thing = Instance.new("BodyVelocity")
local stunned = nil
local CANHIT = false
local trigger = false
local jumptrigger = false
local running = false
local canattack = true
local damage = 17
local cancombo = false
local aircombo = 0
local Debris = game:GetService("Debris")
local TweenService = game:GetService("TweenService")
blade.Touched:Connect(function(hit)
	if CANHIT then
		if hit.Parent:FindFirstChild("Humanoid") and hit.Parent ~= player.Character then
			CANHIT = false
			hit.Parent.Stunned.Value = 2
			hit.Parent.Humanoid:TakeDamage(damage)
			if hit.Parent.Humanoid.Health <= 0 then
				game.ReplicatedStorage.EnemyKilt:Fire(player,hit.Parent)
			end
			if combo == 3 then
				local vel = Instance.new("BodyVelocity")
				vel.Velocity = player.Character.HumanoidRootPart.CFrame.LookVector * 10
				vel.Parent = hit.Parent.HumanoidRootPart
				Debris:AddItem(vel, 1)
			end
		end
	end
end)


script.Parent.Equipped:Connect(function()
	print("staff equipped")
	wait()
	player = game.Players:WaitForChild(script.Parent.Parent.Name)
	walkanim = player.Character.Humanoid:LoadAnimation(script.Parent.Anims.Walk)
	idleanim = player.Character.Humanoid:LoadAnimation(script.Parent.Anims.Idle)
	fallanim = player.Character.Humanoid:LoadAnimation(script.Parent.Anims.Fall)
	jumpanim = player.Character.Humanoid:LoadAnimation(script.Parent.Anims.Jump)
	attack1anim = player.Character.Humanoid:LoadAnimation(script.Parent.Anims.Attack1)
	attack2anim = player.Character.Humanoid:LoadAnimation(script.Parent.Anims.Attack2)


	blade.Parent.Handel.Joint.Part1 = player.Character["Left Arm"]
	blade.Parent.Parent = player.Character
	print("thing worked and equipped")
	print(script.Parent.Parent.Parent)
	idleanim:Play()
	stunned = player.Character.Stunned
	if addedon == false then
		
		wait()
		
		addedon = true
		player.Character.Humanoid.StateChanged:Connect(function(old,new)
			if new == Enum.HumanoidStateType.Jumping or new == Enum.HumanoidStateType.FallingDown  or new == Enum.HumanoidStateType.Freefall then
				state = "Airborn"
			
				thing.Parent = nil
				else

				state = "Grounded"
			end
		end)
	end
	equipped = true
end)

Note: The errors in the below output are from plugins I am using and assets not loading correctly.

Try renaming “Handel” to “Handle”.

And also change the script in the tool to be a localscript.

Oh. I’ve forgotten about that. Thanks