I'd love to know a method of doing this and getting the character to actually make my module work

Currently, I decided to try making a morph script, and along with the morph I want it to change my moves names for my character that I am playing. The only issue with this currently is that, I am doing this on a server script and using the touched event to activate all of this, so I am unsure if

  1. I should do the touched event on the local, I should do the morph on the local, and the actual module alternating changing your characters move names on the server?

  2. Or if there was a better method of doing the module.

I can’t really use PlayerAdded on the server since this isn’t a event in which you could just do something such as that, it’s something you interact with after you spawn. Along with that doing LocalPlayer, then doing Character doesn’t work (of course, I do know why, it’s a server script)

Currently, this is the server script and there is no local script that actually sends anything.

-- \\ GetService Variables // --

local RS = game:GetService("ReplicatedStorage")

local Event = RS.CharChosen.CharacterSelected

local CSM = require(RS.Modules.CharacterModule)

-- \\ Functions // --

script.Parent.Touched:connect(function(hit)
	if hit and hit.Parent and hit.Parent:FindFirstChild("Humanoid") then
		local Hum = hit.Parent:FindFirstChild("Humanoid")
		
		local d = hit.Parent:GetChildren() 
		for i=1, #d do 
			if (d[i].ClassName == "Decal") then 
				d[i]:Remove() 
			end
		end
		
		hit.Parent:SetAttribute("CharaChosen", "Fire")
		
		Hum:ApplyDescription(script.Parent.HumanoidDescription)
		
		CSM.CharacterSetter(hit, hit.Parent:GetAttribute("CharaChosen"))
	end
end)