
KeylessUniversal

repeat task.wait() until game:IsLoaded()
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")
local Lighting = game:GetService("Lighting")
local LocalPlayer = Players.LocalPlayer or Players.PlayerAdded:Wait()
local CFG = {
size = 270,
thickness = 18,
corner = 24,
duration = 7,
spinDeg = 95,
spinTime = 0.85,
breathMin = 0.985,
breathMax = 1.02,
bubbleCount = 4,
bubbleScale = 2.7,
bubbleGap = 0.12,
creditText = "-- Thunder Hub --",
rainbowSeconds = 1.0,
rainbowTurns = 1.25
}
local BLUE_LIGHT = Color3.fromRGB(120, 205, 255)
local BLUE_MAIN = Color3.fromRGB( 64, 145, 255)
local BLUE_DEEP = Color3.fromRGB( 28, 72, 165)
local CYAN_SOFT = Color3.fromRGB(140, 245, 255)
local BG_COLOR = Color3.fromRGB( 5, 9, 20)
local function getGuiParent()
local ok, root = pcall(function() return (gethui and gethui()) end)
if ok and root then return root end
ok, root = pcall(function() return (get_hidden_gui and get_hidden_gui()) end)
if ok and root then return root end
ok, root = pcall(function() return (gethiddengui and gethiddengui()) end)
if ok and root then return root end
local pg = LocalPlayer:FindFirstChildOfClass("PlayerGui") or LocalPlayer:WaitForChild("PlayerGui", 5)
return pg or game:GetService("CoreGui")
end
pcall(function()
if _G.ThunderIntro_Stop then _G.ThunderIntro_Stop() end
end)
local parent = getGuiParent()
local running = true
local blur = Instance.new("BlurEffect")
blur.Size = 8
blur.Name = "ThunderIntroBlur"
blur.Parent = Lighting
local sg = Instance.new("ScreenGui")
sg.Name = "ThunderIntroMAX"
sg.IgnoreGuiInset = true
sg.ResetOnSpawn = false
pcall(function() if syn and syn.protect_gui then syn.protect_gui(sg) end end)
sg.Parent = parent
local bg = Instance.new("Frame")
bg.Size = UDim2.fromScale(1,1)
bg.BackgroundColor3 = BG_COLOR
bg.BackgroundTransparency = 0.25
bg.Parent = sg
local main = Instance.new("Frame")
main.Size = UDim2.fromOffset(CFG.size, CFG.size)
main.AnchorPoint = Vector2.new(0.5,0.5)
main.Position = UDim2.fromScale(0.5,0.5)
main.BackgroundTransparency = 1
main.Parent = sg
local ring = Instance.new("Frame")
ring.Size = UDim2.fromScale(1,1)
ring.BackgroundTransparency = 1
ring.Parent = main
local rCorner = Instance.new("UICorner"); rCorner.CornerRadius = UDim.new(0, CFG.corner); rCorner.Parent = ring
local rStroke = Instance.new("UIStroke")
rStroke.Thickness = CFG.thickness
rStroke.Color = BLUE_MAIN
pcall(function() rStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border end)
rStroke.Parent = ring
local glowRing = Instance.new("Frame")
glowRing.Size = UDim2.fromScale(1,1)
glowRing.BackgroundTransparency = 1
glowRing.ZIndex = -1
glowRing.Parent = main
local gCorner = Instance.new("UICorner"); gCorner.CornerRadius = UDim.new(0, CFG.corner); gCorner.Parent = glowRing
local gStroke = Instance.new("UIStroke")
gStroke.Thickness = CFG.thickness * 1.7
gStroke.Color = CYAN_SOFT
gStroke.Transparency = 0.7
pcall(function() gStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border end)
gStroke.Parent = glowRing
local inner = Instance.new("Frame")
inner.Size = UDim2.fromOffset(CFG.size - CFG.thickness*2, CFG.size - CFG.thickness*2)
inner.AnchorPoint = Vector2.new(0.5,0.5)
inner.Position = UDim2.fromScale(0.5,0.5)
inner.BackgroundTransparency = 1
inner.Parent = main
local title = Instance.new("TextLabel")
title.Size = UDim2.fromScale(0.9,0.4)
title.AnchorPoint = Vector2.new(0.5,0.5)
title.Position = UDim2.fromScale(0.5,0.40)
title.BackgroundTransparency = 1
title.Text = "THUNDER"
title.TextScaled = true
title.Font = Enum.Font.GothamBlack
title.TextColor3 = BLUE_MAIN
title.TextTransparency = 1
title.Parent = inner
local grad = Instance.new("UIGradient")
grad.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0.00, BLUE_LIGHT),
ColorSequenceKeypoint.new(0.50, BLUE_MAIN),
ColorSequenceKeypoint.new(1.00, BLUE_DEEP)
}
grad.Rotation = 25
grad.Parent = title
local sub = Instance.new("TextLabel")
sub.Size = UDim2.fromScale(0.6,0.2)
sub.AnchorPoint = Vector2.new(0.5,0.5)
sub.Position = UDim2.fromScale(0.5,0.65)
sub.BackgroundTransparency = 1
sub.Text = "HUB"
sub.TextScaled = true
sub.Font = Enum.Font.GothamMedium
sub.TextColor3 = BLUE_LIGHT
sub.TextTransparency = 1
sub.Parent = inner
task.spawn(function()
while running do
grad.Rotation = (grad.Rotation + 1) % 360
task.wait(0.02)
end
end)
local orb = Instance.new("Frame")
orb.AnchorPoint = Vector2.new(0.5,0.5)
orb.Position = UDim2.fromScale(0.5,0.65)
orb.Size = UDim2.fromOffset(120,120)
orb.BackgroundColor3 = CYAN_SOFT
orb.BackgroundTransparency = 0.9
orb.ZIndex = -1
orb.Parent = inner
local orbCorner = Instance.new("UICorner"); orbCorner.CornerRadius = UDim.new(1,0); orbCorner.Parent = orb
local function Spark()
local s = Instance.new("Frame")
s.Size = UDim2.fromOffset(2,2)
s.AnchorPoint = Vector2.new(0.5,0.5)
s.Position = orb.Position
s.BackgroundColor3 = Color3.fromRGB(255,255,255)
s.BackgroundTransparency = 0
s.ZIndex = 5
s.Parent = inner
local goalPos = orb.Position + UDim2.fromOffset(math.random(-60,60), math.random(-60,60))
TweenService:Create(s, TweenInfo.new(0.25), {Position = goalPos, BackgroundTransparency = 1}):Play()
game:GetService("Debris"):AddItem(s, 0.3)
end
for i=1,12 do task.delay(i*0.01, Spark) end
local function CameraShake(ui)
local orig = ui.Position
for i = 1, 4 do
ui.Position = orig + UDim2.fromOffset(math.random(-4,4), math.random(-4,4))
task.wait(0.04)
end
ui.Position = orig
end
CameraShake(main)
local credit = Instance.new("TextLabel")
credit.Size = UDim2.fromOffset(220,20)
credit.AnchorPoint = Vector2.new(1,1)
credit.Position = UDim2.fromScale(0.985,0.985)
credit.BackgroundTransparency = 1
credit.Text = CFG.creditText
credit.TextColor3 = Color3.fromRGB(190,205,235)
credit.Font = Enum.Font.Gotham
credit.TextSize = 12
credit.TextTransparency = 1
credit.Parent = sg
local sweep = Instance.new("Frame")
sweep.BackgroundTransparency = 1
sweep.Size = UDim2.fromScale(1.2,1.2)
sweep.AnchorPoint = Vector2.new(0.5,0.5)
sweep.Position = UDim2.fromScale(-0.2,0.5)
sweep.Rotation = -15
sweep.ZIndex = 8
sweep.Parent = inner
local sweepGrad = Instance.new("UIGradient")
sweepGrad.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0.00, Color3.new(1,1,1)),
ColorSequenceKeypoint.new(0.50, Color3.new(1,1,1)),
ColorSequenceKeypoint.new(1.00, Color3.new(1,1,1)),
}
sweepGrad.Transparency = NumberSequence.new{
NumberSequenceKeypoint.new(0.00,1.0),
NumberSequenceKeypoint.new(0.48,0.25),
NumberSequenceKeypoint.new(0.52,0.00),
NumberSequenceKeypoint.new(0.56,0.25),
NumberSequenceKeypoint.new(1.00,1.0),
}
sweepGrad.Parent = sweep
local bubbleFolder = Instance.new("Folder")
bubbleFolder.Name = "Bubbles"
bubbleFolder.Parent = main
local function makeBubble()
local b = Instance.new("Frame")
b.AnchorPoint = Vector2.new(0.5,0.5)
b.Position = UDim2.fromScale(0.5,0.5)
b.Size = UDim2.fromOffset(1,1)
b.BackgroundTransparency = 1
b.ZIndex = -2
b.Parent = bubbleFolder
local s = Instance.new("UIStroke")
s.Thickness = 3
s.Color = CYAN_SOFT
s.Transparency = 0.1
s.Parent = b
local c = Instance.new("UICorner"); c.CornerRadius = UDim.new(1,999); c.Parent = b
return b, s
end
local ringScale = Instance.new("UIScale"); ringScale.Scale = 1; ringScale.Parent = ring
local mainScale = Instance.new("UIScale"); mainScale.Scale = 1; mainScale.Parent = main
_G.ThunderIntro_Stop = function()
if not running then return end
running = false
if sg and sg.Parent then sg:Destroy() end
if blur and blur.Parent then blur:Destroy() end
end
local ORIG = {
rStroke = rStroke.Color,
gStroke = gStroke.Color,
titleGradient = grad.Color,
sub = sub.TextColor3,
orb = orb.BackgroundColor3
}
local function HSV(h, s, v) return Color3.fromHSV(h % 1, s, v) end
local function setTitleGradientFromHue(h)
grad.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0.00, HSV(h, 1,1)),
ColorSequenceKeypoint.new(0.50, HSV(h+0.15,1,1)),
ColorSequenceKeypoint.new(1.00, HSV(h+0.30,1,1))
}
end
local function RainbowBurst()
local dur = math.max(0.099, CFG.rainbowSeconds)
local turns = CFG.rainbowTurns
local start = os.clock()
while running do
local t = os.clock() - start
if t > dur then break end
local u = t / dur
local h = u * turns
rStroke.Color = HSV(h, 1, 1)
gStroke.Color = HSV(h+0.08, 1, 1)
setTitleGradientFromHue(h)
sub.TextColor3 = HSV(h+0.22, 1, 1)
orb.BackgroundColor3 = HSV(h+0.12, 0.85, 1)
RunService.Heartbeat:Wait()
end
rStroke.Color = ORIG.rStroke
gStroke.Color = ORIG.gStroke
grad.Color = ORIG.titleGradient
sub.TextColor3 = ORIG.sub
orb.BackgroundColor3 = ORIG.orb
end
task.spawn(RainbowBurst)
task.spawn(function()
local flash = Instance.new("Frame")
flash.Size = UDim2.fromScale(1,1)
flash.BackgroundColor3 = Color3.new(1,1,1)
flash.BackgroundTransparency = 1
flash.ZIndex = 999
flash.Parent = sg
local fIn = TweenService:Create(flash, TweenInfo.new(0.05), {BackgroundTransparency = 0.55})
local fOut = TweenService:Create(flash, TweenInfo.new(0.12), {BackgroundTransparency = 1})
fIn:Play(); fIn.Completed:Wait(); fOut:Play(); fOut.Completed:Wait()
flash:Destroy()
end)
task.spawn(function()
while running do
local t1 = TweenService:Create(ring, TweenInfo.new(CFG.spinTime, Enum.EasingStyle.Exponential, Enum.EasingDirection.InOut), {Rotation = ring.Rotation + CFG.spinDeg})
local t2 = TweenService:Create(glowRing, TweenInfo.new(CFG.spinTime, Enum.EasingStyle.Exponential, Enum.EasingDirection.InOut), {Rotation = glowRing.Rotation + CFG.spinDeg})
t1:Play(); t2:Play(); t1.Completed:Wait()
end
end)
task.spawn(function()
while running do
TweenService:Create(ringScale, TweenInfo.new(1.2, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {Scale = CFG.breathMax}):Play()
task.wait(1.2)
TweenService:Create(ringScale, TweenInfo.new(1.2, Enum.EasingStyle.Sine, Enum.EasingDirection.In), {Scale = CFG.breathMin}):Play()
task.wait(1.2)
end
end)
task.spawn(function()
task.wait(0.3)
TweenService:Create(title, TweenInfo.new(0.8, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {TextTransparency = 0}):Play()
task.wait(0.25)
TweenService:Create(sub, TweenInfo.new(0.6, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {TextTransparency = 0}):Play()
TweenService:Create(credit, TweenInfo.new(0.6, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {TextTransparency = 0.2}):Play()
end)
task.spawn(function()
while running do
local up = TweenService:Create(orb, TweenInfo.new(1.5, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {BackgroundTransparency = 0.8, Size = UDim2.fromOffset(140,140)})
local dn = TweenService:Create(orb, TweenInfo.new(1.5, Enum.EasingStyle.Sine, Enum.EasingDirection.In), {BackgroundTransparency = 0.9, Size = UDim2.fromOffset(120,120)})
up:Play(); up.Completed:Wait(); dn:Play(); dn.Completed:Wait()
end
end)
local function BubblePop()
local baseT = bg.BackgroundTransparency
local flashDown = TweenService:Create(bg, TweenInfo.new(0.08, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {BackgroundTransparency = math.max(0, baseT - 0.12)})
local flashUp = TweenService:Create(bg, TweenInfo.new(0.18, Enum.EasingStyle.Sine, Enum.EasingDirection.In), {BackgroundTransparency = baseT})
flashDown:Play(); flashDown.Completed:Wait(); flashUp:Play()
local oldThick = rStroke.Thickness
local oldColor = rStroke.Color
local boostA = TweenService:Create(rStroke, TweenInfo.new(0.08, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Thickness = oldThick * 1.35, Color = CYAN_SOFT})
local boostB = TweenService:Create(rStroke, TweenInfo.new(0.22, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {Thickness = oldThick, Color = oldColor})
boostA:Play(); boostA.Completed:Wait(); boostB:Play()
local thumpUp = TweenService:Create(mainScale, TweenInfo.new(0.08, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {Scale = 1.03})
local thumpDn = TweenService:Create(mainScale, TweenInfo.new(0.20, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {Scale = 1})
thumpUp:Play(); thumpUp.Completed:Wait(); thumpDn:Play()
for i = 1, CFG.bubbleCount do
task.spawn(function()
local b, s = makeBubble()
local grow = TweenService:Create(b, TweenInfo.new(0.6, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out), {Size = UDim2.fromOffset(CFG.size * CFG.bubbleScale, CFG.size * CFG.bubbleScale)})
local fade = TweenService:Create(s, TweenInfo.new(0.6, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {Transparency = 1})
grow:Play(); fade:Play(); grow.Completed:Wait()
b:Destroy()
end)
task.wait(CFG.bubbleGap)
end
end
task.spawn(function()
BubblePop()
end)
task.spawn(function()
task.wait(0.25)
local flash = Instance.new("Frame")
flash.Size = UDim2.fromScale(1,1)
flash.BackgroundColor3 = Color3.fromRGB(255,255,255)
flash.BackgroundTransparency = 1
flash.ZIndex = -5
flash.Parent = sg
local fIn = TweenService:Create(flash, TweenInfo.new(0.08, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {BackgroundTransparency = 0.6})
local fOut = TweenService:Create(flash, TweenInfo.new(0.20, Enum.EasingStyle.Sine, Enum.EasingDirection.In), {BackgroundTransparency = 1})
fIn:Play(); fIn.Completed:Wait(); fOut:Play(); fOut.Completed:Wait()
flash:Destroy()
end)
task.spawn(function()
task.wait(0.55)
TweenService:Create(sweep, TweenInfo.new(1.1, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {Position = UDim2.fromScale(1.2, 0.5)}):Play()
end)
local function PulseRing()
local ring = main:Clone()
ring.Size = UDim2.fromOffset(0, 0)
ring.BackgroundTransparency = 0.5
ring.Parent = inner
TweenService:Create(ring, TweenInfo.new(0.6, Enum.EasingStyle.Quart), {
Size = UDim2.fromOffset(300, 300),
BackgroundTransparency = 1
}):Play()
game:GetService("Debris"):AddItem(ring, 0.6)
end
if bubbleTween then bubbleTween.Completed:Connect(PulseRing) end
if popSound then popSound.Ended:Connect(PulseRing) end
if CFG.duration and CFG.duration > 0 then
task.delay(CFG.duration, function()
if not running then return end
local fade = TweenInfo.new(0.55, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut)
TweenService:Create(rStroke, fade, {Transparency = 1}):Play()
TweenService:Create(gStroke, fade, {Transparency = 1}):Play()
TweenService:Create(title, fade, {TextTransparency = 1}):Play()
TweenService:Create(sub, fade, {TextTransparency = 1}):Play()
TweenService:Create(credit, fade, {TextTransparency = 1}):Play()
TweenService:Create(bg, fade, {BackgroundTransparency = 1}):Play()
task.wait(0.6)
_G.ThunderIntro_Stop()
end)
end



i added as much as i can like for effects but i ran out of effects tell me wad to add next so i can uh add more effects bc like idrk wad to add
btw ts is like open srs idrc if u steal it and put it in ur sh*y script js atleast say Thunder made ts or sm
Lets gooo🔥
i also made oe
one*