I am remaking SFOTH swords and one of them has a ability where when you double click you do a lunge attack that Is followed by a poison bubble which grows bigger damaging enemies when touching It, It works but I was wondering how to prevent making lag, you see when I use the ability and Im Inside of the bubble (The ability won't harm you If your the owner) It will lag
Script (Server Script):
local Tool = script.Parent ----The tool was originally called Swuvle (And yes, Its a underground war thing) Who even names a sword "Swuvle"? ----It was also originally called "Poison Ive" cuz I used to want to rename the SFOTH swords (Ignore dis) local SoundFolder = Tool.Sounds local CanDoubleClickBoolValue = Tool:WaitForChild("CanDoubleClick") local TimerBeforeYouCanNOTDoubleClick = 0.5 local SlashAttack local Boolens = { Debounce = false, CanDamage = false } local Animations = { ---Oh boi there Is alot EquipAnimation = Tool.EquipAnimation, Idle = Tool.Idle, Slash = Tool.Slash, Lunge = Tool.Lunge } Tool.Equipped:Connect(function() SoundFolder.Unsheath:Play() local Humanoid = Tool.Parent.Humanoid local EquipAnimationTrack = Humanoid:FindFirstChild("Animator"):LoadAnimation(Animations.EquipAnimation) EquipAnimationTrack:Play() task.wait(0.30) local Idle = Humanoid:FindFirstChild("Animator"):LoadAnimation(Animations.Idle) Idle:Play() Tool.Unequipped:Connect(function() Idle:Stop() end) end) Tool.Activated:Connect(function() if not Boolens.Debounce then Boolens.Debounce = true Boolens.CanDamage = true SoundFolder.Slash:Play() print("The tool has been clicked") local Humanoid = Tool.Parent.Humanoid SlashAttack = Humanoid:FindFirstChild("Animator"):LoadAnimation(Animations.Slash) SlashAttack:Play() CanDoubleClickBoolValue.Value = true wait(TimerBeforeYouCanNOTDoubleClick) CanDoubleClickBoolValue.Value = false Boolens.CanDamage = false elseif Boolens.Debounce and CanDoubleClickBoolValue.Value then SlashAttack:Stop() print("The tool has been Double clicked") CanDoubleClickBoolValue.Value = false SoundFolder.Lunge:Play() SoundFolder.Slash:Stop() local Humanoid = Tool.Parent.Humanoid Humanoid.Jump = true Humanoid.WalkSpeed = 0 local Lunge = Humanoid:FindFirstChild("Animator"):LoadAnimation(Animations.Lunge) Lunge:Play() wait(0.2) local VectorForce = Instance.new("VectorForce", Humanoid.Parent.Torso) local Attachment = Instance.new("Attachment", Humanoid.Parent.Torso) VectorForce.Force = Vector3.new(0,300,-9000) VectorForce.Attachment0 = Attachment VectorForce.ApplyAtCenterOfMass = true game:GetService("Debris"):AddItem(VectorForce,0.5) game:GetService("Debris"):AddItem(Attachment,0.5) wait(0.3) Humanoid.JumpPower = 0 wait(0.20) SoundFolder.Explode:Play() local MassiveExplosion = Instance.new("Part") ---Fun fact: Originally a white explosion that knockbacks enemies MassiveExplosion.Parent = game.Workspace MassiveExplosion.Position = Tool.Handle.Position MassiveExplosion.Size = Vector3.new(1,1,1) MassiveExplosion.BrickColor = BrickColor.Green() MassiveExplosion.Shape = Enum.PartType.Ball MassiveExplosion.Anchored = true MassiveExplosion.CanCollide = false MassiveExplosion.CastShadow = false MassiveExplosion.Material = Enum.Material.ForceField wait(0.30) Humanoid.JumpPower = 50 Humanoid.WalkSpeed = 16 MassiveExplosion.Touched:Connect(function(hit) local Player = game:GetService("Players"):GetPlayerFromCharacter(hit.Parent) if Player then local player1 = game.Players:GetPlayerFromCharacter(Tool.Parent) local player2 = game.Players:GetPlayerFromCharacter(hit.Parent) if (player1 ~= nil) and (player2 ~= nil) then local humanoid = (player2.Character or player2.CharacterAdded:Wait()):FindFirstChildWhichIsA("Humanoid") if (player1.TeamColor ~= player2.TeamColor) then if (humanoid ~= nil) then humanoid.Health = humanoid.Health - 20 humanoid.WalkSpeed = 10 humanoid.JumpPower = 30 wait(5) humanoid.WalkSpeed = 16 humanoid.JumpPower = 50 end end end else local NPCHumanoid = hit.Parent:WaitForChild("Humanoid") if NPCHumanoid then NPCHumanoid.Health = NPCHumanoid.Health - 20 NPCHumanoid.WalkSpeed = 10 NPCHumanoid.JumpPower = 30 wait(5) NPCHumanoid.WalkSpeed = 16 NPCHumanoid.JumpPower = 50 end end end) game:GetService("Debris"):AddItem(MassiveExplosion,3) while MassiveExplosion and wait(0) do MassiveExplosion.Size = MassiveExplosion.Size+Vector3.new(1,0,0) MassiveExplosion.Transparency = MassiveExplosion.Transparency + .01 end wait(3) Boolens.Debounce = false end wait(1.5) Boolens.Debounce = false end) Tool.Handle.Touched:Connect(function(hit) local Player = game:GetService("Players"):GetPlayerFromCharacter(hit.Parent) if Player then local player1 = game.Players:GetPlayerFromCharacter(Tool.Parent) local player2 = game.Players:GetPlayerFromCharacter(hit.Parent) if (player1 ~= nil) and (player2 ~= nil) then local humanoid = (player2.Character or player2.CharacterAdded:Wait()):FindFirstChildWhichIsA("Humanoid") if (player1.TeamColor ~= player2.TeamColor) then if (humanoid ~= nil) and Boolens.CanDamage == true then Boolens.CanDamage = false humanoid:TakeDamage(10) humanoid.WalkSpeed = 10 humanoid.JumpPower = 30 wait(5) humanoid.WalkSpeed = 16 humanoid.JumpPower = 50 end end end else local NPCHumanoid = hit.Parent:WaitForChild("Humanoid") if NPCHumanoid and Boolens.CanDamage == true then Boolens.CanDamage = false NPCHumanoid:TakeDamage(10) NPCHumanoid.WalkSpeed = 10 NPCHumanoid.JumpPower = 30 wait(5) NPCHumanoid.WalkSpeed = 16 NPCHumanoid.JumpPower = 50 end end end)