Issue with morph changing GUI and calls to client

Hi all! I’ve got a bug that I’m very confused by here so here goes:

Entering into the GUI and changing outfits etc works fine (for the most part - some buggy stuff going on as you can see in the clip shown but that’s just because I’ve been messing around with storing data so its not all working properly) when you first go into the actual GUI

but then it takes a second button press to enter into the GUI on the second time if you press “Save” rather than “Exit”

Disabling the saving in the save button fixes it if you click on another part of the GUI then save, but remains an issue if you don’t click on another part of the GUI - and also does not work if the saving still occurs

Attempting to put in any form of wait does not fix it, the exit button works as intended no matter what

It works as intended besides the issue of requiring 2 presses on the prompt - the prompt shows up normally when you go to it regardless of what you’ve done

I’ve double checked to try and find the root of the issue and it occurs between sending a call to the client and the client actually receiving the event - the first time the client does not receive the event but the second time it does

Anyone got any explanation or fixes for this?

Below is some samples of the code:

-- Proximity Prompt code
script.Parent.ProximityPrompt.Triggered:Connect(function(player)
	print("ok")
	player.Character.Humanoid:UnequipTools()
	local Gui = game.ReplicatedStorage.Guis.MorphChanger:Clone()
	Gui.Parent = player.PlayerGui
	repeat wait() until player.PlayerGui:FindFirstChild("MorphChanger")
	print("Server call...")
	game.ReplicatedStorage.Events.ChangeArmour:FireClient(player)
	
end)

-- Exit button code
script.Parent.Frame.ExitButton.Activated:Connect(function()
			active = false
			StarterGui:SetCore("TopbarEnabled", true)
			StarterGui:SetCoreGuiEnabled("Backpack", true)
			StarterGui:SetCore("ResetButtonCallback",true)
			script.Parent:Destroy()
			Dummy:Destroy()
			
			Camera.CameraType = "Custom"
			Camera.CFrame = player.Character.Head.CFrame
		end)
		
-- Save button code
		script.Parent.Frame.SaveButton.Activated:Connect(function()
			active = false
			local playerLoaded = true
			if(newHelmetName == nil) then
				newHelmetName = "Remove"
			end
			if newAccessoryName == nil then
				newAccessoryName = "Remove"
			end
			if newVestName == nil then
				newVestName = "Remove"
			end
			if newClothesName == nil then
				newClothesName = "Remove"
			end
			StarterGui:SetCore("TopbarEnabled", true)
			StarterGui:SetCoreGuiEnabled("Backpack", true)
			StarterGui:SetCore("ResetButtonCallback",true)
			script.Parent.Frame.SaveButton.Active = false
			Camera.CameraType = "Custom"
			Camera.CFrame = player.Character.Head.CFrame
			game.ReplicatedStorage.Events.SaveArmour:FireServer(newPlayerHelmet, newPlayerVest, newPlayerClothes, newPlayerBackpack, newPlayerAccessory, newHelmetName, newVestName, newClothesName, newBackpackName, newAccessoryName, playerLoaded)
			script.Parent:Destroy()
			Dummy:Destroy()
		end)

Make GUI have ResetOnSpawn set to false

Didn’t fix the issue, unfortunately