Problem with welds

Hello, I have been trying to make a riot shield recently and came across a problem, when ever I change the “C0” of the weld or the “C1”, the riot shield goes miles away from the left arm, and isnt what I am trying to do, please help.

Script:

game.ReplicatedStorage.RiotShieldPrompt.OnServerEvent:Connect(function(player, status)
	if status == true then
		local char = game.Workspace:FindFirstChild(player.Name)
		anim = char:WaitForChild("Humanoid"):LoadAnimation(game.ReplicatedStorage.Shield)
		anim:Play()
		shield = game.ReplicatedStorage["Riot Shield"]:Clone()
		shield.Parent = char
		local LARM = char:WaitForChild("Left Arm")
		local weld = Instance.new("Weld")
		weld.Parent = LARM
		local SP = shield.PrimaryPart
		weld.Part0 = LARM
		weld.Part1 = SP
		weld.C1 = LARM.CFrame * CFrame.Angles(0, 90, 0)
	else
		shield:Destroy()
		anim:Stop()
	end
end)

game.ReplicatedStorage.EnergyShieldPrompt.OnServerEvent:Connect(function(player, status)
	if status == true then
		local char = game.Workspace:FindFirstChild(player.Name)
		anim = char:WaitForChild("Humanoid"):LoadAnimation(game.ReplicatedStorage.Shield)
		anim:Play()
	else
		anim:Stop()
	end
end)

And yes, I added math.rad(), didnt work.