--// SERVICES local Players = game:GetService("Players") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local Lighting = game:GetService("Lighting") local player = Players.LocalPlayer --// IDS local FACE_IMAGE = "rbxassetid://6862780932" local FULL_IMAGE = "rbxassetid://10396152149" local SKY_IMAGE = "rbxassetid://13675428955" local MUSIC_ID = "rbxassetid://77586042839973" local RANDOM_SOUND_ID = "rbxassetid://8389041427" local JUMPSCARE_SOUND_ID = "rbxassetid://6787686247" --// STATE local trollStarted = false --// GUI local gui = Instance.new("ScreenGui") gui.ResetOnSpawn = false gui.Parent = player.PlayerGui -- Start Button local button = Instance.new("TextButton") button.Size = UDim2.fromScale(0.25, 0.08) button.Position = UDim2.fromScale(0.05, 0.1) button.BackgroundColor3 = Color3.new(0,0,0) button.Text = "Start Troll" button.TextColor3 = Color3.new(1,1,1) button.TextScaled = true button.Parent = gui -- Overlay local overlay = Instance.new("ImageLabel") overlay.Size = UDim2.fromScale(1,1) overlay.BackgroundTransparency = 1 overlay.Visible = false overlay.Parent = gui -- Jumpscare local jumpscare = Instance.new("ImageLabel") jumpscare.Size = UDim2.fromScale(1,1) jumpscare.BackgroundTransparency = 1 jumpscare.Visible = false jumpscare.Parent = gui --// SOUNDS local music = Instance.new("Sound", workspace) music.SoundId = MUSIC_ID music.Looped = true music.PlaybackSpeed = 0.15 local randomSound = Instance.new("Sound", workspace) randomSound.SoundId = RANDOM_SOUND_ID local jumpscareSound = Instance.new("Sound", workspace) jumpscareSound.SoundId = JUMPSCARE_SOUND_ID --// DRAG BUTTON local dragging, dragStart, startPos button.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = i.Position startPos = button.Position end end) button.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dragging = false end end) UserInputService.InputChanged:Connect(function(i) if dragging and (i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch) then local delta = i.Position - dragStart button.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end end) --// FACE IMAGE local function addFaceImage(character) local head = character:FindFirstChild("Head") if not head or head:FindFirstChild("TrollFace") then return end local bb = Instance.new("BillboardGui") bb.Name = "TrollFace" bb.Adornee = head bb.Size = UDim2.new(3,0,3,0) bb.AlwaysOnTop = true bb.Parent = head local img = Instance.new("ImageLabel") img.Size = UDim2.fromScale(1,1) img.BackgroundTransparency = 1 img.Image = FACE_IMAGE img.Parent = bb end local function applyFaces() for _, plr in pairs(Players:GetPlayers()) do if plr.Character then addFaceImage(plr.Character) end plr.CharacterAdded:Connect(addFaceImage) end end --// PART EFFECTS local function trollParts() for _, obj in pairs(workspace:GetDescendants()) do if obj:IsA("BasePart") then for _, face in pairs(Enum.NormalId:GetEnumItems()) do local d = Instance.new("Decal") d.Texture = FACE_IMAGE d.Face = face d.Parent = obj end local p = Instance.new("ParticleEmitter") p.Texture = FULL_IMAGE p.Rate = 10 p.Parent = obj end end end --// SKYBOX local function changeSky() local sky = Lighting:FindFirstChildOfClass("Sky") or Instance.new("Sky") for _, f in pairs({"Bk","Dn","Ft","Lf","Rt","Up"}) do sky["Skybox"..f] = SKY_IMAGE end sky.Parent = Lighting end --// RANDOM SOUND LOOP (ONLY AFTER START) task.spawn(function() while true do task.wait(10) if trollStarted and math.random(1,2) == 1 then randomSound:Play() end end end) --// JUMPSCARE LOOP (ONLY AFTER START) task.spawn(function() while true do task.wait(15) if trollStarted then local images = {FACE_IMAGE, FULL_IMAGE, SKY_IMAGE} jumpscare.Image = images[math.random(#images)] jumpscare.Visible = true jumpscareSound:Play() task.wait(3) jumpscare.Visible = false end end end) --// BUTTON CLICK button.MouseButton1Click:Connect(function() if trollStarted then return end trollStarted = true overlay.Image = FULL_IMAGE overlay.Visible = true overlay.ImageTransparency = 0 task.delay(5, function() TweenService:Create( overlay, TweenInfo.new(2), {ImageTransparency = 1} ):Play() end) music:Play() changeSky() trollParts() applyFaces() end)