Ragdoll crater help

hello,
i was making an uptilt attack and was wondering how i would make there be a crater whenever the enemy falls to the ground. however, the enemy is ragdolled, so i cannot use enum.humanoidstatetype.Landed. i already have an in air boolean, i just want to know how the will be a crater where the enemy falls to the ground while ragdolled. (Ex. the strongest battlegrounds)

You might have some success with the .Touched event on the character parts.

local touchedEvents = {}
local function onFloorTouched(partTouched)
	-- should run once whenever the ragdoll touches something
end 
for i, bodyPart in character:GetChildren() do 
	if not bodyPart:IsA("BasePart") then 
		continue
	end 
	table.insert(touchedEvents, bodyPart.Touched:Connect(function(touched) 
		if not touched:IsDescendantOf(character) then 
			-- disconnect events 
			for i, event in touchedEvents do event:Disconnect() end 
			-- run code 
			onFloorTouched(touched)
		end 
	end))
end 

More complicated first thing I thought of (physics):
If you have an accurate y position you could raycast down from that to the floor, then you have the distance. With that displacement, the velocity of the ragdoll and workspace.Gravity, you can use kinematic equations to solve the time that it will take to land. This depends on the accuracy of measurements though which if you are doing on the server means its probably inaccurate.

its triggering due to the user of the attackā€™s arms touching the enemy. is there a way to prevent this? i feel like task.wait() is a bad idea in this case but idk man