In order for this to work morph the creature you want to turn into and then place them into the Morphs Folder in the MorphGui . This will auto generate the morph buttons when you start. But when i die i need to click it again to morph, is there anyway i can keep the morph? after death? Maybe looping? i don't know where to start.


local Player = script.Parent.Parent.Parent
local Me = Player.Character or Player.CharacterAdded:wait()
local Morphs = script.Parent.Morphs:GetChildren()

function Morph(Suit)
if Me:findFirstChild("Chest") == nil then
	for i,v in pairs(Me:GetChildren()) do
		if v.ClassName == "Part" then
			v.Transparency = 1
		end
	end
	if Me.Head:findFirstChild("face") ~= nil then
	Me.Head.face:Destroy()
	end
	
	if Me:findFirstChild("Humanoid") ~= nil and Me:findFirstChild("Arm1") == nil and Suit:findFirstChild("Arm1") ~= nil then
	local g = Suit.Arm1:clone()
			g.Parent = Me
			local C = g:GetChildren()
			for i=1, #C do
				if C[i].className == "Part" or C[i].className == "WedgePart" or C[i].className == "CornerWedgePart" or C[i].className == "UnionOperation" then
					local W = Instance.new("Weld")
					W.Part0 = g.Middle
					W.Part1 = C[i]
					local CJ = CFrame.new(g.Middle.Position)
					local C0 = g.Middle.CFrame:inverse()*CJ
					local C1 = C[i].CFrame:inverse()*CJ
					W.C0 = C0
					W.C1 = C1
					W.Parent = g.Middle
				end
					local Y = Instance.new("Weld")
					Y.Part0 = Me["Left Arm"]
					Y.Part1 = g.Middle
					Y.C0 = CFrame.new(0, 0, 0)
					Y.Parent = Y.Part0
			end
	
			local h = g:GetChildren()
			for i = 1, # h do
			if h[i].className == "Part" or h[i].className == "WedgePart" or h[i].className == "CornerWedgePart" or h[i].className == "UnionOperation" then
			h[i].Anchored = false
	        h[i].CanCollide = false
			end
			end
		end
	
		if Me:findFirstChild("Humanoid") ~= nil and Me:findFirstChild("Arm2") == nil and Suit:findFirstChild("Arm2") ~= nil then
			local g = Suit.Arm2:clone()
			g.Parent = Me
			local C = g:GetChildren()
			for i=1, #C do
				if C[i].className == "Part" or C[i].className == "WedgePart" or C[i].className == "CornerWedgePart" or C[i].className == "UnionOperation" then
					local W = Instance.new("Weld")
					W.Part0 = g.Middle
					W.Part1 = C[i]
					local CJ = CFrame.new(g.Middle.Position)
					local C0 = g.Middle.CFrame:inverse()*CJ
					local C1 = C[i].CFrame:inverse()*CJ
					W.C0 = C0
					W.C1 = C1
					W.Parent = g.Middle
				end
					local Y = Instance.new("Weld")
					Y.Part0 = Me["Right Arm"]
					Y.Part1 = g.Middle
					Y.C0 = CFrame.new(0, 0, 0)
					Y.Parent = Y.Part0
			end
	
			local h = g:GetChildren()
			for i = 1, # h do
			if h[i].className == "Part" or h[i].className == "WedgePart" or h[i].className == "CornerWedgePart" or h[i].className == "UnionOperation" then
			h[i].Anchored = false
	        h[i].CanCollide = false
			end
			end		
		end

		if Me:findFirstChild("Humanoid") ~= nil and Me:findFirstChild("Leg1") == nil and Suit:findFirstChild("Leg1") ~= nil then
			local g = Suit.Leg1:clone()
			g.Parent = Me
			local C = g:GetChildren()
			for i=1, #C do
				if C[i].className == "Part" or C[i].className == "WedgePart" or C[i].className == "CornerWedgePart" or C[i].className == "UnionOperation" then
					local W = Instance.new("Weld")
					W.Part0 = g.Middle
					W.Part1 = C[i]
					local CJ = CFrame.new(g.Middle.Position)
					local C0 = g.Middle.CFrame:inverse()*CJ
					local C1 = C[i].CFrame:inverse()*CJ
					W.C0 = C0
					W.C1 = C1
					W.Parent = g.Middle
				end
					local Y = Instance.new("Weld")
					Y.Part0 = Me["Left Leg"]
					Y.Part1 = g.Middle
					Y.C0 = CFrame.new(0, 0, 0)
					Y.Parent = Y.Part0
			end
	
			local h = g:GetChildren()
			for i = 1, # h do
			if h[i].className == "Part" or h[i].className == "WedgePart" or h[i].className == "CornerWedgePart" or h[i].className == "UnionOperation" then
			h[i].Anchored = false
	        h[i].CanCollide = false
			end
			end
		end

		if Me:findFirstChild("Humanoid") ~= nil and Me:findFirstChild("Leg2") == nil and Suit:findFirstChild("Leg2") ~= nil then
			local g = Suit.Leg2:clone()
			g.Parent = Me
			local C = g:GetChildren()
			for i=1, #C do
				if C[i].className == "Part" or C[i].className == "WedgePart" or C[i].className == "CornerWedgePart" or C[i].className == "UnionOperation" then
					local W = Instance.new("Weld")
					W.Part0 = g.Middle
					W.Part1 = C[i]
					local CJ = CFrame.new(g.Middle.Position)
					local C0 = g.Middle.CFrame:inverse()*CJ
					local C1 = C[i].CFrame:inverse()*CJ
					W.C0 = C0
					W.C1 = C1
					W.Parent = g.Middle
				end
					local Y = Instance.new("Weld")
					Y.Part0 = Me["Right Leg"]
					Y.Part1 = g.Middle
					Y.C0 = CFrame.new(0, 0, 0)
					Y.Parent = Y.Part0
			end

			local h = g:GetChildren()
			for i = 1, # h do
			if h[i].className == "Part" or h[i].className == "WedgePart" or h[i].className == "CornerWedgePart" or h[i].className == "UnionOperation" then
			h[i].Anchored = false
	        h[i].CanCollide = false
			end
			end
	end

		if Me:findFirstChild("Humanoid") ~= nil and Me:findFirstChild("Chest") == nil and Suit:findFirstChild("Chest") ~= nil then
			local g = Suit.Chest:clone()
			g.Parent = Me
			local C = g:GetChildren()
	                local R = Me:GetChildren()
			for i=1, #R do
				if R[i].className == "Hat" then
					R[i]:Destroy()
				end
			end
			for i=1, #C do
				if C[i].className == "Part" or C[i].className == "WedgePart" or C[i].className == "CornerWedgePart" or C[i].className == "UnionOperation" then
					local W = Instance.new("Weld")
					W.Part0 = g.Middle
					W.Part1 = C[i]
					local CJ = CFrame.new(g.Middle.Position)
					local C0 = g.Middle.CFrame:inverse()*CJ
					local C1 = C[i].CFrame:inverse()*CJ
					W.C0 = C0
					W.C1 = C1
					W.Parent = g.Middle
				end
					local Y = Instance.new("Weld")
					Y.Part0 = Me.Torso
					Y.Part1 = g.Middle
					Y.C0 = CFrame.new(0, 0, 0)
					Y.Parent = Y.Part0
			end
	
			local h = g:GetChildren()
			for i = 1, # h do
			if h[i].className == "Part" or h[i].className == "WedgePart" or h[i].className == "CornerWedgePart" or h[i].className == "UnionOperation" then
			h[i].Anchored = false
	        h[i].CanCollide = false
			end
			end	
		end
else
	Me.Arm1:Destroy()
	Me.Arm2:Destroy()
	Me.Chest:Destroy()
	Me.Leg1:Destroy()
	Me.Leg2:Destroy()
	Morph(Suit)
end

end

local enabled = true
local y = 0
for i,v in pairs(Morphs) do
	local Button = script.TextButton:Clone()
	Button.Position = UDim2.new(0,0,y*0.1,0)
	y = y + 1
	Button.Name = v.Name
	Button.Text = v.Name
	Button.Parent = script.Parent.Background.Box
	
	Button.MouseButton1Down:connect(function()
		if not enabled then return end
		enabled = false
		Morph(v)
		enabled = true
	end)
	
end