JIT
adjusting damage range to match circle size in tween code
this code. local TweenService = game:GetService("TweenService") local RunService = game:GetService("RunService") local Players = game:GetService("Players") local BASE_SIZE = 150 local WINDUP_SIZE = BASE_SIZE * 25 local MIN_SIZE = 15 local FLOAT_HEIGHT = 2 local FLOAT_DURATION = 2 local WINDUP_DURATION = 9.25 local APPEAR_DELAY = 0.5 local SHRINK_DURATION = 3.25 local BASE_TEXTURE_SPEED = 0.325 local WINDUP_TEXTURE_SPEED = 50 local DAMAGE_INTERVAL = 0.125 local DAMAGE_AMOUNT = 2.5 -- Track damaged players local damagedPlayers = {} local active = true -- Create a container for all visual elements local container = Instance.new("Folder") container.Name = "BeamVisuals" container.Parent = workspace -- Create attachments directly in workspace local attachment1 = Instance.new("Attachment") attachment1.Name = "Attachment1" attachment1.Position = Vector3.new(0, 0, -1 * BASE_SIZE) attachment1.Parent = container local attachment2 = Instance.new("Attachment") attachment2.Name = "Attachment2" attachment2.Position = Vector3.new(0, 0, 1 * BASE_SIZE) attachment2.Parent = container local redAttachment1 = Instance.new("Attachment") redAttachment1.Name = "RedAttachment1" redAttachment1.Position = Vector3.new(0, 0, -1 * BASE_SIZE) redAttachment1.Parent = container local redAttachment2 = Instance.new("Attachment") redAttachment2.Name = "RedAttachment2" redAttachment2.Position = Vector3.new(0, 0, 1 * BASE_SIZE) redAttachment2.Parent = container -- Create beams local beam1 = Instance.new("Beam") beam1.CurveSize1 = -1.35 * BASE_SIZE beam1.CurveSize0 = 1.35 * BASE_SIZE beam1.LightInfluence = 1 beam1.Segments = 999 beam1.TextureSpeed = BASE_TEXTURE_SPEED beam1.Width1 = 999999 beam1.Width0 = 999999 beam1.Transparency = NumberSequence.new(0) beam1.TextureLength = 5 beam1.LightEmission = 0.75 beam1.Texture = "rbxassetid://124670965229302" beam1.Attachment0 = attachment1 beam1.Attachment1 = attachment2 beam1.Enabled = false beam1.Parent = container local beam2 = Instance.new("Beam") beam2.CurveSize1 = 1.35 * BASE_SIZE beam2.CurveSize0 = -1.35 * BASE_SIZE beam2.LightInfluence = 1 beam2.Segments = 999 beam2.TextureSpeed = -BASE_TEXTURE_SPEED beam2.Width1 = 999999 beam2.Width0 = 999999 beam2.Transparency = NumberSequence.new(0) beam2.TextureLength = 5 beam2.LightEmission = 0.75 beam2.Texture = "rbxassetid://124670965229302" beam2.Attachment0 = attachment1 beam2.Attachment1 = attachment2 beam2.Enabled = false beam2.Parent = container local redBeam1 = Instance.new("Beam") redBeam1.CurveSize1 = -1.35 * BASE_SIZE redBeam1.CurveSize0 = 1.35 * BASE_SIZE redBeam1.LightInfluence = 1 redBeam1.Segments = 999 redBeam1.TextureSpeed = BASE_TEXTURE_SPEED redBeam1.Width1 = 999999 redBeam1.Width0 = 999999 redBeam1.Transparency = NumberSequence.new(0) redBeam1.TextureLength = 5 redBeam1.LightEmission = 1.5 redBeam1.Color = ColorSequence.new(Color3.fromRGB(255, 0, 0)) redBeam1.Texture = "rbxassetid://124670965229302" redBeam1.Attachment0 = redAttachment1 redBeam1.Attachment1 = redAttachment2 redBeam1.Enabled = false redBeam1.Parent = container local redBeam2 = Instance.new("Beam") redBeam2.CurveSize1 = 1.35 * BASE_SIZE redBeam2.CurveSize0 = -1.35 * BASE_SIZE redBeam2.LightInfluence = 1 redBeam2.Segments = 999 redBeam2.TextureSpeed = -BASE_TEXTURE_SPEED redBeam2.Width1 = 999999 redBeam2.Width0 = 999999 redBeam2.Transparency = NumberSequence.new(0) redBeam2.TextureLength = 5 redBeam2.LightEmission = 1.5 redBeam2.Color = ColorSequence.new(Color3.fromRGB(255, 0, 0)) redBeam2.Texture = "rbxassetid://124670965229302" redBeam2.Attachment0 = redAttachment1 redBeam2.Attachment1 = redAttachment2 redBeam2.Enabled = false redBeam2.Parent = container -- Create billboard gui for center visual local billboard = Instance.new("BillboardGui") billboard.AlwaysOnTop = true billboard.Size = UDim2.new(1.25, 0, 1.25, 0) billboard.StudsOffset = Vector3.new(0, 3.5, 0) billboard.Adornee = attachment1 -- Use attachment as reference billboard.Parent = container local outline = Instance.new("Frame") outline.AnchorPoint = Vector2.new(0.5, 0.5) outline.Position = UDim2.new(0.5, 0, 0.5, 0) outline.Size = UDim2.new(1, 4, 1, 4) outline.BackgroundColor3 = Color3.fromRGB(0, 0, 0) outline.BorderSizePixel = 0 outline.Rotation = 45 outline.Parent = billboard local diamond = Instance.new("Frame") diamond.AnchorPoint = Vector2.new(0.5, 0.5) diamond.Position = UDim2.new(0.5, 0, 0.5, 0) diamond.Size = UDim2.new(1, 0, 1, 0) diamond.BackgroundColor3 = Color3.fromRGB(0, 170, 255) diamond.BackgroundTransparency = 0 diamond.BorderSizePixel = 0 diamond.Rotation = 45 diamond.Parent = billboard -- Float animation for the attachments local function floatAnimation() local startPos1 = attachment1.Position local startPos2 = attachment2.Position local tween1 = TweenService:Create(attachment1, TweenInfo.new(FLOAT_DURATION, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut, -1, true), { Position = startPos1 + Vector3.new(0, FLOAT_HEIGHT, 0) }) local tween2 = TweenService:Create(attachment2, TweenInfo.new(FLOAT_DURATION, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut, -1, true), { Position = startPos2 + Vector3.new(0, FLOAT_HEIGHT, 0) }) tween1:Play() tween2:Play() end local function flickerBeams(intensity, speed) local flickerTime = 0 local flickerConnection = RunService.Heartbeat:Connect(function(deltaTime) flickerTime = flickerTime + deltaTime * speed local flickerValue = (math.sin(flickerTime * 10) + 1) / 2 * intensity beam1.LightEmission = 0.75 + flickerValue beam2.LightEmission = 0.75 + flickerValue end) return flickerConnection end local function checkPlayers(currentSize) if not active then return end local playersAlive = 0 local players = Players:GetPlayers() for _, player in ipairs(players) do local character = player.Character if character and not damagedPlayers[player] then local humanoid = character:FindFirstChildOfClass("Humanoid") if humanoid and humanoid.Health > 0 then playersAlive = playersAlive + 1 local rootPart = character:FindFirstChild("HumanoidRootPart") if rootPart then local pos = rootPart.Position local distance = Vector3.new(pos.X, 0, pos.Z).Magnitude if distance > currentSize or distance < 5 then humanoid:TakeDamage(DAMAGE_AMOUNT) if humanoid.Health <= 0 then damagedPlayers[player] = true end end end else damagedPlayers[player] = true end end end if playersAlive == 0 then active = false container:Destroy() end end local function windUpEffect() redBeam1.Enabled = true redBeam2.Enabled = true TweenService:Create(diamond, TweenInfo.new(0.5, Enum.EasingStyle.Quad), { BackgroundColor3 = Color3.fromRGB(255, 0, 0), Size = UDim2.new(6, 0, 6, 0) }):Play() beam1.CurveSize1 = -1.35 * WINDUP_SIZE beam1.CurveSize0 = 1.35 * WINDUP_SIZE beam2.CurveSize1 = 1.35 * WINDUP_SIZE beam2.CurveSize0 = -1.35 * WINDUP_SIZE attachment1.Position = Vector3.new(0, 0, -1 * WINDUP_SIZE) attachment2.Position = Vector3.new(0, 0, 1 * WINDUP_SIZE) beam1.TextureSpeed = WINDUP_TEXTURE_SPEED beam2.TextureSpeed = -WINDUP_TEXTURE_SPEED local flickerConnection = flickerBeams(0.5, 10) local windupTweenInfo = TweenInfo.new(WINDUP_DURATION, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut) local beam1Tween = TweenService:Create(beam1, windupTweenInfo, { CurveSize1 = -1.35 * BASE_SIZE, CurveSize0 = 1.35 * BASE_SIZE, TextureSpeed = BASE_TEXTURE_SPEED }) local beam2Tween = TweenService:Create(beam2, windupTweenInfo, { CurveSize1 = 1.35 * BASE_SIZE, CurveSize0 = -1.35 * BASE_SIZE, TextureSpeed = -BASE_TEXTURE_SPEED }) local attachment1Tween = TweenService:Create(attachment1, windupTweenInfo, { Position = Vector3.new(0, 0, -1 * BASE_SIZE) }) local attachment2Tween = TweenService:Create(attachment2, windupTweenInfo, { Position = Vector3.new(0, 0, 1 * BASE_SIZE) }) beam1Tween:Play() beam2Tween:Play() attachment1Tween:Play() attachment2Tween:Play() -- Start damage checking during windup local damageCheckConnection damageCheckConnection = RunService.Heartbeat:Connect(function() checkPlayers(WINDUP_SIZE) end) task.delay(WINDUP_DURATION * 0.75, function() flickerConnection:Disconnect() flickerConnection = flickerBeams(0.2, 5) end) task.delay(WINDUP_DURATION, function() flickerConnection:Disconnect() damageCheckConnection:Disconnect() beam1.LightEmission = 0.75 beam2.LightEmission = 0.75 redBeam1.Enabled = false redBeam2.Enabled = false TweenService:Create(diamond, TweenInfo.new(0.5, Enum.EasingStyle.Quad), { BackgroundColor3 = Color3.fromRGB(0, 170, 255), Size = UDim2.new(1, 0, 1, 0) }):Play() end) end local function shrinkEffect() local tweenInfo = TweenInfo.new(SHRINK_DURATION, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local currentSize = BASE_SIZE -- Start damage checking during shrink local damageCheckConnection damageCheckConnection = RunService.Heartbeat:Connect(function() checkPlayers(currentSize) end) while currentSize > MIN_SIZE and active do local targetSize = math.max(currentSize - 1, MIN_SIZE) TweenService:Create(beam1, tweenInfo, {CurveSize1 = -1.35 * targetSize}):Play() TweenService:Create(beam1, tweenInfo, {CurveSize0 = 1.35 * targetSize}):Play() TweenService:Create(beam2, tweenInfo, {CurveSize1 = 1.35 * targetSize}):Play() TweenService:Create(beam2, tweenInfo, {CurveSize0 = -1.35 * targetSize}):Play() TweenService:Create(attachment1, tweenInfo, {Position = Vector3.new(0, 0, -1 * targetSize)}):Play() TweenService:Create(attachment2, tweenInfo, {Position = Vector3.new(0, -0.25 * targetSize, 1 * targetSize)}):Play() currentSize = targetSize task.wait(0.2) end damageCheckConnection:Disconnect() end -- Initialize the effect task.delay(APPEAR_DELAY, function() beam1.Enabled = true beam2.Enabled = true floatAnimation() windUpEffect() task.delay(WINDUP_DURATION, shrinkEffect) end) make it that the damage range completely matches with the size of the circle and everything.

I'll modify the code to ensure the damage range perfectly matches the visual size of the circle. Here's the updated version:

Updated files
v1