Bone positioning issue

I am attempting to create a ghosted model of a player when they die, maintaining the bone positions.
However, SetBonePosition does nothing, and I cannot use GetManipulateBonePos to return anything other than 0, 0, 0 (probably because it was never set with ManipulateBonePos?), I have tried to get the relative positions but it results in a mess of shit.

This is the first time ive attempted to mess with bones, heres how i am currently trying to do things.
(SERVER)



local bones = {}
for i=0, victim:GetBoneCount() - 1 do
	 bones* = victim:GetBonePosition(i)
end


the bones table is sent to the client (along with pos/angles/playermodel)

(CLIENT), will probably move to server because ManipulateBonePos is shared



local ghost = ClientsideModel(victim.model)
ghost:SetPos(victim.pos)
ghost:SetAngles(victim.angs)
ghost:Spawn()
for i=0, ghost:GetBoneCount() - 1 do
	ghost:ManipulateBonePosition(i, victim.bone* - ghost:GetBonePosition(i))
end


This code is probably wrong, Ive just been trying a bunch of stuff and im all out of ideas.
Help would be appreciated.

Picking up this project again, still need help.