Roblox corruptions client
Key RequiredUniversal

Roblox corruptions client

Universal ScriptSkibidilol123Skibidilol123 34 views 14 executesUpdated Jul 17, 2026
Unrated
00
Lua Script•372 lines (12329 chars)
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)

Features & Information

Features: glitch.

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts