I've been working on a whole string of codes that will turn you into a giant diamond from Evangelion. It happens by pressing a gui button while playing. It's taken a while, but when I got to the part that changes my character, I found tons of problems and i'm really confused on how to make this work. I know two things im doing wrong, but I don't know how to fix it.

Problem one: The Model that the player turns into isn't correctly created. I don't know if I need Welds, WeldConstraints, Motor3D? I don't even know If I need to name them correctly, and nothing I've seen online helps. They've all glitched somehow.

Problem two: The scripting that I've created doesn't have any errors, but it not only makes the base of the Model (Ramiel, the one that im trying to turn into) fall out of the body, but it turns the player back to normal after a while! Why?

How am I supposed to change the characters model without causing so many errors. And what do I need to do in the model to make it not break?

I'll show the script here:

game.ReplicatedStorage.ChangeRobot.OnServerEvent:Connect(function(plr,Name)
	local Chara = plr.Character
	--Chara.Char:ClearChildren()
	local Copy = game.ServerStorage.AdminRobots.Ramiel.Robot.Transformation:Clone()
	Copy.Parent = plr.Character.Char
	local Anim = Chara.Humanoid:LoadAnimation(Chara.Char.Transformation)
	local BV = Instance.new("BodyVelocity")
	BV.MaxForce = Vector3.new(0,100000,0)
	BV.Velocity = Vector3.new(0,50,0)
	BV.Parent = Chara.HumanoidRootPart
	Anim:Play()
	wait(7.7)
	Anim:Stop()
	Chara.Char.Transformation:Destroy()
	BV.Velocity = Vector3.new(0,0,0)
	local Max = 9
	local Blast = Instance.new("Part")
	Blast.Anchored = true
	Blast.Shape = Enum.PartType.Ball
	Blast.CanCollide = false
	Blast.Color = Color3.new(0,80,90)
	Blast.CFrame = Chara.HumanoidRootPart.CFrame
	Blast.Parent = workspace
	
	repeat wait(.05)
		Max = Max - .5
		Blast.Size = Blast.Size * 3.5
		Blast.Transparency = Blast.Transparency + .05
	until Max <= 0
	BV:Destroy()
	Blast:Destroy()
	local RobotCopy = game.ServerStorage.AdminRobots.Ramiel:Clone()
	RobotCopy.Parent = Chara.Char
	RobotCopy.Name = "Ramiel"
	local Rig = game.ReplicatedStorage.Models.RamielModels.RamielNeutral
	local RigCopy = Rig:Clone()
	RigCopy.Parent = workspace
	local body = RigCopy:GetChildren()
	RigCopy:SetPrimaryPartCFrame(Chara.HumanoidRootPart.CFrame)
	Chara.Humanoid.Parent = RigCopy
	Chara:Destroy()
	Chara = RigCopy
end)

And i'll show a picture of how I put together the model:

https://streamable.com/83z1g

And the actual footage:

https://streamable.com/08xss