local Players = game:GetService("Players") local player = Players.LocalPlayer repeat task.wait() until player.Character local char = player.Character local hum = char:WaitForChild("Humanoid") local root = char:WaitForChild("HumanoidRootPart") local function anim2track(asset_id) local objs = game:GetObjects(asset_id) for i = 1, #objs do if objs[i]:IsA("Animation") then return objs[i].AnimationId end end return asset_id end local fakeTool = Instance.new("Tool") fakeTool.Name = "Slash" fakeTool.RequiresHandle = true local fakeHandle = Instance.new("Part") fakeHandle.Name = "Handle" fakeHandle.Size = Vector3.new(1,4,1) fakeHandle.Transparency = 1 fakeHandle.CanCollide = false fakeHandle.Parent = fakeTool fakeTool.Parent = player.Backpack local slashAnimID = anim2track("rbxassetid://82407225122935") local slashAnimation = Instance.new("Animation") slashAnimation.AnimationId = slashAnimID local slashTrack = hum:LoadAnimation(slashAnimation) slashTrack.Priority = Enum.AnimationPriority.Action slashTrack.Looped = false local function getRealTool() for _, v in pairs(player.Backpack:GetChildren()) do if v:IsA("Tool") and v ~= fakeTool and v:FindFirstChild("Handle") then return v end end for _, v in pairs(char:GetChildren()) do if v:IsA("Tool") and v ~= fakeTool and v:FindFirstChild("Handle") then return v end end end local function cleanRealTool(tool) for _, obj in pairs(tool:GetDescendants()) do if obj:IsA("BasePart") then obj.LocalTransparencyModifier = 1 end if obj:IsA("Sound") then obj.Volume = 0 end if obj:IsA("Animation") then obj:Destroy() end end end local att0 = Instance.new("Attachment", root) local att1 = Instance.new("Attachment", root) att0.Position = Vector3.new(0, 1, 0) att1.Position = Vector3.new(0, -1, 0) local trail = Instance.new("Trail", root) trail.Attachment0 = att0 trail.Attachment1 = att1 trail.Color = ColorSequence.new{ ColorSequenceKeypoint.new(0, Color3.fromRGB(0,0,0)), ColorSequenceKeypoint.new(1, Color3.fromRGB(120,0,120)) } trail.Lifetime = 0.4 trail.LightEmission = 1 local debounce = false fakeTool.Activated:Connect(function() if debounce then return end debounce = true local realTool = getRealTool() if realTool then cleanRealTool(realTool) slashTrack:Play() task.wait(slashTrack.Length * 0.9) hum:EquipTool(realTool) task.wait(0.15) realTool:Activate() task.wait(0.25) hum:EquipTool(fakeTool) end task.wait(0.3) debounce = false end) task.spawn(function() while task.wait() do local t = getRealTool() if t then cleanRealTool(t) end end end)