Run it
Copy the script and paste it into your executor.
Lighting = :()
RunService = :()
camera = .CurrentCamera
.Parent =
startTime = ()
totalDuration =
lightningPhaseEnd =
()
Lighting.Ambient = .(, , )
Lighting.Brightness =
Lighting.OutdoorAmbient = .(, , )
()
()
startPos = camera.Focus.Position + .(.(-, ), , .(-, ))
ray = Ray.(startPos, .(, -, ))
hitPart, hitPos = :(ray)
hitPart
model = .(, )
lastPos = startPos
s = .(, camera)
s.SoundId =
s.Volume =
s:()
.Debris:(s, )
Lighting.Ambient = .(, , )
Lighting.Brightness =
i = ,
nextPos = startPos:(hitPos, i/) + .(.(-, ), , .(-, ))
i == nextPos = hitPos
beam = .(, model)
beam.Anchored, beam.CanCollide = ,
beam.Material = .Material.Neon
beam.Color = .(, , )
beam.Size = .(, , (lastPos - nextPos).Magnitude + )
beam.CFrame = .(lastPos:(nextPos, ), nextPos)
lastPos = nextPos
.(()
.()
i = , ,
_, p (model:()) p.Transparency = i
Lighting.Brightness = * ( - i)
.()
model:()
()
)
RunService.Heartbeat:(()
() - startTime < totalDuration
i = ,
offset = .(.(-, ), , .(-, ))
start = camera.Focus.Position + offset
ray = Ray.(start, .(, -, ))
hit, hitPos = :(ray)
hit
drop = .(, )
drop.Size = .(, , ); drop.Material = .Material.Neon; drop.Transparency = ; drop.CanCollide = ; drop.Anchored = ; drop.Position = start
.(()
fallTime = (start - hitPos).Magnitude /
t =
t <
t = t + (RunService.Heartbeat:() / fallTime)
drop.Position = start:(hitPos, t)
drop.Size = .(, , )
bounceH = hitPos + .(, , )
bt = , ,
drop.Position = hitPos:(bounceH, bt); drop.Transparency = + ( * bt); RunService.Heartbeat:()
drop:()
)
)
.(()
() - startTime < lightningPhaseEnd
.(.(, ))
()
)
has rain has lightning

Universal