I have a handler inside the player that determines certain values, like if the player is staggered or not. I want to be able to stop the sword from activating by checking the value inside the handler, but everything I've tried doesn't work. Does anybody know how I can make the sword check the value every time I try to attack with it?

Sword Script snippet:

-- On Click
function onActivation()
	if Equipped == true and Attacked == false and Tool.Parent.Humanoid.Health > 0 then	
		
		if Tool.Parent.Handler.ToolEnabled.Value == true then

			Tool:WaitForChild("Attack".. AttackNum).Value = not Tool:WaitForChild("Attack".. AttackNum).Value

			if AttackNum == 5 and AttackDecay > 0 then
				AttackNum = 2
			else
				AttackNum = AttackNum + 1
			end

			HumanoidTakeDamage()
			Attacked = true
			wait(HBDelay)
			AttackS:Play()

			HitBox = true
			Trail.Enabled = true
			wait(AttackTime)
			HitBox = false
			Trail.Enabled = false
			Attacked = false		
			AttackDecay = 1		
		end
	end
end
-----------

-- Equipped
function onEquipped()
	EquipS:Play()
	wait(EquipTime)
	Equipped = true
end
-----------
Tool.Equipped:Connect(onEquipped)
Tool.Activated:Connect(onActivation)

EDIT: The problem was that I was defining the value of each status and then checking the value already defined, and not the value that it was currently.