Knockback not consistent between players and NPCs

As you can see by the video, the grenade will actively throw the dummies/NPC away with a concussive force/explosion force, but it refuses to do it to the players, only ragdolling them.

I’ve thought of everything, increasing the force, increasing it by mass, and it still has the issue of just ragdolling, does anybody have any solutions?

Grenade Knockback Sample

local function ApplyKnockback(Client, Origin, Humanoid, ConcussiveForce)
	local Player = Players:GetPlayerFromCharacter(Humanoid.Parent) or nil

	--if Player then
	--	if Client.Team == Player.Team then return end
	--end

	if Humanoid then
		local EnemyCharacter = Humanoid.Parent
		local PrimaryPart = EnemyCharacter.HumanoidRootPart

		EnemyCharacter:SetAttribute("KnockbackHealth", EnemyCharacter:GetAttribute("KnockbackHealth") - ConcussiveForce)
		
		local Direction = (Origin - PrimaryPart.Position).Unit

		if EnemyCharacter:GetAttribute("KnockbackHealth") <= 0 then
			RagdollEvent:Fire(Humanoid, 1)
			
			EnemyCharacter:SetAttribute("KnockbackHealth", EnemyCharacter:GetAttribute("OGKnockback"))
		end
		
		PrimaryPart:ApplyImpulse(-Direction * ConcussiveForce)
		PrimaryPart:ApplyImpulse(Vector3.new(0,1,0) * workspace.Gravity)
	end
end

The server can only apply velocity if it owns the network ownership of said part. In this case, you have two options.

  1. Set the network ownership of the HumanoidRootPart to the server, apply the velocity/impulse, return the network ownership to the player
  2. Apply the velocity/impulse on the client

Ill try the second solution, I remember the first one still had issues, thank u.

Neither worked. ᵈᵃᵈᵃˢᵈᵃᵈʷᵃˢᵈʷᵃˢᵈʷ