Welding player character to another character

I’ve been running into some issues while trying to weld a character to another character (both parties r6) and its been causing me some issues.

Whenever they grab the other player they stay normal for a few seconds then all animations stop then they go into a falling state and whenever they jump they will get flung, the other player can also control the person who committed to the grab. (Video of it happening:
https://gyazo.com/5addfda4eae41ef3087cba66f578a3c6)

Script:

	local connection
	connection = script.Parent.Parent.Parent["Left Arm"].Touched:Connect(function(part)
		if part.Parent:FindFirstChild("Humanoid") and not part.Parent.Torso:FindFirstChild("GrabWeld") then
			local weld = Instance.new("Weld",part.Parent.Torso)
			weld.Name = "GrabWeld"
			weld.Part0 = script.Parent.Parent.Parent["Left Arm"]
			weld.Part1 = part.Parent.Torso
			weld.C0 = CFrame.new(0,-15,0)
			local status = false
			while true do
				if status == true then 
					break
				end
				wait()
				part.Parent.Humanoid:ChangeState(Enum.HumanoidStateType.GettingUp)
			end
		end
	end)
end)

Try setting the humanoidstate for the person being grabbed to platformstand

haha titan go brrr

Same result.
(needs more characters)

This seems like brute forcing but try setting the walkspeed and jump to 0

same result once again, i think its to do with the physics of it

Maybe try setting its networkownership to grabber

same result nothing has changed at all.

C0 is a offset for Part0, C1 is a offset for Part1.

even when i dont use c0 or c1 it still does this

Do you have a grabbing debounce? Or is the status variable the debounce?

Status is to break the loop of setting the grabbed players state to getting up, i have a debounce to make sure it doesnt duplicate welds

Btw, I recommend not using the Instance.new() with the parent argument, here’s why: PSA: Don't use Instance.new() with parent argument

I’m going to bed I’ll take this into consideration in the morning.