
Key Required VerifiedUniversal

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)No comments yet for this script.



