
KeylessUniversal

local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local lp = Players.LocalPlayer
-- Configuration
local radius = 25
local partCount = 40
local spinSpeed = 0.5
local pulseSpeed = 2 -- How fast it breaths
local ringParts = {}
local isSpinning = false
local function getRemote()
local tool = lp.Character and lp.Character:FindFirstChild("Building Tools")
return tool and tool:FindFirstChild("SyncAPI") and tool.SyncAPI:FindFirstChild("ServerEndpoint")
end
-- 1. Build Function (Fibonacci Lattice)
local function buildPulsingSphere()
local remote = getRemote()
if not remote then return end
local root = lp.Character.HumanoidRootPart
local phi = math.pi * (3 - math.sqrt(5))
for i = 1, partCount do
local y = 1 - (i / (partCount - 1)) * 2
local r = math.sqrt(1 - y * y)
local theta = phi * i
local vec = Vector3.new(math.cos(theta) * r, y, math.sin(theta) * r)
local part = remote:InvokeServer("CreatePart1", "Normal", CFrame.new(root.Position + vec * radius), workspace)
if part then
remote:InvokeServer("SyncResize1", {{Part = part, CFrame = part.CFrame, Size = Vector3.new(4, 4, 4)}})
remote:InvokeServer("CreateDecorations", {{Part = part, DecorationType = "Fire"}})
table.insert(ringParts, {part = part, vec = vec})
end
if i % 8 == 0 then task.wait(0.1) end
end
isSpinning = true
end
-- 2. Pulse & Spin Loop
local timePassed = 0
RunService.Heartbeat:Connect(function(dt)
if not isSpinning or #ringParts == 0 then return end
local remote = getRemote()
local root = lp.Character and lp.Character:FindFirstChild("HumanoidRootPart")
if not remote or not root then return end
timePassed = timePassed + dt
local wave = (math.sin(timePassed * pulseSpeed) + 1) / 2 -- Normalizes sine to 0 - 1 range
local moveData = {}
local fireData = {}
local colorData = {}
local rotationCFrame = CFrame.Angles(0, timePassed * spinSpeed, timePassed * (spinSpeed/2))
for _, data in ipairs(ringParts) do
local p = data.part
if p and p.Parent then
-- Update Position
local finalPos = root.Position + (rotationCFrame * data.vec * radius)
table.insert(moveData, {Part = p, CFrame = CFrame.new(finalPos, root.Position)})
-- Batch Color Pulse (Black to Blue)
table.insert(colorData, {
Part = p,
Color = Color3.new(0, wave * 0.5, wave),
UnionColoring = true
})
-- Batch Fire Pulse (Size 5 to 20)
table.insert(fireData, {
Part = p,
DecorationType = "Fire",
Size = 5 + (wave * 15),
Color = Color3.new(0, 0.5, 1)
})
end
end
-- Send Batch Updates
remote:InvokeServer("SyncMove1", moveData)
remote:InvokeServer("SyncColor1", colorData)
remote:InvokeServer("SyncDecorate", fireData)
end)
buildPulsingSphere()



AI SLOP!!!!!!!!!!!!!!!!!!!!!!!!!!
@Noah1337 it actually works tho i still got the functions working lmao
W script, this is awsome
Fe?