--========================================================-- -- GREEN AURA WITH FLIES========================================================-- local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Debris = game:GetService("Debris") local LocalPlayer = Players.LocalPlayer --========================================================-- -- SETTINGS --========================================================-- local GREEN = Color3.fromRGB(0, 255, 45) local SMOKE_RATE = 40 local FLY_COUNT = 12 local FLY_MIN_DISTANCE = 1.5 local FLY_MAX_DISTANCE = 5 local FLY_MIN_HEIGHT = 0.5 local FLY_MAX_HEIGHT = 5 local RAGDOLL_DISTANCE = 10 -- Current Creator Store fly SFX local FLY_SOUND_ID = "rbxassetid://9114875500" --========================================================-- -- STATE --========================================================-- local Character local Root local SmokeObjects = {} local FlyObjects = {} local ProcessedPlayers = {} local FlySound local FlySoundConnection local FlyMovementConnection --========================================================-- -- CHARACTER --========================================================-- local function GetCharacter() Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait() Root = Character:FindFirstChild( "HumanoidRootPart" ) if not Root then Root = Character:WaitForChild( "HumanoidRootPart", 10 ) end return Character, Root end --========================================================-- -- CLEANUP --========================================================-- local function CleanupEffects() for _, object in ipairs( SmokeObjects ) do if object and object.Parent then object:Destroy() end end table.clear( SmokeObjects ) for _, fly in ipairs( FlyObjects ) do if fly.Part and fly.Part.Parent then fly.Part:Destroy() end end table.clear( FlyObjects ) if FlySoundConnection then FlySoundConnection:Disconnect() FlySoundConnection = nil end if FlyMovementConnection then FlyMovementConnection:Disconnect() FlyMovementConnection = nil end if FlySound then FlySound:Destroy() FlySound = nil end end --========================================================-- -- SMOKE --========================================================-- local function MakeSmoke( position, multiplier ) if not Root then return end local attachment = Instance.new( "Attachment" ) attachment.Position = position attachment.Parent = Root table.insert( SmokeObjects, attachment ) local smoke = Instance.new( "ParticleEmitter" ) smoke.Texture = "rbxasset://textures/particles/smoke_main.dds" smoke.Color = ColorSequence.new({ ColorSequenceKeypoint.new( 0, GREEN ), ColorSequenceKeypoint.new( 0.5, Color3.fromRGB( 0, 180, 25 ) ), ColorSequenceKeypoint.new( 1, Color3.fromRGB( 0, 80, 5 ) ) }) smoke.LightEmission = 0.25 smoke.Rate = SMOKE_RATE * multiplier smoke.Lifetime = NumberRange.new( 2, 3.5 ) smoke.Speed = NumberRange.new( 0.5, 1.8 ) smoke.Acceleration = Vector3.new( 0, 1.5, 0 ) smoke.SpreadAngle = Vector2.new( 180, 180 ) smoke.Rotation = NumberRange.new( 0, 360 ) smoke.RotSpeed = NumberRange.new( -30, 30 ) smoke.Size = NumberSequence.new({ NumberSequenceKeypoint.new( 0, 1.5 * multiplier ), NumberSequenceKeypoint.new( 0.4, 4 * multiplier ), NumberSequenceKeypoint.new( 0.8, 6 * multiplier ), NumberSequenceKeypoint.new( 1, 7 * multiplier ) }) smoke.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new( 0, 0.1 ), NumberSequenceKeypoint.new( 0.6, 0.4 ), NumberSequenceKeypoint.new( 1, 1 ) }) smoke.Parent = attachment table.insert( SmokeObjects, smoke ) end local function CreateSmoke() if not Root then return end MakeSmoke( Vector3.new( 0, -2, 0 ), 1 ) MakeSmoke( Vector3.new( 0, 0, 0 ), 0.8 ) MakeSmoke( Vector3.new( 0, 1.7, 0 ), 0.7 ) MakeSmoke( Vector3.new( 1.3, 0, 0 ), 0.6 ) MakeSmoke( Vector3.new( -1.3, 0, 0 ), 0.6 ) local light = Instance.new( "PointLight" ) light.Color = GREEN light.Brightness = 2 light.Range = 12 light.Parent = Root table.insert( SmokeObjects, light ) end --========================================================-- -- FLY SOUND --========================================================-- local function CreateFlySound() if not Root then return end if FlySound then FlySound:Destroy() end FlySound = Instance.new( "Sound" ) FlySound.Name = "FlyBuzz" FlySound.SoundId = FLY_SOUND_ID FlySound.Volume = 0.55 FlySound.Looped = true FlySound.RollOffMode = Enum.RollOffMode.Inverse FlySound.RollOffMinDistance = 3 FlySound.RollOffMaxDistance = 35 FlySound.Parent = Root -- Don't wait for IsLoaded. -- Start immediately. pcall(function() FlySound:Play() end) FlySoundConnection = RunService.Heartbeat:Connect( function() if not FlySound then return end if not FlySound.Parent then return end if not FlySound.IsPlaying then pcall(function() FlySound:Play() end) end end ) end --========================================================-- -- RANDOM FLY --========================================================-- local function CreateRandomFly(index) local part = Instance.new( "Part" ) part.Name = "RandomFly_" .. index part.Shape = Enum.PartType.Ball part.Size = Vector3.new( 0.18, 0.18, 0.18 ) part.Material = Enum.Material.Neon part.Color = Color3.fromRGB( 10, 10, 10 ) part.Anchored = true part.CanCollide = false part.CanTouch = false part.CanQuery = false part.CastShadow = false part.Parent = workspace local glow = Instance.new( "PointLight" ) glow.Color = GREEN glow.Brightness = 0.15 glow.Range = 1.5 glow.Parent = part local random = Random.new( index * 7919 ) local flyData = { Part = part, Position = Vector3.new( random:NextNumber( -FLY_MAX_DISTANCE, FLY_MAX_DISTANCE ), random:NextNumber( FLY_MIN_HEIGHT, FLY_MAX_HEIGHT ), random:NextNumber( -FLY_MAX_DISTANCE, FLY_MAX_DISTANCE ) ), Target = Vector3.zero, Speed = random:NextNumber( 2, 5 ), Timer = random:NextNumber( 0, 1 ), Random = random, } table.insert( FlyObjects, flyData ) return flyData end --========================================================-- -- CHOOSE RANDOM FLY TARGET --========================================================-- local function ChooseNewFlyTarget( fly ) local random = fly.Random fly.Target = Vector3.new( random:NextNumber( -FLY_MAX_DISTANCE, FLY_MAX_DISTANCE ), random:NextNumber( FLY_MIN_HEIGHT, FLY_MAX_HEIGHT ), random:NextNumber( -FLY_MAX_DISTANCE, FLY_MAX_DISTANCE ) ) fly.Speed = random:NextNumber( 1.5, 4.5 ) end --========================================================-- -- CREATE RANDOM FLIES --========================================================-- local function CreateFlies() table.clear( FlyObjects ) for i = 1, FLY_COUNT do local fly = CreateRandomFly(i) ChooseNewFlyTarget( fly ) end if FlyMovementConnection then FlyMovementConnection:Disconnect() end FlyMovementConnection = RunService.RenderStepped:Connect( function(deltaTime) if not Root or not Root.Parent then return end for index, fly in ipairs( FlyObjects ) do if not fly.Part or not fly.Part.Parent then continue end -- Randomly change target fly.Timer -= deltaTime if fly.Timer <= 0 then ChooseNewFlyTarget( fly ) fly.Timer = fly.Random:NextNumber( 0.5, 2 ) end -- Move toward random target local difference = fly.Target - fly.Position local distance = difference.Magnitude if distance > 0.05 then local direction = difference.Unit local movement = math.min( distance, fly.Speed * deltaTime ) fly.Position += direction * movement end -- Add natural buzzing movement local time = os.clock() local wobble = Vector3.new( math.sin( time * 7 + index ) * 0.15, math.sin( time * 11 + index * 2 ) * 0.12, math.cos( time * 8 + index ) * 0.15 ) local worldPosition = Root.Position + fly.Position + wobble fly.Part.Position = worldPosition end end ) end --========================================================-- -- HIDE TARGET ONLY --========================================================-- local function HideTarget( model ) if not model then return end for _, object in ipairs( model:GetDescendants() ) do if object:IsA("BasePart") then object.LocalTransparencyModifier = 1 elseif object:IsA("Decal") or object:IsA("Texture") then object.Transparency = 1 end end local humanoid = model:FindFirstChildOfClass( "Humanoid" ) if humanoid then humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None humanoid.HealthDisplayType = Enum.HumanoidHealthDisplayType.AlwaysOff end end --========================================================-- -- CLEAN DUMMY --========================================================-- local function CleanDummy( dummy ) for _, object in ipairs( dummy:GetDescendants() ) do if object:IsA("Script") or object:IsA("LocalScript") or object:IsA("ModuleScript") or object:IsA("Tool") or object:IsA("BillboardGui") or object:IsA("SurfaceGui") or object:IsA("Sound") then object:Destroy() end end end --========================================================-- -- PREPARE PART --========================================================-- local function PreparePart( part ) if not part:IsA("BasePart") then return end part.Anchored = false part.CanCollide = true part.CanTouch = false part.CanQuery = false part.Massless = false part.LocalTransparencyModifier = 0 end --========================================================-- -- RAGDOLL --========================================================-- local function Ragdoll( dummy ) local humanoid = dummy:FindFirstChildOfClass( "Humanoid" ) if humanoid then humanoid.AutoRotate = false humanoid.PlatformStand = true humanoid.WalkSpeed = 0 humanoid.JumpPower = 0 humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None humanoid.HealthDisplayType = Enum.HumanoidHealthDisplayType.AlwaysOff humanoid:SetStateEnabled( Enum.HumanoidStateType.GettingUp, false ) pcall(function() humanoid:ChangeState( Enum.HumanoidStateType.Physics ) end) end -- Create physical joints for _, motor in ipairs( dummy:GetDescendants() ) do if motor:IsA("Motor6D") then local part0 = motor.Part0 local part1 = motor.Part1 if part0 and part1 then local a0 = Instance.new( "Attachment" ) local a1 = Instance.new( "Attachment" ) a0.CFrame = motor.C0 a1.CFrame = motor.C1 a0.Parent = part0 a1.Parent = part1 local socket = Instance.new( "BallSocketConstraint" ) socket.Attachment0 = a0 socket.Attachment1 = a1 socket.LimitsEnabled = true socket.UpperAngle = 70 socket.TwistLimitsEnabled = true socket.TwistLowerAngle = -50 socket.TwistUpperAngle = 50 socket.Parent = part0 motor.Enabled = false end end end -- Physical parts for _, object in ipairs( dummy:GetDescendants() ) do if object:IsA("BasePart") then PreparePart( object ) end end if humanoid then pcall(function() humanoid:ChangeState( Enum.HumanoidStateType.Physics ) end) end end --========================================================-- -- CARTOON VOMIT EFFECT --========================================================-- local function CreateVomit( dummy ) local head = dummy:FindFirstChild( "Head" ) if not head then return end local attachment = Instance.new( "Attachment" ) attachment.Name = "VomitAttachment" -- Front/lower part of head attachment.Position = Vector3.new( 0, -0.15, -0.5 ) attachment.Parent = head local particles = Instance.new( "ParticleEmitter" ) particles.Name = "CartoonVomit" particles.Texture = "rbxasset://textures/particles/smoke_main.dds" particles.Color = ColorSequence.new( Color3.fromRGB( 100, 230, 15 ) ) particles.Rate = 0 particles.Lifetime = NumberRange.new( 0.35, 0.8 ) particles.Speed = NumberRange.new( 4, 7 ) particles.SpreadAngle = Vector2.new( 10, 10 ) particles.EmissionDirection = Enum.NormalId.Front particles.Size = NumberSequence.new({ NumberSequenceKeypoint.new( 0, 0.35 ), NumberSequenceKeypoint.new( 0.5, 0.55 ), NumberSequenceKeypoint.new( 1, 0.05 ) }) particles.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new( 0, 0.05 ), NumberSequenceKeypoint.new( 0.8, 0.3 ), NumberSequenceKeypoint.new( 1, 1 ) }) particles.Parent = attachment -- Instant burst particles:Emit( 20 ) Debris:AddItem( attachment, 2 ) end --========================================================-- -- INSTANT VOMIT SOUND --========================================================-- local function PlayVomitSound( dummy ) local head = dummy:FindFirstChild( "Head" ) if not head then return end local sound = Instance.new( "Sound" ) sound.Name = "VomitSound" sound.SoundId = "rbxassetid://528349992" sound.Volume = 0.8 sound.Looped = false sound.RollOffMode = Enum.RollOffMode.Inverse sound.RollOffMinDistance = 3 sound.RollOffMaxDistance = 30 sound.Parent = head -- NO WAITING pcall(function() sound:Play() end) Debris:AddItem( sound, 8 ) end --========================================================-- -- CREATE RAGDOLL --========================================================-- local function CreateRagdoll( player ) if player == LocalPlayer then return end if ProcessedPlayers[player] then return end local original = player.Character if not original then return end local originalRoot = original:FindFirstChild( "HumanoidRootPart" ) if not originalRoot then return end -- Clone local oldArchivable = original.Archivable original.Archivable = true local dummy = original:Clone() original.Archivable = oldArchivable if not dummy then return end ProcessedPlayers[player] = true dummy.Name = player.Name .. "_LocalCollapse" CleanDummy( dummy ) -- Put dummy in workspace dummy.Parent = workspace local dummyRoot = dummy:FindFirstChild( "HumanoidRootPart" ) if dummyRoot then dummyRoot.CFrame = originalRoot.CFrame end -- Hide ONLY target HideTarget( original ) -- Ragdoll Ragdoll( dummy ) -- Vomit from head CreateVomit( dummy ) -- Sound immediately PlayVomitSound( dummy ) end --========================================================-- -- DETECT PLAYERS --========================================================-- local function CheckPlayers() if not Root or not Root.Parent then return end for _, player in ipairs( Players:GetPlayers() ) do if player ~= LocalPlayer and not ProcessedPlayers[player] then local character = player.Character if character then local targetRoot = character:FindFirstChild( "HumanoidRootPart" ) if targetRoot then local distance = ( targetRoot.Position - Root.Position ).Magnitude if distance <= RAGDOLL_DISTANCE then CreateRagdoll( player ) end end end end end end --========================================================-- -- RESPAWN --========================================================-- LocalPlayer.CharacterAdded:Connect( function( newCharacter ) Character = newCharacter Root = newCharacter:WaitForChild( "HumanoidRootPart", 10 ) task.wait( 0.5 ) CleanupEffects() table.clear( ProcessedPlayers ) CreateSmoke() CreateFlySound() CreateFlies() end) --========================================================-- -- START --========================================================-- GetCharacter() task.wait( 0.5 ) CreateSmoke() CreateFlySound() CreateFlies() --========================================================-- -- DETECTION LOOP --========================================================-- local timer = 0 RunService.Heartbeat:Connect( function(deltaTime) timer += deltaTime if timer >= 0.1 then timer = 0 CheckPlayers() end end ) print( "[Green Fly] ACTIVE" ) print( "[Green Fly] Random flying mode" ) print( "[Green Fly] 10 stud collapse range" ) print( "[Green Fly] Client-side only" )