PROBLEM My script has a problem where if there is 2 or more players in the game, if one player transforms, the other cannot and gets somewhat "stuck" and cannot transform without resetting, I am confused and do not know how to fix this.

LOCAL SCRIPT

-- player
local Player = game.Players.LocalPlayer
local Character = Player.Character
repeat wait() until Player or Character ~= nil

-- input
local UIS = game:GetService("UserInputService")

-- variables
local CanChange = true
local InTransformation = false
local RemoteEvents = game.ReplicatedStorage.RemoteEvents

--{{ tranformation }}--
UIS.InputBegan:Connect(function(input, gpe)
	if input.KeyCode ~= Enum.KeyCode.Z then return end;
	if gpe then return end;
	if CanChange == true then
		CanChange = false
		if InTransformation == true then return end;
		if InTransformation == false then
			print("DEBUG MSG: Super Saiyan Transformation")
			
			-- remotevent
			RemoteEvents.Transformations.TransformSSJEvent:FireServer()
			
			InTransformation = true
		end
		print("DEBUG MSG: Script Got to wait")
		wait(5)
		CanChange = true
		print("DEBUG MSG: Script Finished Wait")
	end
end)


--{{ deformation }}--
UIS.InputBegan:Connect(function(input, gpe)
	if input.KeyCode ~= Enum.KeyCode.X then return end;
	if gpe then return end;
	if CanChange == true then
		CanChange = false
		if InTransformation == false then return end;
		if InTransformation == true then
			print("DEBUG MSG: Reverted back to base")
			
			--remoteevent
			RemoteEvents.Transformations.DeformSSJEvent:FireServer()
			
			InTransformation = false
		end
		print("DEBUG MSG: Script got to wait")
		wait(5)
		CanChange = true
		print("DEBUG MSG: Script finished wait")
	end
end)

SCRIPT

--multiplyers
local GreatApeMultiplier = 3
local SSJMultiplier = 5
local SSJ2Multiplier = 10
local SSJ3Multiplier = 25
local SSJGMultiplier = "?"
local SSJBMultiplier = "?"

-- variables
local RemoteEvents = game.ReplicatedStorage.RemoteEvents
local inSSJ = false

--{{ transformation }}--
RemoteEvents.Transformations.TransformSSJEvent.OnServerEvent:Connect(function(Player)
	if inSSJ == false then
		print("DEBUG MSG: Server Got Super Saiyan")
		
		--{{ animations }}--
		
		-- color tween
		local TweenService = game:GetService("TweenService")
		local Hair = Player.Character:WaitForChild("BaseHair")
		local Info = TweenInfo.new(2, Enum.EasingStyle.Quart, Enum.EasingDirection.InOut, 0, false, 0)
		local Goals = {Color = Color3.new(1 , 1, 1)}
		local HairTween = TweenService:Create(Hair, Info, Goals)
		
		-- dust animations
		local DustRingPowerIn = game.ReplicatedStorage.Effects.DustRingPowerIn:Clone()
		DustRingPowerIn.Parent = Player.Character
		DustRingPowerIn.Size = Vector3.new(10, 0.05, 10)
		DustRingPowerIn.CFrame = Player.Character["HumanoidRootPart"].CFrame * CFrame.new(0, -1.5, 0) * CFrame.Angles(0, math.random(-90, 90), 0)
		
		-- play tween
		HairTween:Play()		
		wait(1.5)
		
		-- hair change
		Player.Character:FindFirstChild("BaseHair").Transparency = 1
		Player.Character:FindFirstChild("SSJHair").Transparency = 0
		
		-- explosion
		for i = 0, 6 do
			local Ki = game.ReplicatedStorage.Effects.KiExplosionPart:Clone()
			Ki.Parent = Player.Character
			Ki.Size = Vector3.new(1, 1.525, 1)
			Ki.CFrame = Player.Character["HumanoidRootPart"].CFrame * CFrame.Angles(math.random(-90, 90), math.random(-90, 90), math.random(-90, 90))
		end
		for i = 0, 5 do
			local DustRingPowerOut = game.ReplicatedStorage.Effects.DustRingPowerOut:Clone()
			DustRingPowerOut.Parent = Player.Character
			DustRingPowerOut.Size = Vector3.new(10, 0.05, 10)
			DustRingPowerOut.CFrame = Player.Character["HumanoidRootPart"].CFrame * CFrame.new(0, -1.5, 0) * CFrame.Angles(0, math.random(-90, 90), 0)
			wait(0.08)
		end
		
		-- power boosts
		
		
		inSSJ = true
	end
end)

--{{ deformation }}--
RemoteEvents.Transformations.DeformSSJEvent.OnServerEvent:Connect(function(Player)
	if inSSJ == true then
		print("DEBUG MSG: Server Got Base")
		
		--{{ animations }}--
		
		-- color tween
		local TweenService = game:GetService("TweenService")
		local Hair = Player.Character:WaitForChild("BaseHair")
		local Info = TweenInfo.new(2, Enum.EasingStyle.Quart, Enum.EasingDirection.InOut, 0, false, 0)
		local Goals = {Color = Color3.new(0 , 0, 0)}
		local HairTween = TweenService:Create(Hair, Info, Goals)
		
		-- hair change
		Player.Character:FindFirstChild("BaseHair").Transparency = 0
		Player.Character:FindFirstChild("SSJHair").Transparency = 1
		
		HairTween:Play()
		wait(1.5)
		
		-- remove power boosts
		
		inSSJ = false
	end
end)

FINAL THOUGHTS Please excuse me for the long script.