local Players = game:GetService("Players") local Lighting = game:GetService("Lighting") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() player.CharacterAdded:Connect(function(newChar) character = newChar end) -- ============================================================================ -- 1. THE CONFIRMATION UI (YES / NO) -- ============================================================================ local confirmGui = Instance.new("ScreenGui") confirmGui.Name = "GlitchConfirmation" confirmGui.ResetOnSpawn = false confirmGui.DisplayOrder = 1000000 confirmGui.Parent = player:WaitForChild("PlayerGui") local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 350, 0, 180) frame.Position = UDim2.new(0.5, -175, 0.5, -90) frame.BackgroundColor3 = Color3.fromRGB(15, 15, 15) frame.BorderColor3 = Color3.fromRGB(255, 0, 128) -- Glitch Magenta Border frame.BorderSizePixel = 2 frame.Active = true frame.Draggable = true frame.Parent = confirmGui local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 40) title.BackgroundTransparency = 1 title.Text = "SYSTEM WARNING" title.TextColor3 = Color3.fromRGB(255, 0, 128) title.TextSize = 20 title.Font = Enum.Font.Code title.Parent = frame local promptText = Instance.new("TextLabel") promptText.Size = UDim2.new(1, -20, 0, 60) promptText.Position = UDim2.new(0, 10, 0, 40) promptText.BackgroundTransparency = 1 promptText.Text = "This script will corrupt the world and warp your character. Are you sure you want to proceed?" promptText.TextColor3 = Color3.fromRGB(255, 255, 255) promptText.TextSize = 14 promptText.TextWrapped = true promptText.Font = Enum.Font.SourceSans promptText.Parent = frame -- "YES" Button local yesButton = Instance.new("TextButton") yesButton.Size = UDim2.new(0, 120, 0, 35) yesButton.Position = UDim2.new(0.15, 0, 0.7, 0) yesButton.BackgroundColor3 = Color3.fromRGB(30, 30, 30) yesButton.BorderColor3 = Color3.fromRGB(0, 255, 255) -- Cyan yesButton.BorderSizePixel = 1 yesButton.Text = "YES, CORRUPT" yesButton.TextColor3 = Color3.fromRGB(0, 255, 255) yesButton.Font = Enum.Font.Code yesButton.TextSize = 14 yesButton.Parent = frame -- "NO" Button local noButton = Instance.new("TextButton") noButton.Size = UDim2.new(0, 120, 0, 35) noButton.Position = UDim2.new(0.55, 0, 0.7, 0) noButton.BackgroundColor3 = Color3.fromRGB(30, 30, 30) noButton.BorderColor3 = Color3.fromRGB(255, 255, 255) noButton.BorderSizePixel = 1 noButton.Text = "NO, CANCEL" noButton.TextColor3 = Color3.fromRGB(255, 255, 255) noButton.Font = Enum.Font.Code noButton.TextSize = 14 noButton.Parent = frame -- Button Hover Effects local function setupHover(button, hoverColor, defaultColor) button.MouseEnter:Connect(function() button.BackgroundColor3 = hoverColor end) button.MouseLeave:Connect(function() button.BackgroundColor3 = defaultColor end) end setupHover(yesButton, Color3.fromRGB(0, 60, 80), Color3.fromRGB(30, 30, 30)) setupHover(noButton, Color3.fromRGB(60, 60, 60), Color3.fromRGB(30, 30, 30)) -- ============================================================================ -- 2. THE MAIN GLITCH FUNCTION -- ============================================================================ local function initiateGlitch() confirmGui:Destroy() local corruptedParts = {} -- Materials that look flat, corrupt, or missing local materials = { Enum.Material.Plastic, Enum.Material.SmoothPlastic, Enum.Material.Glass, Enum.Material.ForceField } -- Mesh variations local meshTypes = { Enum.MeshType.Brick, Enum.MeshType.Sphere, Enum.MeshType.Cylinder, Enum.MeshType.Wedge, Enum.MeshType.Torso, Enum.MeshType.CornerWedge } -- Expanded Color Palette local glitchColors = { Color3.fromRGB(0, 255, 100), -- Matrix / Terminal Green Color3.fromRGB(255, 0, 128), -- Missing Texture Pink/Magenta Color3.fromRGB(0, 255, 255), -- Electric Cyan / BSOD Blue Color3.fromRGB(255, 230, 0), -- Caution / Kernel Yellow Color3.fromRGB(255, 0, 0), -- Critical Error Red Color3.fromRGB(150, 0, 255), -- GPU Overheat Purple Color3.fromRGB(255, 100, 0), -- Signal Failure Orange Color3.fromRGB(0, 0, 0), -- Dead Pixel Black Color3.fromRGB(255, 255, 255), -- White Screen of Death } local function getRandomGlitchColor() return glitchColors[math.random(1, #glitchColors)] end -- Glitch Overlay Frame local overlayGui = Instance.new("ScreenGui") overlayGui.Name = "GlitchOverlay" overlayGui.ResetOnSpawn = false overlayGui.IgnoreGuiInset = true overlayGui.DisplayOrder = 999999 overlayGui.Parent = player:WaitForChild("PlayerGui") local overlay = Instance.new("Frame") overlay.Size = UDim2.fromScale(1, 1) overlay.BorderSizePixel = 0 overlay.ZIndex = 999999 overlay.Parent = overlayGui task.spawn(function() while overlayGui.Parent do if math.random(1, 10) > 7 then overlay.BackgroundColor3 = getRandomGlitchColor() overlay.BackgroundTransparency = math.random(95, 99) / 100 else overlay.BackgroundColor3 = Color3.fromRGB(0, 0, 0) overlay.BackgroundTransparency = math.random(90, 97) / 100 end task.wait(math.random(3, 10) / 100) end end) -- Environment Setup Lighting.FogEnd = 999999 Lighting.FogStart = 999999 Lighting.GlobalShadows = true Lighting.Brightness = 1.5 local function cleanParticles(obj) if obj:IsA("ParticleEmitter") or obj:IsA("Smoke") or obj:IsA("Fire") or obj:IsA("Sparkles") or obj:IsA("Trail") or obj:IsA("Decal") or obj:IsA("Texture") then if obj:IsA("Decal") or obj:IsA("Texture") then obj:Destroy() else obj.Enabled = false end end end local function corruptPart(part) if not part:IsA("BasePart") or part:GetAttribute("IsCorrupted") then return end part:SetAttribute("IsCorrupted", true) part.Color = getRandomGlitchColor() part.Material = materials[math.random(1, #materials)] local isCharacterPart = character and part:IsDescendantOf(character) local meshChance = isCharacterPart and 50 or 30 local glitchMesh = nil if math.random(1, 100) <= meshChance then glitchMesh = Instance.new("SpecialMesh") glitchMesh.Name = "GlitchMesh" glitchMesh.MeshType = meshTypes[math.random(1, #meshTypes)] glitchMesh.Parent = part end -- Decide if this specific block should rotate (35% chance for non-character parts) local canRotate = not isCharacterPart and (math.random(1, 100) <= 35) local glitchRoll = math.random(1, 100) local isBigMonolith = (glitchRoll <= 2) and not isCharacterPart local isStretched = (not isBigMonolith and glitchRoll > 2 and glitchRoll <= 25) local hasZFighting = (glitchRoll > 25 and glitchRoll <= 40) and not isCharacterPart -- Checkerboard Z-Fighting simulation if hasZFighting and part:IsA("Part") then local zClone = part:Clone() zClone:ClearAllChildren() zClone.Size = part.Size + Vector3.new(0.01, 0.01, 0.01) zClone.Color = getRandomGlitchColor() zClone.Material = Enum.Material.SmoothPlastic zClone.CanCollide = false zClone.CanTouch = false zClone.CanQuery = false zClone.Massless = true zClone:SetAttribute("IsCorrupted", true) local weld = Instance.new("WeldConstraint") weld.Part0 = part weld.Part1 = zClone weld.Parent = zClone zClone.Parent = part table.insert(corruptedParts, { Instance = zClone, OriginalSize = zClone.Size, OriginalPosition = zClone.Position, NextSizeUpdate = math.huge, NextFlickerUpdate = 0, IsZFightClone = true }) end table.insert(corruptedParts, { Instance = part, GlitchMesh = glitchMesh, IsCharacterPart = isCharacterPart, CanRotate = canRotate, OriginalSize = part.Size, OriginalCFrame = part.CFrame, NextSizeUpdate = 0, NextFlickerUpdate = 0, IsStretched = isStretched, IsBigMonolith = isBigMonolith, StretchAxis = math.random(1, 3) }) end -- Heartbeat Update Loop RunService.Heartbeat:Connect(function() local now = os.clock() for i = #corruptedParts, 1, -1 do local data = corruptedParts[i] local part = data.Instance if not part or not part.Parent then table.remove(corruptedParts, i) continue end if data.IsZFightClone then if now >= data.NextFlickerUpdate then part.Color = getRandomGlitchColor() data.NextFlickerUpdate = now + (math.random(1, 3) / 10) end continue end if now >= data.NextSizeUpdate then local freezeChance = math.random(1, 10) if (freezeChance <= 4) and not data.IsBigMonolith then data.NextSizeUpdate = now + (math.random(4, 12) / 10) else -- 1. STUTTER ROTATION AND POSITION if not data.IsCharacterPart then local jitterX = math.random(-60, 60) / 100 local jitterY = math.random(-60, 60) / 100 local jitterZ = math.random(-60, 60) / 100 local baseCFrame = data.OriginalCFrame * CFrame.new(jitterX, jitterY, jitterZ) -- Only apply the snapping rotation if selected for this block if data.CanRotate then local snapRotation = CFrame.Angles( math.rad(math.random(0, 3) * 90 + math.random(-5, 5)), math.rad(math.random(0, 3) * 90 + math.random(-5, 5)), math.rad(math.random(0, 3) * 90 + math.random(-5, 5)) ) baseCFrame = baseCFrame * snapRotation end if part.Anchored then part.CFrame = baseCFrame end end -- 2. STUTTER SIZING local scaleX, scaleY, scaleZ = 1, 1, 1 if data.IsBigMonolith then local scaleMultiplier = math.random(400, 1000) / 100 scaleX, scaleY, scaleZ = scaleMultiplier, scaleMultiplier, scaleMultiplier data.NextSizeUpdate = now + (math.random(8, 20) / 10) elseif data.IsStretched then local stretchFactor = math.random(400, 1000) / 100 scaleX = (data.StretchAxis == 1 and stretchFactor or math.random(40, 110) / 100) scaleY = (data.StretchAxis == 2 and stretchFactor or math.random(40, 110) / 100) scaleZ = (data.StretchAxis == 3 and stretchFactor or math.random(40, 110) / 100) data.NextSizeUpdate = now + (math.random(3, 8) / 10) else scaleX = math.random(40, 160) / 100 scaleY = math.random(40, 160) / 100 scaleZ = math.random(40, 160) / 100 data.NextSizeUpdate = now + (math.random(1, 3) / 10) end if data.GlitchMesh and data.GlitchMesh.Parent then data.GlitchMesh.Scale = Vector3.new(scaleX, scaleY, scaleZ) if math.random(1, 100) <= 25 then data.GlitchMesh.Offset = Vector3.new(math.random(-5, 5), math.random(-5, 5), math.random(-5, 5)) else data.GlitchMesh.Offset = Vector3.new(0, 0, 0) end else part.Size = Vector3.new(data.OriginalSize.X * scaleX, data.OriginalSize.Y * scaleY, data.OriginalSize.Z * scaleZ) end end end if now >= data.NextFlickerUpdate then if math.random(1, 6) == 1 then part.LocalTransparencyModifier = math.random(2, 9) / 10 else part.LocalTransparencyModifier = 0 end if data.IsCharacterPart then if math.random(1, 2) == 1 then part.Color = getRandomGlitchColor() end -- Character accessories / limbs rotate independently of environment rules if part.Name ~= "HumanoidRootPart" and math.random(1, 5) == 1 then part.Rotation = Vector3.new(math.random(-180, 180), math.random(-180, 180), math.random(-180, 180)) end end data.NextFlickerUpdate = now + (math.random(1, 3) / 10) end end end) -- Scan environment for _, obj in ipairs(workspace:GetDescendants()) do cleanParticles(obj) corruptPart(obj) end workspace.DescendantAdded:Connect(function(descendant) task.defer(function() cleanParticles(descendant) corruptPart(descendant) end) end) end -- ============================================================================ -- 3. BUTTON FUNCTION CONNECTIONS -- ============================================================================ yesButton.MouseButton1Click:Connect(function() initiateGlitch() end) noButton.MouseButton1Click:Connect(function() confirmGui:Destroy() end)