getgenv().Revive = getgenv().Revive or { Enabled = true, ReviveSelf = true, ReviveOthers = true, TeleportDelay = 0.5, ReviveRange = 12, DebounceTime = 1.0 } local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local lastRevive = 0 local function safeTp(root, cf) if root and root.Parent then root.CFrame = cf return true end return false end spawn(function() while getgenv().Revive.Enabled do task.wait(0.12) local char = LocalPlayer.Character if not char then task.wait(1) continue end local myRoot = char:FindFirstChild("HumanoidRootPart") local myHum = char:FindFirstChild("Humanoid") local myHead = char:FindFirstChild("Head") if not (myRoot and myHum and myHead) then task.wait(1) continue end -- Self revive if myHum.Health <= 0 and getgenv().Revive.ReviveSelf then local prompt = myHead:FindFirstChild("RevivePrompt") if prompt and prompt.Enabled and tick() - lastRevive >= getgenv().Revive.DebounceTime then fireproximityprompt(prompt) lastRevive = tick() task.wait(0.3) end end -- Revive others (only when alive) if myHum.Health > 0 and getgenv().Revive.ReviveOthers then for _, plr in Players:GetPlayers() do if plr == LocalPlayer then continue end local tChar = plr.Character if not tChar then continue end local tHum = tChar:FindFirstChild("Humanoid") local tHead = tChar:FindFirstChild("Head") local tRoot = tChar:FindFirstChild("HumanoidRootPart") if not (tHum and tHead and tRoot) then continue end local prompt = tHead:FindFirstChild("RevivePrompt") if tHum.Health > 0 or not prompt or not prompt.Enabled then continue end if tick() - lastRevive < getgenv().Revive.DebounceTime then break end local dist = (myRoot.Position - tRoot.Position).Magnitude if dist > getgenv().Revive.ReviveRange then safeTp(myRoot, tRoot.CFrame * CFrame.new(0, 3, -2)) task.wait(0.12) end fireproximityprompt(prompt) lastRevive = tick() task.wait(getgenv().Revive.TeleportDelay) break end end end end) LocalPlayer.CharacterAdded:Connect(function(newChar) newChar:WaitForChild("HumanoidRootPart", 5) newChar:WaitForChild("Humanoid", 5) newChar:WaitForChild("Head", 5) end)