Fe ragdoll by alan uriarte
Key RequiredUniversal

Fe ragdoll by alan uriarte

Universal Scripturiartealan24uriartealan24 1.8K views 3.9K executesUpdated Jan 5, 2026
Unrated
00
Lua Script•386 lines (11306 chars)
-- LocalScript (Full Ragdoll + Stumble + Fire Orbit + GUI)

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local RunService = game:GetService("RunService")

--------------------------------------------------
-- STATE
--------------------------------------------------
local isLaying = false
local isRagdolled = false
local isStumbling = false
local ragdollStiffness = 5
local orbiting = false
local fullRagdollData = {}
local fireParts = {}
local stumbleConnections = {}

--------------------------------------------------
-- GUI ROOT
--------------------------------------------------
local gui = Instance.new("ScreenGui")
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")

--------------------------------------------------
-- ALWAYS-ON RAGDOLL BUTTON
--------------------------------------------------
local ragdollAlwaysButton = Instance.new("TextButton")
ragdollAlwaysButton.Size = UDim2.new(0,48,0,48)
ragdollAlwaysButton.Position = UDim2.new(0,6,0,6)
ragdollAlwaysButton.Text = "🦴"
ragdollAlwaysButton.TextScaled = true
ragdollAlwaysButton.BackgroundColor3 = Color3.fromRGB(120,30,30)
ragdollAlwaysButton.TextColor3 = Color3.new(1,1,1)
ragdollAlwaysButton.BorderSizePixel = 0
ragdollAlwaysButton.Parent = gui

--------------------------------------------------
-- SHOW MENU (+)
--------------------------------------------------
local showMenuButton = Instance.new("TextButton")
showMenuButton.Size = UDim2.new(0,32,0,32)
showMenuButton.Position = UDim2.new(0,60,0,10)
showMenuButton.Text = "+"
showMenuButton.TextScaled = true
showMenuButton.BackgroundColor3 = Color3.fromRGB(60,60,60)
showMenuButton.TextColor3 = Color3.new(1,1,1)
showMenuButton.BorderSizePixel = 0
showMenuButton.Visible = false
showMenuButton.Parent = gui

--------------------------------------------------
-- SCROLLABLE MENU
--------------------------------------------------
local menuFrame = Instance.new("ScrollingFrame")
menuFrame.Size = UDim2.new(0,190,0,380)
menuFrame.Position = UDim2.new(0,6,0,60)
menuFrame.BackgroundColor3 = Color3.fromRGB(20,20,20)
menuFrame.BackgroundTransparency = 0.15
menuFrame.BorderSizePixel = 0
menuFrame.ScrollBarThickness = 8
menuFrame.CanvasSize = UDim2.new(0,0,0,700)
menuFrame.Parent = gui

local uiListLayout = Instance.new("UIListLayout")
uiListLayout.Padding = UDim.new(0,8)
uiListLayout.Parent = menuFrame

--------------------------------------------------
-- HIDE MENU (-)
--------------------------------------------------
local hideMenuButton = Instance.new("TextButton")
hideMenuButton.Size = UDim2.new(0,32,0,32)
hideMenuButton.Position = UDim2.new(1,-36,0,4)
hideMenuButton.Text = "−"
hideMenuButton.TextScaled = true
hideMenuButton.BackgroundColor3 = Color3.fromRGB(60,60,60)
hideMenuButton.TextColor3 = Color3.new(1,1,1)
hideMenuButton.BorderSizePixel = 0
hideMenuButton.Parent = menuFrame

--------------------------------------------------
-- BUTTON FACTORY
--------------------------------------------------
local function createButton(text)
	local b = Instance.new("TextButton")
	b.Size = UDim2.new(1, -20, 0, 42)
	b.Text = text
	b.TextScaled = true
	b.BackgroundColor3 = Color3.fromRGB(35,35,35)
	b.TextColor3 = Color3.new(1,1,1)
	b.BorderSizePixel = 0
	b.Parent = menuFrame
	return b
end

local layButton = createButton("Lay Down")
local backflipButton = createButton("Backflip")
local fireAuraButton = createButton("Fire Aura Orbit")
local stopAuraButton = createButton("Stop All Auras")
local ragdollFlingButton = createButton("Ragdoll Fling")
local resetButton = createButton("Reset")
local stumbleButton = createButton("Ragdoll Stumble") -- NEW

--------------------------------------------------
-- LAY / STAND
--------------------------------------------------
local function setLay(state)
	local char = player.Character
	if not char or isRagdolled then return end
	local hum = char:FindFirstChildOfClass("Humanoid")
	local root = char:FindFirstChild("HumanoidRootPart")
	if not hum or not root then return end

	if state then
		hum:ChangeState(Enum.HumanoidStateType.Physics)
		hum.AutoRotate = false
		hum.WalkSpeed = 0
		hum.JumpPower = 0
		root.CFrame *= CFrame.Angles(math.rad(90),0,0)
	else
		hum.PlatformStand = false
		hum:ChangeState(Enum.HumanoidStateType.GettingUp)
		hum.AutoRotate = true
		hum.WalkSpeed = 16
		hum.JumpPower = 50
	end
end

--------------------------------------------------
-- RAGDOLL FULL
--------------------------------------------------
local function ragdollOn(stumble)
	if isRagdolled then return end
	local char = player.Character
	if not char then return end
	local hum = char:FindFirstChildOfClass("Humanoid")
	hum.PlatformStand = true
	hum.AutoRotate = false
	hum:ChangeState(Enum.HumanoidStateType.Physics)

	fullRagdollData = {}
	for _,m in ipairs(char:GetDescendants()) do
		if m:IsA("Motor6D") then
			local a0 = Instance.new("Attachment", m.Part0)
			local a1 = Instance.new("Attachment", m.Part1)
			a0.CFrame = m.C0
			a1.CFrame = m.C1

			local s = Instance.new("BallSocketConstraint")
			s.Attachment0 = a0
			s.Attachment1 = a1
			s.LimitsEnabled = true
			s.UpperAngle = stumble and 40 or (25 + ragdollStiffness * 5)
			s.TwistLimitsEnabled = true
			s.TwistLowerAngle = stumble and -20 or -25
			s.TwistUpperAngle = stumble and 20 or 25
			s.MaxFrictionTorque = stumble and 1 or (ragdollStiffness * 3)
			s.Parent = m.Part0

			m.Enabled = false
			table.insert(fullRagdollData,{m,a0,a1,s})
		end
	end
	isRagdolled = true
	isStumbling = stumble or false
end

local function ragdollOff()
	if not isRagdolled then return end
	local char = player.Character
	if not char then return end
	local hum = char:FindFirstChildOfClass("Humanoid")
	for _,d in ipairs(fullRagdollData) do
		d[1].Enabled = true
		d[2]:Destroy()
		d[3]:Destroy()
		d[4]:Destroy()
	end
	fullRagdollData = {}
	hum.PlatformStand = false
	hum.AutoRotate = true
	hum:ChangeState(Enum.HumanoidStateType.GettingUp)
	isRagdolled = false
	isStumbling = false
end

--------------------------------------------------
-- RAGDOLL STUMBLE (WORKING)
--------------------------------------------------
local function ragdollStumbleOn()
	if isStumbling then return end
	local char = player.Character
	if not char then return end
	local hum = char:FindFirstChildOfClass("Humanoid")
	if not hum then return end

	-- Keep movement active
	hum.PlatformStand = false
	hum.WalkSpeed = 16
	hum.JumpPower = 50

	-- Loosen limbs using BodyGyros
	stumbleConnections = {}
	for _, part in ipairs(char:GetChildren()) do
		if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then
			local bg = Instance.new("BodyGyro")
			bg.D = 8
			bg.P = 2000
			bg.MaxTorque = Vector3.new(4000,4000,4000)
			bg.CFrame = part.CFrame
			bg.Parent = part
			table.insert(stumbleConnections, bg)
		end
	end

	-- Slight wobble
	local wobble = 0
	local conn
	conn = RunService.RenderStepped:Connect(function(delta)
		wobble = wobble + delta*5
		for i=1,#stumbleConnections do
			local bg = stumbleConnections[i]
			if bg.Parent then
				bg.CFrame = bg.Parent.CFrame * CFrame.Angles(math.sin(wobble)*0.2,0,math.sin(wobble*1.2)*0.2)
			end
		end
	end)
	table.insert(stumbleConnections, conn)

	isStumbling = true
end

local function ragdollStumbleOff()
	for _,v in ipairs(stumbleConnections) do
		if typeof(v) == "RBXScriptConnection" then
			v:Disconnect()
		elseif v:IsA("BodyGyro") then
			v:Destroy()
		end
	end
	stumbleConnections = {}
	isStumbling = false
end

--------------------------------------------------
-- BACKFLIP
--------------------------------------------------
local function backflip()
	if isRagdolled then return end
	local root = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
	if not root then return end
	local av = Instance.new("BodyAngularVelocity", root)
	av.AngularVelocity = Vector3.new(-12,0,0)
	av.MaxTorque = Vector3.new(1e5,0,0)
	local bv = Instance.new("BodyVelocity", root)
	bv.Velocity = Vector3.new(0,30,0)
	bv.MaxForce = Vector3.new(0,1e5,0)
	task.delay(0.5,function() av:Destroy() bv:Destroy() end)
end

--------------------------------------------------
-- FIRE ORBIT AURA
--------------------------------------------------
local function clearAuras()
	for _,f in ipairs(fireParts) do f:Destroy() end
	fireParts = {}
	orbiting = false
end

local function fireAuraOrbit()
	clearAuras()
	local char = player.Character
	if not char then return end
	orbiting = true
	local radius = 3
	local angle = 0
	local speed = math.rad(120)

	for _,v in ipairs(char:GetChildren()) do
		if v:IsA("BasePart") then
			local f = Instance.new("Fire", v)
			f.Size = 5
			f.Heat = 10
			table.insert(fireParts,f)
		end
	end

	task.spawn(function()
		while orbiting and player.Character do
			local root = player.Character:FindFirstChild("HumanoidRootPart")
			if root then
				angle = angle + speed * RunService.RenderStepped:Wait()
				local x = math.cos(angle)*radius
				local z = math.sin(angle)*radius
				for _,f in ipairs(fireParts) do
					if f.Parent and f.Parent:IsA("BasePart") then
						f.Position = f.Parent.Position + Vector3.new(x,2,z)
					end
				end
			end
		end
	end)
end

--------------------------------------------------
-- RAGDOLL FLING
--------------------------------------------------
local function ragdollFling()
	local char = player.Character
	if not char then return end
	local root = char:FindFirstChild("HumanoidRootPart")
	if not root then return end
	ragdollOn()
	local bv = Instance.new("BodyVelocity", root)
	bv.Velocity = root.CFrame.LookVector*80 + Vector3.new(0,20,0)
	bv.MaxForce = Vector3.new(1e5,1e5,1e5)
	task.delay(0.5,function() bv:Destroy() end)
end

--------------------------------------------------
-- RESET PLAYER
--------------------------------------------------
local function resetPlayer()
	local char = player.Character
	if char then char:BreakJoints() end
end

--------------------------------------------------
-- MENU TOGGLE
--------------------------------------------------
hideMenuButton.Activated:Connect(function()
	menuFrame.Visible = false
	showMenuButton.Visible = true
end)

showMenuButton.Activated:Connect(function()
	menuFrame.Visible = true
	showMenuButton.Visible = false
end)

--------------------------------------------------
-- BUTTON CONNECTIONS
--------------------------------------------------
ragdollAlwaysButton.Activated:Connect(function()
	if isRagdolled then ragdollOff() else ragdollOn(false) end
end)

layButton.Activated:Connect(function()
	isLaying = not isLaying
	setLay(isLaying)
	layButton.Text = isLaying and "Stand Up" or "Lay Down"
end)

backflipButton.Activated:Connect(backflip)
fireAuraButton.Activated:Connect(function()
	clearAuras()
	fireAuraOrbit()
end)
stopAuraButton.Activated:Connect(clearAuras)
ragdollFlingButton.Activated:Connect(ragdollFling)
resetButton.Activated:Connect(resetPlayer)

stumbleButton.Activated:Connect(function()
	if isStumbling then
		ragdollStumbleOff()
	else
		ragdollStumbleOn()
	end
end)

--------------------------------------------------
-- RESET ON RESPAWN
--------------------------------------------------
player.CharacterAdded:Connect(function()
	isLaying = false
	isRagdolled = false
	isStumbling = false
	fullRagdollData = {}
	fireParts = {}
	stumbleConnections = {}
	orbiting = false
	menuFrame.Visible = true
	showMenuButton.Visible = false
end)

Features & Information

Makes the player ragdoll
#fe#ragdoll

Community Comments (2)

EternalZsEternalZsJan 5, 2026

nice

foreverinaloopforeverinaloopJul 6, 2026

i love it :D

More Scripts for Universal Scripts