Problem: It's not doing the slash animation like the basic roblox sword is sapose to do.

r = game:service("RunService") 
ching = false 
sword = script.Parent.Handle 
Tool = script.Parent
lowdamage = Tool.WeaponSettings.MinDamage.Value
maxdamage = Tool.WeaponSettings.MaxDamage.Value
reload = Tool.WeaponSettings.ReloadTime.Value
TotalDur =script.Parent:WaitForChild("TotalDurability")
Dur = script.Parent:WaitForChild("CurrentDurability")


local SlashSound = Instance.new("Sound")
SlashSound.SoundId = "rbxasset://sounds\\swordslash.wav"
SlashSound.Parent = sword
SlashSound.Volume = .7

local LungeSound = Instance.new("Sound")
LungeSound.SoundId = "rbxasset://sounds\\swordlunge.wav"
LungeSound.Parent = sword
LungeSound.Volume = .6

local UnsheathSound = Instance.new("Sound")
UnsheathSound.SoundId = "rbxasset://sounds\\unsheath.wav"
UnsheathSound.Parent = sword
UnsheathSound.Volume = 1

 
function blow(hit)
	if ching == true then return end
	
	local humanoid = hit.Parent.Stone:findFirstChild("Resistance"
	)
	print(tostring(humanoid))
	print("1")
	local vCharacter = Tool.Parent
	print("2")
	local vPlayer = game.Players:playerFromCharacter(vCharacter)
	print("3")
	local hum = vCharacter:findFirstChild("Humanoid")
	print("4")
	if humanoid.Value >= 1 then
		print("PICK HIT")
		Dur.Value = Dur.Value - 1
		
		local damage = math.random(lowdamage,maxdamage)
		print(""..damage)
		humanoid.Value = humanoid.Value - damage
		print("Took Damage!!")

	end
end

function tagHumanoid(humanoid, player)
	local creator_tag = Instance.new("ObjectValue")
	creator_tag.Value = player
	creator_tag.Name = "creator"
	creator_tag.Parent = humanoid
end

function untagHumanoid(humanoid)
	if humanoid ~= nil then
		local tag = humanoid:findFirstChild("creator")
		if tag ~= nil then
			tag.Parent = nil
		end
	end
end


function attack()
	damage = slash_damage
	SlashSound:play()
	local anim = Instance.new("StringValue")
	anim.Name = "toolanim"
	anim.Value = "Slash"
	anim.Parent = Tool
end




function swordUp()
	Tool.GripForward = Vector3.new(-1,0,0)
	Tool.GripRight = Vector3.new(0,1,0)
	Tool.GripUp = Vector3.new(0,0,1)
end

function swordOut()
	Tool.GripForward = Vector3.new(0,0,1)
	Tool.GripRight = Vector3.new(0,-1,0)
	Tool.GripUp = Vector3.new(-1,0,0)
end

Tool.Enabled = true
local last_attack = 0
function onActivated()

	if not Tool.Enabled then
		return
	end

	Tool.Enabled = false

	local character = Tool.Parent;
	local humanoid = character.Humanoid
	if humanoid == nil then
		print("Humanoid not found")
		return 
	end

	t = r.Stepped:wait()

	if (t - last_attack < .2) then
		
	else
		attack()
	end

	last_attack = t

	wait(reload)

	Tool.Enabled = true
end


function onEquipped()
	UnsheathSound:play()
end

while true do
	wait(.1)
	if Dur.Value <=1 then
		
		script.Parent:Destroy()
		
		
	end
	
end

script.Parent.Activated:connect(onActivated)
script.Parent.Equipped:connect(onEquipped)


connection = sword.Touched:connect(blow)


But It WORKS FINE FOR THIS SCRIPT

r = game:service("RunService") 
ching = false 
sword = script.Parent.Handle 
Tool = script.Parent
lowdamage = Tool.WeaponSettings.MinDamage.Value
maxdamage = Tool.WeaponSettings.MaxDamage.Value
reload = Tool.WeaponSettings.ReloadTime.Value

local SlashSound = Instance.new("Sound")
SlashSound.SoundId = "rbxasset://sounds\\swordslash.wav"
SlashSound.Parent = sword
SlashSound.Volume = .7

local LungeSound = Instance.new("Sound")
LungeSound.SoundId = "rbxasset://sounds\\swordlunge.wav"
LungeSound.Parent = sword
LungeSound.Volume = .6

local UnsheathSound = Instance.new("Sound")
UnsheathSound.SoundId = "rbxasset://sounds\\unsheath.wav"
UnsheathSound.Parent = sword
UnsheathSound.Volume = 1

 
function blow(hit)
	if ching == true then return end
	local humanoid = hit.Parent:findFirstChild("Ore")
	local vCharacter = Tool.Parent
	local vPlayer = game.Players:playerFromCharacter(vCharacter)
	local hum = vCharacter:findFirstChild("Humanoid")
	if humanoid~=nil then
		print("SWORD HIT")
		tagHumanoid(humanoid, vPlayer)
		local damage = math.random(lowdamage,maxdamage)
		humanoid:TakeDamage(damage)
		local part = Instance.new("Part")
		if (damage == 0) then 
			part.BrickColor = BrickColor.new("Bright blue") 
		else 
			part.BrickColor = BrickColor.new("Bright red") 
		end

		part.formFactor = "Plate"
		part.Shape = "Ball"
	   part.TopSurface = "0"
		part.BottomSurface = "0"					
      part.Size = Vector3.new(1, 1, 1)
		part.Position = hit.Parent.Head.Position + Vector3.new(math.random(-1.6,1.6),2,math.random(-1.6,1.6))
		part.Anchored = true
		local m = Instance.new("Model")
		part.Parent = m
		m.Parent = hit.Parent
		m.Name =  ""..damage..""
		part.Name = "Head"
		local h = Instance.new("Humanoid")
		h.Parent = m
		local body = Instance.new("BodyPosition")
		body.position = Vector3.new(0,7.85,0)
		body.Parent = part
		part.CanCollide = false
		part.Reflectance = 0.1
	   part.Transparency = .99
		h.MaxHealth = 0
		h.Health = 0
		ching = true
		wait(1)
		ching = false
		m:remove()
		wait(.1)
		untagHumanoid(humanoid)
	end
end

function tagHumanoid(humanoid, player)
	local creator_tag = Instance.new("ObjectValue")
	creator_tag.Value = player
	creator_tag.Name = "creator"
	creator_tag.Parent = humanoid
end

function untagHumanoid(humanoid)
	if humanoid ~= nil then
		local tag = humanoid:findFirstChild("creator")
		if tag ~= nil then
			tag.Parent = nil
		end
	end
end


function attack()
	damage = slash_damage
	SlashSound:play()
	local anim = Instance.new("StringValue")
	anim.Name = "toolanim"
	anim.Value = "Slash"
	anim.Parent = Tool
end

function lunge()
	damage = lunge_damage

	LungeSound:play()

	local anim = Instance.new("StringValue")
	anim.Name = "toolanim"
	anim.Value = "Lunge"
	anim.Parent = Tool
	
	
	force = Instance.new("BodyVelocity")
	force.velocity = Vector3.new(0,10,0) --Tool.Parent.Torso.CFrame.lookVector * 80
	force.Parent = Tool.Parent.Torso
	wait(.25)
	swordOut()
	wait(.25)
	force.Parent = nil
	wait(.5)
	swordUp()

	damage = slash_damage
end

function swordUp()
	Tool.GripForward = Vector3.new(-1,0,0)
	Tool.GripRight = Vector3.new(0,1,0)
	Tool.GripUp = Vector3.new(0,0,1)
end

function swordOut()
	Tool.GripForward = Vector3.new(0,0,1)
	Tool.GripRight = Vector3.new(0,-1,0)
	Tool.GripUp = Vector3.new(-1,0,0)
end

function swordAcross()
	-- parry
end


Tool.Enabled = true
local last_attack = 0
function onActivated()

	if not Tool.Enabled then
		return
	end

	Tool.Enabled = false

	local character = Tool.Parent;
	local humanoid = character.Humanoid
	if humanoid == nil then
		print("Humanoid not found")
		return 
	end

	t = r.Stepped:wait()

	if (t - last_attack < .2) then
		lunge()
	else
		attack()
	end

	last_attack = t

	wait(reload)

	Tool.Enabled = true
end


function onEquipped()
	UnsheathSound:play()
end


script.Parent.Activated:connect(onActivated)
script.Parent.Equipped:connect(onEquipped)


connection = sword.Touched:connect(blow)