local Lib = require(game.ReplicatedStorage:WaitForChild("Lib")) local LocalPlayer = game.Players.LocalPlayer -- Original functions you might still want (visuals, etc.) local function shakeImage(p1, p2, p3) local v1 = if p1 then p1 else Lib.UI.Get("Sanity"):WaitForChild("Frame").Images -- ... (keep your original shakeImage if you want visuals) end Lib.Inject("ShakeImage", shakeImage) -- Infinite Sanity Core local function keepSanityFull() LocalPlayer:SetAttribute("Sanity", 100) end -- Block sanity loss Lib.Inject("PlayerLostSanity", function() -- Do nothing (or you can still call keepSanityFull() here) keepSanityFull() end) -- Force sanity to 100 constantly LocalPlayer:GetAttributeChangedSignal("Sanity"):Connect(keepSanityFull) local RunService = game:GetService("RunService") RunService.Heartbeat:Connect(keepSanityFull) -- Initial set keepSanityFull() -- Optional: Keep the original updateSanity for visuals (UI won't show drain) LocalPlayer:GetAttributeChangedSignal("Sanity"):Connect(function() keepSanityFull() -- You can still call your original updateSanity if you want the UI effects end)