I'm not sure why this won't work/if I'm even doing it right.



local tool = script.Parent


local speedboost = 1.00  is added
local damage = 100
local swingtime = 1
local combowindow = .5 

local debris = game:GetService("Debris")
local handle = tool:WaitForChild("Handle")
local event = tool:WaitForChild("RemoteEvent")
local slashsound = handle:WaitForChild("SlashSound")
local overheadsound = handle:WaitForChild("OverheadSound")
local lungesound = handle:WaitForChild("LungeSound")

local lastclick = tick()
local combo = 0

local lastclick = tick()
local combo = 0



handle.Touched:connect(function(hit)
	if equipped and character and humanoid and humanoid.Health > 0 and hit and not hit:isDescendantOf(character) then
		local targethumanoid = hit.Parent:FindFirstChild("Humanoid")
		hithumanoids = {}
		if targethumanoid and targethumanoid.Health > 0 and not hithumanoids[targethumanoid] then
			hithumanoids[targethumanoid] = true
			
			for _, v in pairs(targethumanoid:GetChildren()) do
				if v and v.Name == "creator" then
					v:remove()
				end
			end
			local tag = Instance.new("ObjectValue")
			tag.Name = "creator"
			tag.Value = player
			debris:AddItem(tag, 3)
			tag.Parent = targethumanoid
			
			targethumanoid:TakeDamage(damage * (combo + 1))
		end
	end
end)

tool.Activated:connect(function()
	local clickdelta = tick() - lastclick
	if clickdelta > swingtime then
	    lastclick = tick()
		hithumanoids = {}
		if clickdelta < swingtime + combowindow then
			combo = (combo + 1) % 3
		else
			combo = 0
		end
		if player then
			if combo == 0 then
				event:FireClient(player, "RunAnimation", "SlashAnim2" )
				slashsound:Play()
			elseif combo == 1 then
				event:FireClient(player, "RunAnimation", "ThrustAnim2" )
				overheadsound:Play()
			elseif combo == 2 then
				event:FireClient(player, "RunAnimation", "OverheadAnim2" ) 
				lungesound:Play() 
			end
		end
    end
end)

function lunge(humanoid, torso) 	
	local IdleAnim3 = humanoid:LoadAnimation(ThrustAnim2)
	if IdleAnim3 then 
		IdleAnim:Play() 
	else 
		Tool.Enabled = true
		return 
	end
	local target = humanoid.TargetPoint 
	local direction = (target - torso.Position) * Vector3.new(1, 0, 1) 
	newBV = nil 
	--swordOut()
	if direction.magnitude > .01 then            
		direction = direction.unit 
		newBV = Instance.new("BodyVelocity") 
		newBV.P = 100000 
		newBV.maxForce = Vector3.new(newBV.P, 0, newBV.P) 
		newBV.velocity = direction * 50 
		newBV.Parent = torso 
		torso.CFrame = CFrame.new(torso.Position, target * Vector3.new(1, 0, 1) + Vector3.new(0, torso.Position.Y, 0)) 
	end 
	wait(.75)       
	if newBV ~= nil then newBV:remove() end 
	wait(.5) 
	--swordUp()
end 


tool.Equipped:connect(function()
	equipped = true
	lastclick = tick()
	combo = 0
	character = tool.Parent
	player = game.Players:GetPlayerFromCharacter(character)
	humanoid = character:FindFirstChild("Humanoid")
	if humanoid then
		humanoid.WalkSpeed = humanoid.WalkSpeed * speedboost
	else
		character = nil
	end
end)

tool.Unequipped:connect(function()
	equipped = false
	if humanoid then
		humanoid.WalkSpeed = humanoid.WalkSpeed / speedboost
	end
	character = nil
	humanoid = nil
end)

It would be great if someone could teach me the proper way of inserting the "dash"/lunge function. I tried copying the one from the "Phantom Falchion" gear, but to no avail in terms of successfully merging it into this.

function lunge(humanoid, torso) 	
	local holdAnim = humanoid:LoadAnimation(Tool.LungeSlash)
	if holdAnim then 
		holdAnim:Play() 
	else 
		Tool.Enabled = true
		return 
	end
	local target = humanoid.TargetPoint 
	local direction = (target - torso.Position) * Vector3.new(1, 0, 1) 
	newBV = nil 
	--swordOut()
	if direction.magnitude > .01 then            
		direction = direction.unit 
		newBV = Instance.new("BodyVelocity") 
		newBV.P = 100000 
		newBV.maxForce = Vector3.new(newBV.P, 0, newBV.P) 
		newBV.velocity = direction * 50 
		newBV.Parent = torso 
		torso.CFrame = CFrame.new(torso.Position, target * Vector3.new(1, 0, 1) + Vector3.new(0, torso.Position.Y, 0)) 
	end 
	wait(.75)       
	if newBV ~= nil then newBV:remove() end 
	wait(.5) 
	--swordUp()
end