-- PNG Chaser - Awesome script made by Hacony ( ^ω^ ) local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Workspace = game:GetService("Workspace") local Debris = game:GetService("Debris") local TweenService = game:GetService("TweenService") local Lighting = game:GetService("Lighting") local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") local DEFAULT_FACE = "rbxassetid://102355976849890" local DEFAULT_COLORS = {Color3.fromRGB(80, 255, 80), Color3.fromRGB(255, 230, 50)} local DEFAULT_LIGHT = Color3.fromRGB(120, 255, 80) local VARIANTS = { {id = "rbxassetid://99192734109891", text = "SHAPES & BEATS", colors = {Color3.fromRGB(255, 80, 180), Color3.fromRGB(0, 255, 255)}, light = Color3.fromRGB(255, 100, 200), quirk = "blixer"}, {id = "rbxassetid://104865173959730", text = "IT'S YOU!", colors = {Color3.fromRGB(255, 255, 255), Color3.fromRGB(255, 40, 40)}, light = Color3.fromRGB(255, 70, 70), quirk = "hacony"}, {id = "rbxassetid://95682086336733", text = "PLUSHIE TIME!", colors = {Color3.fromRGB(60, 140, 255), Color3.fromRGB(0, 220, 255)}, light = Color3.fromRGB(80, 180, 255), quirk = "cocoshark"}, {id = "rbxassetid://115619036875180", text = "DURR!", colors = {Color3.fromRGB(255, 230, 0), Color3.fromRGB(255, 255, 80)}, light = Color3.fromRGB(255, 220, 40), quirk = "durr"}, {id = "rbxassetid://95156098953045", text = "HOWDY!", colors = {Color3.fromRGB(80, 255, 80), Color3.fromRGB(255, 230, 50)}, light = Color3.fromRGB(120, 255, 80), quirk = "flowey"}, {id = "rbxassetid://130979680533261", text = "YOU ARE NOSY", colors = {Color3.fromRGB(70, 140, 255), Color3.fromRGB(20, 50, 140)}, light = Color3.fromRGB(60, 120, 255), quirk = "naarah"}, {id = "rbxassetid://89585627964473", text = "...", colors = {Color3.fromRGB(255, 255, 255), Color3.fromRGB(30, 30, 30)}, light = Color3.fromRGB(200, 200, 220), quirk = "mirror"}, {id = "rbxassetid://109120301075986", text = "NYAN NYAN!", colors = {Color3.fromRGB(255, 80, 180), Color3.fromRGB(80, 200, 255), Color3.fromRGB(255, 220, 50), Color3.fromRGB(120, 255, 120)}, light = Color3.fromRGB(255, 150, 220), quirk = "nyan"}, } local TRACKER_ICON = "rbxassetid://124614424879215" local DEATH_QUOTES = {"SKILL ISSUE", "TOO SLOW", "GET GOOD", "PIZZA TIME OVER", "L + RATIO", "NOOB DETECTED", "TRY AGAIN", "EZ", "YOU DIED", "GIT GUD"} local currentConnection = nil local function cleanup() if currentConnection then currentConnection:Disconnect() currentConnection = nil end for _, n in ipairs({"PizzaFaceHitbox", "PizzaFaceVisual"}) do local o = Workspace:FindFirstChild(n) if o then o:Destroy() end end local g = PlayerGui:FindFirstChild("PizzaFaceUI") if g then g:Destroy() end end local function createUI() local gui = Instance.new("ScreenGui") gui.Name = "PizzaFaceUI" gui.IgnoreGuiInset = true gui.ResetOnSpawn = false gui.Parent = PlayerGui local flash = Instance.new("Frame") flash.Size = UDim2.fromScale(1, 1) flash.BackgroundColor3 = Color3.fromRGB(255, 30, 30) flash.BackgroundTransparency = 1 flash.BorderSizePixel = 0 flash.ZIndex = 10 flash.Parent = gui local left = Instance.new("TextLabel") left.Size = UDim2.fromScale(0.09, 0.28) left.Position = UDim2.fromScale(0.015, 0.36) left.BackgroundTransparency = 1 left.Text = "!" left.TextColor3 = Color3.fromRGB(255, 40, 40) left.TextStrokeTransparency = 0 left.Font = Enum.Font.GothamBlack left.TextScaled = true left.TextTransparency = 1 left.ZIndex = 8 left.Parent = gui local right = left:Clone() right.Position = UDim2.fromScale(0.895, 0.36) right.Parent = gui local tracker = Instance.new("ImageLabel") tracker.Size = UDim2.fromOffset(52, 52) tracker.BackgroundTransparency = 1 tracker.Image = TRACKER_ICON tracker.Visible = false tracker.ZIndex = 20 tracker.Parent = gui local title = Instance.new("TextLabel") title.Size = UDim2.fromScale(1, 0.32) title.Position = UDim2.fromScale(0, 0.3) title.BackgroundTransparency = 1 title.Text = "PIZZA TIME!" title.TextColor3 = Color3.fromRGB(255, 50, 50) title.TextStrokeTransparency = 0 title.Font = Enum.Font.GothamBlack title.TextScaled = true title.TextTransparency = 1 title.ZIndex = 15 title.Parent = gui local death = Instance.new("TextLabel") death.Size = UDim2.fromScale(1, 0.2) death.Position = UDim2.fromScale(0, 0.4) death.BackgroundTransparency = 1 death.Text = "" death.TextColor3 = Color3.fromRGB(255, 50, 50) death.TextStrokeTransparency = 0 death.Font = Enum.Font.GothamBlack death.TextScaled = true death.TextTransparency = 1 death.ZIndex = 25 death.Parent = gui return gui, flash, left, right, tracker, title, death end local function fireProjectile(origin, direction, speed, size, color, damage, life) local p = Instance.new("Part") p.Shape = Enum.PartType.Ball p.Size = Vector3.new(size, size, size) p.Color = color p.Material = Enum.Material.Neon p.Anchored = false p.CanCollide = false p.CanQuery = false p.CastShadow = false p.Position = origin p.Parent = Workspace local bv = Instance.new("BodyVelocity") bv.Velocity = direction.Unit * speed bv.MaxForce = Vector3.new(math.huge, math.huge, math.huge) bv.Parent = p Debris:AddItem(p, life or 3) if damage and damage > 0 then local conn conn = RunService.Heartbeat:Connect(function() if not p.Parent then conn:Disconnect() return end local char = LocalPlayer.Character if char and char:FindFirstChild("HumanoidRootPart") and char:FindFirstChild("Humanoid") then if (p.Position - char.HumanoidRootPart.Position).Magnitude < 3.8 then char.Humanoid:TakeDamage(damage) p:Destroy() conn:Disconnect() end end end) end end local function sayNosy(adornee) local bb = Instance.new("BillboardGui") bb.Size = UDim2.fromOffset(220, 55) bb.StudsOffset = Vector3.new(0, 5, 0) bb.AlwaysOnTop = true bb.Adornee = adornee bb.Parent = adornee local label = Instance.new("TextLabel") label.Size = UDim2.fromScale(1, 1) label.BackgroundTransparency = 1 label.Text = "YOU ARE NOSY" label.TextColor3 = Color3.fromRGB(100, 180, 255) label.TextStrokeTransparency = 0 label.Font = Enum.Font.GothamBlack label.TextScaled = true label.Parent = bb Debris:AddItem(bb, 2.3) end local function setup(character) cleanup() local root = character:WaitForChild("HumanoidRootPart", 5) local humanoid = character:WaitForChild("Humanoid", 5) if not root or not humanoid then return end local camera = Workspace.CurrentCamera local gui, flash, leftBang, rightBang, tracker, title, deathQuote = createUI() local originalFOV = camera.FieldOfView -- Equal chance for all local ALL = { {id = DEFAULT_FACE, text = "PIZZA TIME!", colors = DEFAULT_COLORS, light = DEFAULT_LIGHT, quirk = "none"} } for _, v in ipairs(VARIANTS) do table.insert(ALL, v) end local data = ALL[math.random(1, #ALL)] local face = data.id local colors = data.colors local lightCol = data.light local quirk = data.quirk local startSize = (quirk == "naarah") and 3.5 or 5 local hitbox = Instance.new("Part") hitbox.Name = "PizzaFaceHitbox" hitbox.Shape = Enum.PartType.Ball hitbox.Size = Vector3.new(startSize * 0.65, startSize * 0.65, startSize * 0.65) hitbox.Transparency = 1 hitbox.Anchored = true hitbox.CanCollide = false hitbox.Position = root.Position + Vector3.new(0, 45, 0) hitbox.Parent = Workspace local visual = Instance.new("Part") visual.Name = "PizzaFaceVisual" visual.Size = Vector3.new(startSize, startSize, startSize) visual.Transparency = 1 visual.Anchored = true visual.CanCollide = false visual.Position = hitbox.Position visual.Parent = Workspace local function addFace(f) local s = Instance.new("SurfaceGui") s.Face = f s.SizingMode = Enum.SurfaceGuiSizingMode.PixelsPerStud s.PixelsPerStud = 50 s.LightInfluence = 0 s.Parent = visual local i = Instance.new("ImageLabel") i.Size = UDim2.fromScale(1, 1) i.BackgroundTransparency = 1 i.Image = face i.Parent = s return i end local frontImg = addFace(Enum.NormalId.Front) local backImg = addFace(Enum.NormalId.Back) local light = Instance.new("PointLight") light.Color = lightCol light.Brightness = 2.4 light.Range = 18 light.Parent = visual leftBang.TextColor3 = colors[1] rightBang.TextColor3 = colors[1] local canChase = false local velocity = Vector3.zero local timeAlive = 0 local bob = 0 local pulse = 0 local lastHit = 0 local isFrozen, freezeT = false, 0 local isLunging, lungeT = false, 0 local nextLunge = 5 local ghostT = 0 local quirkT = 0 local hasDied = false task.delay(5.5, function() if not visual.Parent or not character.Parent then return end flash.BackgroundColor3 = colors[1] flash.BackgroundTransparency = 0.2 TweenService:Create(flash, TweenInfo.new(0.7), {BackgroundTransparency = 1}):Play() title.Text = data.text title.TextTransparency = 0 title.TextStrokeTransparency = 0 TweenService:Create(title, TweenInfo.new(0.4, Enum.EasingStyle.Back), { Size = UDim2.fromScale(1.15, 0.36), Position = UDim2.fromScale(-0.075, 0.28) }):Play() task.spawn(function() local i = 1 local start = os.clock() while os.clock() - start < 1.4 and title.Parent do title.TextColor3 = colors[((i-1) % #colors) + 1] i += 1 task.wait(0.1) end end) task.delay(1.3, function() if title and title.Parent then TweenService:Create(title, TweenInfo.new(0.45), {TextTransparency = 1, TextStrokeTransparency = 1}):Play() end end) canChase = true end) currentConnection = RunService.Heartbeat:Connect(function(dt) if not character.Parent or not hitbox.Parent or humanoid.Health <= 0 then if humanoid.Health <= 0 and not hasDied then hasDied = true deathQuote.Text = DEATH_QUOTES[math.random(1, #DEATH_QUOTES)] deathQuote.TextTransparency = 0 deathQuote.TextColor3 = colors[1] end cleanup() if camera then camera.FieldOfView = originalFOV end return end timeAlive += dt bob = math.sin(timeAlive * 3.8) * 0.5 pulse += dt local growth = math.clamp(timeAlive / 100, 0, 1) local base = (quirk == "naarah") and 3.5 or 5 local size = base + growth * ((quirk == "naarah") and 5 or 7) -- Visual size visual.Size = Vector3.new(size, size, size) -- Hitbox is smaller for Naarah local hitSize = (quirk == "naarah") and (size * 0.65) or size hitbox.Size = Vector3.new(hitSize, hitSize, hitSize) light.Range = 14 + size if quirk == "nyan" then local t = timeAlive * 2.5 light.Color = Color3.new(math.sin(t)*0.5+0.5, math.sin(t+2.1)*0.5+0.5, math.sin(t+4.2)*0.5+0.5) else light.Color = lightCol end local hitRange = 3.3 + hitSize * 0.3 if canChase and not isFrozen then quirkT += dt if quirk == "blixer" and quirkT >= 1.4 then quirkT = 0 fireProjectile(hitbox.Position, root.Position - hitbox.Position, 70, 1.1, Color3.fromRGB(255, 80, 200), 5, 2.2) elseif quirk == "flowey" and quirkT >= 2.5 then quirkT = 0 fireProjectile(hitbox.Position, root.Position - hitbox.Position, 30, 1.3, Color3.fromRGB(255, 255, 255), 8, 4) elseif quirk == "cocoshark" and quirkT >= 2.2 then quirkT = 0 fireProjectile(hitbox.Position + Vector3.new(0,3,0), Vector3.new(math.random(-20,20), 50, math.random(-20,20)), 1, 1.8, Color3.fromRGB(110,70,30), 0, 3.5) elseif quirk == "durr" and quirkT >= 0.6 then quirkT = 0 fireProjectile(hitbox.Position, Vector3.new(math.random(-50,50), math.random(0,30), math.random(-50,50)), 40, 0.9, Color3.fromRGB(180,255,220), 0, 2) elseif quirk == "naarah" and quirkT >= 2.5 then quirkT = 0 sayNosy(visual) end end if isFrozen then freezeT -= dt velocity = Vector3.zero frontImg.ImageColor3 = colors[1] backImg.ImageColor3 = colors[1] if freezeT <= 0 then isFrozen = false frontImg.ImageColor3 = Color3.new(1,1,1) backImg.ImageColor3 = Color3.new(1,1,1) end end if canChase and not isFrozen then local speed = 1 + math.min(timeAlive * 1.5, 85) if quirk == "naarah" then speed *= 1.35 end if quirk == "mirror" then speed *= 0.55 end local accel = 0.009 if quirk == "mirror" then accel = 0.04 end nextLunge -= dt if nextLunge <= 0 and not isLunging then isLunging = true lungeT = (quirk == "nyan" and 0.28) or (quirk == "hacony" and 1.0) or 0.55 nextLunge = 4.8 + math.random() * 3 end if isLunging then lungeT -= dt local mult = (quirk == "nyan" and 3.0) or (quirk == "hacony" and 1.9) or 1.7 speed *= mult accel = (quirk == "nyan" and 0.13) or 0.06 if lungeT <= 0 then isLunging = false end end local to = (root.Position + Vector3.new(0, 1.5, 0)) - hitbox.Position local dist = to.Magnitude if dist > 0.5 then velocity = velocity:Lerp(to.Unit * speed, accel) end hitbox.Position += velocity * dt ghostT += dt if ghostT > 0.04 then ghostT = 0 local g = Instance.new("Part") g.Size = visual.Size g.Transparency = 1 g.Anchored = true g.CanCollide = false g.CFrame = visual.CFrame g.Parent = Workspace local sg = Instance.new("SurfaceGui", g) sg.Face = Enum.NormalId.Front sg.SizingMode = Enum.SurfaceGuiSizingMode.PixelsPerStud sg.PixelsPerStud = 50 sg.LightInfluence = 0 local gi = Instance.new("ImageLabel", sg) gi.Size = UDim2.fromScale(1,1) gi.BackgroundTransparency = 1 gi.Image = face if quirk == "nyan" then local t = timeAlive * 3 gi.ImageColor3 = Color3.new(math.sin(t)*0.5+0.5, math.sin(t+2)*0.5+0.5, math.sin(t+4)*0.5+0.5) else gi.ImageColor3 = isLunging and colors[2] or colors[1] end gi.ImageTransparency = 0.3 Debris:AddItem(g, 0.6) end local str = math.clamp(1 - dist/50, 0, 0.85) local pul = dist < 20 and math.abs(math.sin(pulse*9))*0.25 or 0 leftBang.TextTransparency = 1 - (str + pul) rightBang.TextTransparency = 1 - (str + pul) local fov = originalFOV + math.clamp(1 - dist/35, 0, 1) * 16 camera.FieldOfView += (fov - camera.FieldOfView) * 0.1 end if canChase and camera then local sp, onScreen = camera:WorldToViewportPoint(hitbox.Position) if not onScreen or sp.Z < 0 then tracker.Visible = true tracker.Size = isLunging and UDim2.fromOffset(64,64) or UDim2.fromOffset(52,52) local vs = camera.ViewportSize tracker.Position = UDim2.fromOffset( math.clamp(sp.X, 30, vs.X-30) - tracker.Size.X.Offset/2, math.clamp(sp.Y, 30, vs.Y-30) - tracker.Size.Y.Offset/2 ) else tracker.Visible = false end end if not isFrozen and camera then visual.CFrame = CFrame.lookAt(hitbox.Position + Vector3.new(0, bob, 0), camera.CFrame.Position) end if canChase and not isFrozen and (hitbox.Position - root.Position).Magnitude <= hitRange and os.clock() - lastHit > 0.9 then lastHit = os.clock() humanoid:TakeDamage(18) isFrozen = true freezeT = 1 velocity = Vector3.zero flash.BackgroundColor3 = colors[1] flash.BackgroundTransparency = 0.35 TweenService:Create(flash, TweenInfo.new(0.3), {BackgroundTransparency = 1}):Play() end end) end local function onCharacterAdded(char) task.defer(function() setup(char) end) end if LocalPlayer.Character then onCharacterAdded(LocalPlayer.Character) end LocalPlayer.CharacterAdded:Connect(onCharacterAdded)