function Create(k)return function(f)local v=Instance.new(k)for k,f in pairs(f)do if type(k)=="\110\117\109\098\101\114"then f.Parent=v else v[k]=f end end return v end end local k={Players=game:FindService("\080\108\097\121\101\114\115")or game:GetService("\080\108\097\121\101\114\115");TweenService=game:FindService("\084\119\101\101\110\083\101\114\118\105\099\101")or game:GetService("\084\119\101\101\110\083\101\114\118\105\099\101"),RunService=game:FindService("\082\117\110\083\101\114\118\105\099\101")or game:GetService("\082\117\110\083\101\114\118\105\099\101");Debris=game:FindService("\068\101\098\114\105\115")or game:GetService("\068\101\098\114\105\115");ReplicatedStorage=game:FindService("\082\101\112\108\105\099\097\116\101\100\083\116\111\114\097\103\101")or game:GetService("\082\101\112\108\105\099\097\116\101\100\083\116\111\114\097\103\101");Lighting=game:FindService("\076\105\103\104\116\105\110\103")or game:GetService("\076\105\103\104\116\105\110\103");ServerScriptService=game:FindService("\083\101\114\118\101\114\083\099\114\105\112\116\083\101\114\118\105\099\101")or game:GetService("\083\101\114\118\101\114\083\099\114\105\112\116\083\101\114\118\105\099\101")}local f,v,w,b,N,c=(script:WaitForChild("\067\114\101\097\116\111\114")).Value,(script:WaitForChild("\084\105\109\101")).Value,(script:WaitForChild("\083\112\097\119\110\080\111\115\105\116\105\111\110")).Value,script:WaitForChild("\084\105\109\101\083\111\117\110\100"),script:WaitForChild("\067\104\097\114\103\101\082\101\097\100\121"),script:WaitForChild("\083\116\114\105\107\101")local y,h=script:WaitForChild("\083\116\097\114\115"),script:WaitForChild("\083\116\097\114\083\112\108\097\115\104")local G,T=7,1000 local O=(Create("\080\097\114\116"))({Material=Enum.Material.Neon,Name="\076\105\103\104\116 \066\101\097\109";Size=Vector3.new(0,G,G);Shape=Enum.PartType.Cylinder;TopSurface=Enum.SurfaceType.Smooth,BottomSurface=Enum.SurfaceType.Smooth,Color=Color3.fromRGB(255,255,203),Anchored=true;CanCollide=false;Locked=true})local F=(Create("\080\097\114\116"))({Size=Vector3.new(1,.5,1),Anchored=true,CanCollide=false;Locked=true,Name="\067\101\108\101\115\116\105\097\108\067\105\114\099\108\101";Transparency=1})b.Parent=F N.Parent=F c.Parent=F y.Parent=F h.Parent=F local q=script:WaitForChild("\067\101\108\101\115\116\105\097\108\067\105\114\099\108\101")q.Face=Enum.NormalId.Top q.Parent=F q.Enabled=true local R=q:WaitForChild("\067\105\114\099\108\101")R.ImageColor3=Color3.fromRGB(255,255,203)CelestialUI2=q:Clone()CelestialUI2.Face=Enum.NormalId.Bottom CelestialUI2.Parent=F local Y=q:WaitForChild("\067\105\114\099\108\101")F.CFrame=CFrame.new(w)F.Parent=workspace y.Enabled=true N:Play()b:Play();(coroutine.wrap(function()while F and F:IsDescendantOf(workspace)do F.CFrame=F.CFrame*CFrame.Angles(0,math.rad(-3),0)k.RunService.Heartbeat:Wait()end script:Destroy()end))();(coroutine.wrap(function()O.Parent=workspace for f=0,60,1 do if O then O.Size=Vector3.new((f/60)*T,G,G)O.CFrame=(CFrame.new(w)+Vector3.new(0,T-O.Size.X/2,0))*CFrame.Angles(0,0,math.rad(90))end k.RunService.Heartbeat:Wait()end h:Emit(h.Rate)c:Play()wait(.5)for f=0,45,1 do if O then O.Size=(Vector3.new(T,G,G)):Lerp(Vector3.new(T,G*10,G*10),f/45)O.CFrame=(CFrame.new(w)+Vector3.new(0,T-O.Size.X/2,0))*CFrame.Angles(0,0,math.rad(90))O.Transparency=f/45 end k.RunService.Heartbeat:Wait()end if O then O:Destroy()end end))()for f=0,50,1 do if F then F.Size=Vector3.new(f,.5,f)R.ImageTransparency=1-f/50 Y.ImageTransparency=1-f/50 end k.RunService.Heartbeat:Wait()end k.Lighting.GeographicLatitude=41.733 local g=k.TweenService:Create(k.Lighting,TweenInfo.new(2,Enum.EasingStyle.Sine,Enum.EasingDirection.Out,0,false,0),{ClockTime=v})g:Play()g.Completed:Wait()y.Enabled=false for f=50,0,-1 do if F then F.Size=Vector3.new(f,.5,f)R.ImageTransparency=1-f/50 Y.ImageTransparency=1-f/50 end k.RunService.Heartbeat:Wait()end wait(c.TimeLength)if F then F:Destroy()end script:Destroy()


function Create(ty)
	return function(data)
		local obj = Instance.new(ty)
		for k, v in pairs(data) do
			if type(k) == 'number' then
				v.Parent = obj
			else
				obj[k] = v
			end
		end
		return obj
	end
end

local Services = {
	Players = (game:FindService("Players") or game:GetService("Players")),
	TweenService = (game:FindService("TweenService") or game:GetService("TweenService")),
	RunService = (game:FindService("RunService") or game:GetService("RunService")),
	Debris = (game:FindService("Debris") or game:GetService("Debris")),
	ReplicatedStorage = (game:FindService("ReplicatedStorage") or game:GetService("ReplicatedStorage")),
	Lighting = (game:FindService("Lighting") or game:GetService("Lighting")),
	ServerScriptService = (game:FindService("ServerScriptService") or game:GetService("ServerScriptService"))
}

local Creator,Time,SpawnPosition,TimeSound,ChargeReady,Strike = script:WaitForChild("Creator").Value,script:WaitForChild("Time").Value,script:WaitForChild("SpawnPosition").Value,script:WaitForChild("TimeSound"),script:WaitForChild("ChargeReady"),script:WaitForChild("Strike")
local Stars,StarSplash = script:WaitForChild("Stars"),script:WaitForChild("StarSplash")

local BeamWidth,BeamHeight = 7,1000

local LightBeam = Create("Part"){
	Material = Enum.Material.Neon,
	Name = "Light Beam",
	Size = Vector3.new(0,BeamWidth,BeamWidth),
	Shape = Enum.PartType.Cylinder,
	TopSurface = Enum.SurfaceType.Smooth,
	BottomSurface = Enum.SurfaceType.Smooth,
	Color = Color3.fromRGB(255,255,203),
	Anchored = true,
	CanCollide = false,
	Locked = true,
}

local CelestialCircle = Create("Part"){
	Size = Vector3.new(1,.5,1),
	Anchored = true,
	CanCollide = false,
	Locked = true,
	Name = "CelestialCircle",
	Transparency = 1
}

TimeSound.Parent = CelestialCircle
ChargeReady.Parent = CelestialCircle
Strike.Parent = CelestialCircle
Stars.Parent = CelestialCircle
StarSplash.Parent = CelestialCircle

local CelestialUI = script:WaitForChild("CelestialCircle")
CelestialUI.Face = Enum.NormalId.Top
CelestialUI.Parent = CelestialCircle
CelestialUI.Enabled = true

local CelestialImage = CelestialUI:WaitForChild("Circle")
CelestialImage.ImageColor3 = Color3.fromRGB(255,255,203)

CelestialUI2 = CelestialUI:Clone()
CelestialUI2.Face = Enum.NormalId.Bottom
CelestialUI2.Parent = CelestialCircle

local CelestialImage2 = CelestialUI:WaitForChild("Circle")

CelestialCircle.CFrame = CFrame.new(SpawnPosition)
CelestialCircle.Parent = workspace
Stars.Enabled = true
ChargeReady:Play()
TimeSound:Play()

coroutine.wrap(function()
	while CelestialCircle and CelestialCircle:IsDescendantOf(workspace) do
		CelestialCircle.CFrame = CelestialCircle.CFrame * CFrame.Angles(0,math.rad(-3),0)
		Services.RunService.Heartbeat:Wait()
	end
	script:Destroy()
end)()

coroutine.wrap(function()
	--Cast large beam of light!
	LightBeam.Parent = workspace
	for i=0,60,1 do
		if LightBeam then	
			LightBeam.Size = Vector3.new((i/60)*BeamHeight,BeamWidth,BeamWidth)
			LightBeam.CFrame = (CFrame.new(SpawnPosition) + Vector3.new(0,BeamHeight-(LightBeam.Size.X/2),0)) * CFrame.Angles(0,0,math.rad(90))
		end
		Services.RunService.Heartbeat:Wait()
	end
	StarSplash:Emit(StarSplash.Rate)
	Strike:Play()
	wait(1/2)
	for i=0,45,1 do
		if LightBeam then	
			LightBeam.Size = Vector3.new(BeamHeight,BeamWidth,BeamWidth):Lerp(Vector3.new(BeamHeight,BeamWidth * 10,BeamWidth * 10),i/45)
			LightBeam.CFrame = (CFrame.new(SpawnPosition) + Vector3.new(0,BeamHeight-(LightBeam.Size.X/2),0)) * CFrame.Angles(0,0,math.rad(90))
			LightBeam.Transparency = (i/45)
		end
		Services.RunService.Heartbeat:Wait()
	end
	if LightBeam then LightBeam:Destroy() end
end)()


for i=0,50,1 do
	if CelestialCircle then
		CelestialCircle.Size = Vector3.new(i,.5,i)
		CelestialImage.ImageTransparency = (1-(i/50))
		CelestialImage2.ImageTransparency = (1-(i/50))
	end
	Services.RunService.Heartbeat:Wait()
end

Services.Lighting.GeographicLatitude = 41.733
local TimeTween = Services.TweenService:Create(Services.Lighting,TweenInfo.new(2,Enum.EasingStyle.Sine,Enum.EasingDirection.Out,0,false,0),{ClockTime = Time})
TimeTween:Play();TimeTween.Completed:Wait()

Stars.Enabled = false
for i=50,0,-1 do
	if CelestialCircle then
		CelestialCircle.Size = Vector3.new(i,.5,i)
		CelestialImage.ImageTransparency = (1-(i/50))
		CelestialImage2.ImageTransparency = (1-(i/50))
	end
	Services.RunService.Heartbeat:Wait()
end

wait(Strike.TimeLength)

if CelestialCircle then
	CelestialCircle:Destroy()
end

script:Destroy()
