function checkTeams(m)return not(sameTeam(m)and not FriendlyFire)end function getKnife()local m=Handle:clone()m.Transparency=0 m.Hit.Pitch=math.random(90,110)/100 local D=Instance.new("\066\111\100\121\070\111\114\099\101")D.force=(Vector3.new(0,196.2,0)*m:GetMass())*.8 D.Parent=m local j=Tool.Projectile:Clone()j.Disabled=false j.Parent=m return m end function equippedLoop()while Equipped do local m=Heartbeat:wait()if AttackPower<1 then AttackPower=AttackPower+m*AttackRecharge if AttackPower>1 then AttackPower=1 end end Handle.Fire.Enabled=AttackPower>=1 Handle.Transparency=1-AttackPower end end function onLeftDown(m)local D=getKnife()D.CFrame=CFrame.new(Handle.Position,m)D.Velocity=(D.CFrame.lookVector*AttackSpeed)*AttackPower local j=AttackDamage*AttackPower local G G=D.Touched:connect(function(m)if m:IsDescendantOf(Tool.Parent)then return end if contains(Knives,m)then return end if m.Parent and m.Parent:FindFirstChild("\072\117\109\097\110\111\105\100")then local G=m.Parent.Humanoid if checkTeams(G)then tagHuman(G)G:TakeDamage(j)D.Hit:Play()end end D.Projectile:Destroy()local b=Instance.new("\087\101\108\100")b.Part0=m b.Part1=D b.C0=m.CFrame:toObjectSpace(D.CFrame)b.Parent=b.Part0 G:disconnect()end)table.insert(Knives,D)D.Parent=workspace;(game:GetService("\068\101\098\114\105\115")):AddItem(D,3.5)delay(2,function()D.Transparency=1 D.Fire.Enabled=false end)Remote:FireClient(getPlayer(),"\080\108\097\121\065\110\105\109\097\116\105\111\110","\084\104\114\111\119")Handle.Throw.Pitch=.8+.4*AttackPower Handle.Throw:Play()AttackPower=0 end function onRemote(m,D,...)if m~=getPlayer()then return end if D=="\076\101\102\116\068\111\119\110"then onLeftDown(...)end end function onEquip()Equipped=true equippedLoop()end function onUnequip()Equipped=false end Remote.OnServerEvent:connect(onRemote)Tool.Equipped:connect(onEquip)Tool.Unequipped:connect(onUnequip)
--use this to determine if you want this human to be harmed or not, returns boolean
function checkTeams(otherHuman)
	return not (sameTeam(otherHuman) and not FriendlyFire)
end

function getKnife()
	local knife = Handle:clone()
	knife.Transparency = 0
	knife.Hit.Pitch = math.random(90, 110) / 100

	local lift = Instance.new("BodyForce")
	lift.force = Vector3.new(0, 196.2, 0) * knife:GetMass() * 0.8
	lift.Parent = knife

	local proj = Tool.Projectile:Clone()
	proj.Disabled = false
	proj.Parent = knife

	return knife
end

function equippedLoop()
	while Equipped do
		local dt = Heartbeat:wait()

		if AttackPower < 1 then
			AttackPower = AttackPower + dt * AttackRecharge
			if AttackPower > 1 then
				AttackPower = 1
			end
		end

		Handle.Fire.Enabled = AttackPower >= 1
		Handle.Transparency = 1 - AttackPower
	end
end

function onLeftDown(mousePos)
	local knife = getKnife()
	knife.CFrame = CFrame.new(Handle.Position, mousePos)
	knife.Velocity = knife.CFrame.lookVector * AttackSpeed * AttackPower
	local damage = AttackDamage * AttackPower
	local touched
	touched = knife.Touched:connect(function(part)
		if part:IsDescendantOf(Tool.Parent) then
			return
		end
		if contains(Knives, part) then
			return
		end

		if part.Parent and part.Parent:FindFirstChild("Humanoid") then
			local human = part.Parent.Humanoid
			if checkTeams(human) then
				tagHuman(human)
				human:TakeDamage(damage)
				knife.Hit:Play()
			end
		end

		knife.Projectile:Destroy()

		local w = Instance.new("Weld")
		w.Part0 = part
		w.Part1 = knife
		w.C0 = part.CFrame:toObjectSpace(knife.CFrame)
		w.Parent = w.Part0

		touched:disconnect()
	end)
	table.insert(Knives, knife)
	knife.Parent = workspace

	game:GetService("Debris"):AddItem(knife, 3.5)
	delay(2, function()
		knife.Transparency = 1
		knife.Fire.Enabled = false
	end)

	Remote:FireClient(getPlayer(), "PlayAnimation", "Throw")

	Handle.Throw.Pitch = 0.8 + 0.4 * AttackPower
	Handle.Throw:Play()

	AttackPower = 0
end

function onRemote(player, func, ...)
	if player ~= getPlayer() then
		return
	end

	if func == "LeftDown" then
		onLeftDown(...)
	end
end

function onEquip()
	Equipped = true
	equippedLoop()
end

function onUnequip()
	Equipped = false
end

Remote.OnServerEvent:connect(onRemote)
Tool.Equipped:connect(onEquip)
Tool.Unequipped:connect(onUnequip)
