I have a mouse click code that I am using to detect certain actions. It uses a debounce variable to avoid being activate multiple times while the code is still executing.

One of the action it triggers is a function that initiates a timer, the timer is just a while loop. The function is in a different script file.

I release the debounce before calling the timer function because if I don't the debounce will stay off until the player clicks on something else. Which means if they what to open a door (for example) after activating the timer they have to click it twice.

Although I have a work around, I was wondering why it wasn't triggering the debounce off.

Code:

Mouse.Button1Down:connect(function() --when mouse is click
    if debounce == true then --debouncer
	    if Mouse.Target ~= nil then --if its not a nil value
		    debounce = false --turn off clicks
		    if Mouse.Target:FindFirstAncestor("frontdoor") then --front door was touched
			    replicatedStorage.DoorState(Player, Mouse.Target) --change door to opposite state
			    debounce = true --if not timer loop doesn't trigger debounce off
			    print("debounce off")
			    replicatedStorage.TimerControl(Player, true) --start timer
		    elseif Mouse.Target:FindFirstAncestor("lockedDoor") then --locked door was touched
			    replicatedStorage.LockedDoorState(Player, Mouse.Target) --change locked door state if player has key
		    end
	    end
    end
    debounce = true
    print("debounce off")
end)`