TreatmentESP
Key Required

TreatmentESP

Animal Hospital (Anomaly) 🧪codeine9codeine9 1.1K views 6K executesUpdated Sep 12, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•218 lines (6691 chars)
local WS = game:GetService("Workspace")
local PL = game:GetService("Players")
local CG = game:GetService("CoreGui")

if CG:FindFirstChild("TreatmentESP") then
    CG.TreatmentESP:Destroy()
end

local gui = Instance.new("ScreenGui")
gui.Name = "TreatmentESP"
gui.ResetOnSpawn = false
gui.IgnoreGuiInset = true
gui.Parent = CG

local active = {}

local function getPos(m)
    if not m then return end
    if m:IsA("Model") then
        local ok, p = pcall(function() return m:GetPivot() end)
        if ok then return p.Position end
        if m.PrimaryPart then return m.PrimaryPart.Position end
    elseif m:IsA("BasePart") then
        return m.Position
    end
end

local function readInv(report)
    local inv = report:FindFirstChild("inv")
    if not inv then return {} end
    local out = {}
    for _, c in ipairs(inv:GetChildren()) do
        if c:IsA("Frame") and c.Name ~= "UIGridLayout" then
            local n = c:FindFirstChild("name")
            local ck = c:FindFirstChild("check")
            table.insert(out, {
                name = n and n.Text or c.Name,
                done = ck and ck.Visible or false,
            })
        end
    end
    return out
end

local function roomList()
    local root = WS:FindFirstChild("Rooms")
    if not root then return {} end
    local out = {}
    for _, cat in ipairs(root:GetChildren()) do
        for _, room in ipairs(cat:GetChildren()) do
            local mg = room:FindFirstChild("Minigame")
            local tv = mg and mg:FindFirstChild("TV")
            local ui = tv and tv:FindFirstChild("Screen") and tv.Screen:FindFirstChild("UI")
            local rep = ui and ui:FindFirstChild("Report")
            if rep then
                local bed = mg:FindFirstChild("Bed") or mg:FindFirstChild("Bed", true)
                table.insert(out, {
                    report = rep,
                    bedPos = getPos(bed) or getPos(tv.Part) or getPos(tv),
                })
            end
        end
    end
    return out
end

local function npcList()
    local out = {}
    local f = WS:FindFirstChild("NPCs")
    if not f then return out end
    for _, d in ipairs(f:GetChildren()) do
        if d:IsA("Model") and not PL:GetPlayerFromCharacter(d) then
            table.insert(out, d)
        end
    end
    return out
end

local function anchorOf(npc)
    return npc:FindFirstChild("HumanoidRootPart")
        or npc:FindFirstChild("Head")
        or npc.PrimaryPart
        or npc:FindFirstChildWhichIsA("BasePart", true)
end

local function makeBB(npc)
    local bb = Instance.new("BillboardGui")
    bb.Name = "TESP"
    bb.Size = UDim2.new(0, 280, 0, 90)
    bb.StudsOffset = Vector3.new(0, 4, 0)
    bb.AlwaysOnTop = true
    bb.Parent = gui

    local f = Instance.new("Frame", bb)
    f.Size = UDim2.new(1, 0, 1, 0)
    f.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
    f.BackgroundTransparency = 0.25
    f.BorderSizePixel = 0

    local c = Instance.new("UICorner", f)
    c.CornerRadius = UDim.new(0, 6)

    local st = Instance.new("UIStroke", f)
    st.Color = Color3.fromRGB(255, 200, 60)
    st.Thickness = 1.5

    local hdr = Instance.new("TextLabel", f)
    hdr.Name = "Header"
    hdr.Size = UDim2.new(1, -8, 0, 20)
    hdr.Position = UDim2.new(0, 4, 0, 4)
    hdr.BackgroundTransparency = 1
    hdr.TextColor3 = Color3.fromRGB(255, 200, 60)
    hdr.Font = Enum.Font.Code
    hdr.TextSize = 14
    hdr.TextXAlignment = Enum.TextXAlignment.Left

    local bdy = Instance.new("TextLabel", f)
    bdy.Name = "Body"
    bdy.Size = UDim2.new(1, -8, 1, -30)
    bdy.Position = UDim2.new(0, 4, 0, 24)
    bdy.BackgroundTransparency = 1
    bdy.TextColor3 = Color3.new(1, 1, 1)
    bdy.Font = Enum.Font.Code
    bdy.TextSize = 14
    bdy.TextWrapped = true
    bdy.TextXAlignment = Enum.TextXAlignment.Left
    bdy.TextYAlignment = Enum.TextYAlignment.Top
    bdy.RichText = true

    local a = anchorOf(npc)
    if a then bb.Adornee = a end
    return bb
end

spawn(function()
    while wait(0.25) do
        local rooms = roomList()
        local npcs = npcList()
        local toShow = {}
        local taken = {}

        for _, r in ipairs(rooms) do
            local prog = r.report:FindFirstChild("treatment")
            prog = prog and prog.Text or ""

            if prog ~= "" then
                local items = readInv(r.report)
                if #items > 0 then
                    local pick, pickD
                    for _, npc in ipairs(npcs) do
                        if not taken[npc] then
                            local p = getPos(anchorOf(npc))
                            if p and r.bedPos then
                                local d = (p - r.bedPos).Magnitude
                                if d < 25 and (not pickD or d < pickD) then
                                    pickD = d
                                    pick = npc
                                end
                            end
                        end
                    end

                    if pick then
                        taken[pick] = true

                        local need, have = {}, {}
                        for _, it in ipairs(items) do
                            if it.done then
                                table.insert(have, it.name)
                            else
                                table.insert(need, it.name)
                            end
                        end

                        local t = {}
                        for _, n in ipairs(need) do
                            t[#t + 1] = "• " .. n
                        end
                        for _, n in ipairs(have) do
                            t[#t + 1] = '<font color="#777"><s>✓ ' .. n .. '</s></font>'
                        end

                        toShow[pick] = {
                            prog = prog,
                            text = table.concat(t, "\n"),
                        }
                    end
                end
            end
        end

        for npc, info in pairs(toShow) do
            local bb = active[npc]
            if not bb or not bb.Parent then
                bb = makeBB(npc)
                active[npc] = bb
            end

            local a = anchorOf(npc)
            if a and bb.Adornee ~= a then
                bb.Adornee = a
            end

            bb.Box.Header.Text = info.prog
            bb.Box.Body.Text = info.text
        end

        for npc, bb in pairs(active) do
            if not toShow[npc] then
                bb:Destroy()
                active[npc] = nil
            elseif not npc.Parent then
                bb:Destroy()
                active[npc] = nil
            end
        end
    end
end)

Features & Information

see what Treatment's that are needed
#a

Community Comments (0)

No comments yet for this script.

More Scripts for Animal Hospital (Anomaly) 🧪