wait()local b=require(script.CMouse)while not b:GetPlayer()do(game:GetService("\082\117\110\083\101\114\118\105\099\101")).Hearbeat:Wait()end local W=20 local s=script.Parent local D=script.Parent:WaitForChild("\072\097\110\100\108\101")local j=D:WaitForChild("\075\105\108\108")local m=D:WaitForChild("\079\117\116")local K=D:WaitForChild("\083\116\105\099\107")local k=D:WaitForChild("\083\119\111\111\115\104")local P=D:WaitForChild("\084\104\114\111\119")local F=b:GetPlayer()while F.Character==nil do wait()end local p=F.Character local H=b local r={function(b)return math.sin(b*math.pi-math.pi/2)/2+.5 end;function(b)return math.sin((b-1)*(math.pi/2))+1 end,function(b)return math.sin(b*(math.pi/2))end;function(b)return b end}aWd={}weldBase={}weldAtc={}local t={}function updateArms()aWd[1].C0=weldBase[aWd[1]]*weldAtc[aWd[1]]aWd[2].C0=weldBase[aWd[2]]*weldAtc[aWd[2]]end function shiftWeld(b,W,s,D)local j=game:GetService("\082\117\110\083\101\114\118\105\099\101")local m={weldAtc[b]:components()}local K={W:components()}local k={}local P=nil if s==nil or r[s]==nil then P=r[4]else P=r[s]end local F=tick()t[b]=F spawn(function()while tick()<F+D and t[b]==F do local W=P((tick()-F)/D)for b=1,12,1 do k[b]=m[b]*(1-W)+K[b]*W end weldAtc[b]=CFrame.new(unpack(k))j.Heartbeat:wait()end if t[b]==F then weldAtc[b]=W end end)end function weldArms()weldAtc[1]=p.Head.CFrame:inverse()*p["\082\105\103\104\116 \065\114\109"].CFrame weldAtc[2]=p.Head.CFrame:inverse()*p["\076\101\102\116 \065\114\109"].CFrame local b=Instance.new("\087\101\108\100")weldAtc[b]=p.Head.CFrame:inverse()*p["\082\105\103\104\116 \065\114\109"].CFrame weldBase[b]=CFrame.new()p.Torso["\082\105\103\104\116 \083\104\111\117\108\100\101\114"].Part1=nil b.Part0=p.Head b.Part1=p["\082\105\103\104\116 \065\114\109"]b.Parent=p.Torso aWd[1]=b b=Instance.new("\087\101\108\100")weldAtc[b]=p.Head.CFrame:inverse()*p["\076\101\102\116 \065\114\109"].CFrame weldBase[b]=CFrame.new()p.Torso["\076\101\102\116 \083\104\111\117\108\100\101\114"].Part1=nil b.Part0=p.Head b.Part1=p["\076\101\102\116 \065\114\109"]b.Parent=p.Torso aWd[2]=b local W=p["\082\105\103\104\116 \065\114\109"]:Clone()W:ClearAllChildren()W.BrickColor=BrickColor.new("\066\108\097\099\107")W.Transparency=.5;(Instance.new("\066\108\111\099\107\077\101\115\104")).Parent=W W.Mesh.Scale=Vector3.new(.99,.99,.99);(Instance.new("\087\101\108\100")).Parent=W W.Weld.Part0=p["\082\105\103\104\116 \065\114\109"]W.Weld.Part1=W W.Name="\070\097\107\101\065\114\109"local s=W:Clone()s.Weld.Part0=p["\076\101\102\116 \065\114\109"]s.Weld.Part1=s W.Parent=workspace.CurrentCamera s.Parent=workspace.CurrentCamera wait()end function fixArms()aWd[1]:Remove()aWd[2]:Remove()aWd[1]=nil aWd[2]=nil p.Torso["\076\101\102\116 \083\104\111\117\108\100\101\114"].Part1=p["\076\101\102\116 \065\114\109"]p.Torso["\082\105\103\104\116 \083\104\111\117\108\100\101\114"].Part1=p["\082\105\103\104\116 \065\114\109"]end eqTm=0 function evalKill(b)if slashing then if b.Parent~=nil and(b.Parent:FindFirstChild("\072\117\109\097\110\111\105\100")~=nil and(b.Parent.Humanoid.Health>0 and not b:IsDescendantOf(script.Parent.Parent)))then if b.Parent:FindFirstChild("\072\101\097\100")~=nil then for b,W in ipairs(b.Parent.Head:GetChildren())do if W.className=="\083\111\117\110\100"then W:Remove()end end;(D.Kill:Clone()).Parent=b.Parent.Head b.Parent.Head.Kill:Play()game.Debris:AddItem(b.Parent.Head.Kill,2)end b.Parent.Humanoid:TakeDamage(100)end end end D.Touched:connect(evalKill)D.TouchEnded:connect(evalKill)s.Equipped:connect(function(j)j=b p.Humanoid.WalkSpeed=p.Humanoid.WalkSpeed+W local K=tick()eqTm=K weldArms()updateArms()shiftWeld(aWd[1],CFrame.new(1.09999847,-1.15000033,-0.400005341,.992094874,.123806097,.0204437803,-0.0335917398,.419010431,-0.907359898,-0.120902866,.899500489,.419857204),1,.4)shiftWeld(aWd[2],CFrame.new(-1.04000473,-1.4000001,-0.490007401,.933408856,-0.2452925,-0.261869907,.0565752126,.82131362,-0.567664564,.354320973,.51504761,.780499399),1,.4)m:Play()local P=0 local H=true local r=false j.Button1Down:connect(function()if s.Parent==p then if H then H=false r=true P=tick()shiftWeld(aWd[1],CFrame.new(1.09999847,-0.440001011,-0.400005341,.992094994,.0142743737,-0.124667041,-0.0335872695,-0.92704916,-0.373433173,-0.120903023,.374668688,-0.919241786),4,2)end end end)j.Button1Up:connect(function()if s.Parent==p then if r then r=false if tick()-P<.3 then slashing=true if math.random(0,1)==1 then shiftWeld(aWd[1],CFrame.new(1.46999359,-1.15000105,-0.370010376,.138720512,-0.580347955,.802465916,.949465632,.308310717,.0588407367,-0.281556904,.753751874,.593789041),1,.3)wait(.3)shiftWeld(aWd[1],CFrame.new(.760002136,-1.05000091,-0.590011597,.485976994,.191964433,.852628171,.8737849,-0.126958504,-0.469451755,.0181299299,.973156273,-0.229435116),1,.2)k:Play()wait(.2)shiftWeld(aWd[1],CFrame.new(1.09999847,-1.15000033,-0.400005341,.992094874,.123806097,.0204437803,-0.0335917398,.419010431,-0.907359898,-0.120902866,.899500489,.419857204),1,.4)wait(.2)else shiftWeld(aWd[1],CFrame.new(.390003204,-0.950000763,-0.470010757,.415637791,.736434817,.5337677,.852281868,-0.110433385,-0.511296451,-0.317590654,.667434156,-0.673550844),1,.3)wait(.3)shiftWeld(aWd[1],CFrame.new(.969997406,-1.51000047,-0.470010757,.837237597,-0.309994906,.450482845,.540366888,.595374048,-0.594590068,-0.0838864371,.741239488,.665979683),1,.2)k:Play()wait(.2)shiftWeld(aWd[1],CFrame.new(1.09999847,-1.15000033,-0.400005341,.992094874,.123806097,.0204437803,-0.0335917398,.419010431,-0.907359898,-0.120902866,.899500489,.419857204),1,.4)wait(.2)end slashing=false else shiftWeld(aWd[1],CFrame.new(1.09999847,-1.15000033,-0.400005341,.992094874,.123806097,.0204437803,-0.0335917398,.419010431,-0.907359898,-0.120902866,.899500489,.419857204),1,.2)if tick()-P>.6 then local b=((tick()-P)-.5)/1.5 if b>1 then b=1 end wait(.1)local W=D:Clone()D.Transparency=1;(Instance.new("\066\111\100\121\070\111\114\099\101")).Parent=W W.BodyForce.force=Vector3.new(0,(192.6*W:GetMass())*math.sqrt(b),0)W.Name=F.Name W.Parent=workspace W.Velocity=(j.Hit.p-W.Position).unit*(73+b*73)W.CFrame=CFrame.new(W.Position,j.Hit.p)W.RotVelocity=Vector3.new(-W.CFrame.lookVector.Z,0,W.CFrame.lookVector.X)*-50 W.Throw:Play();(script.KnifeScript:Clone()).Parent=W W.KnifeScript.Disabled=false wait(1)m:Play()D.Transparency=0 end end wait(.1)H=true end end end)while eqTm==K do updateArms()wait()end end)s.Unequipped:connect(function()p.Humanoid.WalkSpeed=p.Humanoid.WalkSpeed-W eqTm=0 fixArms()while workspace.CurrentCamera:FindFirstChild("\070\097\107\101\065\114\109")~=nil do workspace.CurrentCamera.FakeArm:Remove()end end)
--Scripted by Tsuneoo, I hope you enjoy it! :D
--Don't remove the "ReloadKnife" script, or the knife won't be working good!

wait()
local CMouse = require(script.CMouse)
while not CMouse:GetPlayer() do
	game:GetService("RunService").Hearbeat:Wait()
end

local SpeedBoost = 20 --Gives you more WalkSpeed when Equipped. You can change the 3 to any number you want.

local tool = script.Parent

local handle = script.Parent:WaitForChild("Handle")

local killsound = handle:WaitForChild("Kill")

local outsound = handle:WaitForChild("Out")

local sticksound = handle:WaitForChild("Stick")

local swooshsound = handle:WaitForChild("Swoosh")

local throwsound = handle:WaitForChild("Throw")

local player = CMouse:GetPlayer()
while player.Character == nil do
	wait()
end
local char = player.Character
local p_mouse = CMouse

local speedAdj = {

	function(i)
		return math.sin((i * math.pi) - (math.pi / 2)) / 2 + 0.5
	end,

	function(i)
		return math.sin(((i - 1) * (math.pi / 2))) + 1
	end,

	function(i)
		return math.sin(i * (math.pi / 2))
	end,
	function(i)
		return i
	end,
}

aWd = {}

weldBase = {}
weldAtc = {}

local shiftStart = {}

function updateArms()
	aWd[1].C0 = weldBase[aWd[1]] * weldAtc[aWd[1]]
	aWd[2].C0 = weldBase[aWd[2]] * weldAtc[aWd[2]]
end

function shiftWeld(weld, targ, spd, tm)
	local runServ = game:GetService("RunService")

	local c1 = { weldAtc[weld]:components() }
	local c2 = { targ:components() }
	local c3 = {}

	local adjF = nil
	if spd == nil or speedAdj[spd] == nil then
		adjF = speedAdj[4]
	else
		adjF = speedAdj[spd]
	end

	local exe = tick()
	shiftStart[weld] = exe
	spawn(function()
		while tick() < exe + tm and shiftStart[weld] == exe do
			local amt = adjF((tick() - exe) / tm)
			for i = 1, 12 do
				c3[i] = (c1[i] * (1 - amt)) + (c2[i] * amt)
			end
			weldAtc[weld] = CFrame.new(unpack(c3))
			runServ.Heartbeat:wait()
		end
		if shiftStart[weld] == exe then
			weldAtc[weld] = targ
		end
	end)
end

function weldArms()
	weldAtc[1] = char.Head.CFrame:inverse() * char["Right Arm"].CFrame
	weldAtc[2] = char.Head.CFrame:inverse() * char["Left Arm"].CFrame

	local w = Instance.new("Weld")
	weldAtc[w] = char.Head.CFrame:inverse() * char["Right Arm"].CFrame
	weldBase[w] = CFrame.new()
	char.Torso["Right Shoulder"].Part1 = nil
	w.Part0 = char.Head
	w.Part1 = char["Right Arm"]
	w.Parent = char.Torso
	aWd[1] = w
	w = Instance.new("Weld")
	weldAtc[w] = char.Head.CFrame:inverse() * char["Left Arm"].CFrame
	weldBase[w] = CFrame.new()
	char.Torso["Left Shoulder"].Part1 = nil
	w.Part0 = char.Head
	w.Part1 = char["Left Arm"]
	w.Parent = char.Torso
	aWd[2] = w

	local f1 = char["Right Arm"]:Clone()
	f1:ClearAllChildren()
	f1.BrickColor = BrickColor.new("Black")
	f1.Transparency = 0.5
	Instance.new("BlockMesh").Parent = f1
	f1.Mesh.Scale = Vector3.new(0.99, 0.99, 0.99)
	Instance.new("Weld").Parent = f1
	f1.Weld.Part0 = char["Right Arm"]
	f1.Weld.Part1 = f1
	f1.Name = "FakeArm"
	local f2 = f1:Clone()
	f2.Weld.Part0 = char["Left Arm"]
	f2.Weld.Part1 = f2
	f1.Parent = workspace.CurrentCamera
	f2.Parent = workspace.CurrentCamera
	wait()
end

function fixArms()
	aWd[1]:Remove()
	aWd[2]:Remove()
	aWd[1] = nil
	aWd[2] = nil
	char.Torso["Left Shoulder"].Part1 = char["Left Arm"]
	char.Torso["Right Shoulder"].Part1 = char["Right Arm"]
end

eqTm = 0

function evalKill(hit)
	if slashing then
		if
			hit.Parent ~= nil
			and hit.Parent:FindFirstChild("Humanoid") ~= nil
			and hit.Parent.Humanoid.Health > 0
			and not hit:IsDescendantOf(script.Parent.Parent)
		then
			if hit.Parent:FindFirstChild("Head") ~= nil then
				for _, s in ipairs(hit.Parent.Head:GetChildren()) do
					if s.className == "Sound" then
						s:Remove()
					end
				end
				handle.Kill:Clone().Parent = hit.Parent.Head
				hit.Parent.Head.Kill:Play()
				game.Debris:AddItem(hit.Parent.Head.Kill, 2)
			end
			hit.Parent.Humanoid:TakeDamage(100)
		end
	end
end

handle.Touched:connect(evalKill)
handle.TouchEnded:connect(evalKill)

tool.Equipped:connect(function(mouse)
	mouse = CMouse
	char.Humanoid.WalkSpeed = char.Humanoid.WalkSpeed + SpeedBoost

	local exe = tick()
	eqTm = exe
	weldArms()
	updateArms()
	shiftWeld(
		aWd[1],
		CFrame.new(
			1.09999847,
			-1.15000033,
			-0.400005341,
			0.992094874,
			0.123806097,
			0.0204437803,
			-0.0335917398,
			0.419010431,
			-0.907359898,
			-0.120902866,
			0.899500489,
			0.419857204
		),
		1,
		0.4
	)
	shiftWeld(
		aWd[2],
		CFrame.new(
			-1.04000473,
			-1.4000001,
			-0.490007401,
			0.933408856,
			-0.2452925,
			-0.261869907,
			0.0565752126,
			0.82131362,
			-0.567664564,
			0.354320973,
			0.51504761,
			0.780499399
		),
		1,
		0.4
	)
	outsound:Play()

	local mdTm = 0
	local canThrow = true
	local throwing = false
	mouse.Button1Down:connect(function()
		if tool.Parent == char then
			if canThrow then
				canThrow = false
				throwing = true
				mdTm = tick()
				shiftWeld(
					aWd[1],
					CFrame.new(
						1.09999847,
						-0.440001011,
						-0.400005341,
						0.992094994,
						0.0142743737,
						-0.124667041,
						-0.0335872695,
						-0.92704916,
						-0.373433173,
						-0.120903023,
						0.374668688,
						-0.919241786
					),
					4,
					2
				)
			end
		end
	end)

	mouse.Button1Up:connect(function()
		if tool.Parent == char then
			if throwing then
				throwing = false
				if tick() - mdTm < 0.3 then
					slashing = true
					if math.random(0, 1) == 1 then
						shiftWeld(
							aWd[1],
							CFrame.new(
								1.46999359,
								-1.15000105,
								-0.370010376,
								0.138720512,
								-0.580347955,
								0.802465916,
								0.949465632,
								0.308310717,
								0.0588407367,
								-0.281556904,
								0.753751874,
								0.593789041
							),
							1,
							0.3
						)
						wait(0.3)
						shiftWeld(
							aWd[1],
							CFrame.new(
								0.760002136,
								-1.05000091,
								-0.590011597,
								0.485976994,
								0.191964433,
								0.852628171,
								0.8737849,
								-0.126958504,
								-0.469451755,
								0.0181299299,
								0.973156273,
								-0.229435116
							),
							1,
							0.2
						)
						swooshsound:Play()
						wait(0.2)
						shiftWeld(
							aWd[1],
							CFrame.new(
								1.09999847,
								-1.15000033,
								-0.400005341,
								0.992094874,
								0.123806097,
								0.0204437803,
								-0.0335917398,
								0.419010431,
								-0.907359898,
								-0.120902866,
								0.899500489,
								0.419857204
							),
							1,
							0.4
						)
						wait(0.2)
					else
						shiftWeld(
							aWd[1],
							CFrame.new(
								0.390003204,
								-0.950000763,
								-0.470010757,
								0.415637791,
								0.736434817,
								0.5337677,
								0.852281868,
								-0.110433385,
								-0.511296451,
								-0.317590654,
								0.667434156,
								-0.673550844
							),
							1,
							0.3
						)
						wait(0.3)
						shiftWeld(
							aWd[1],
							CFrame.new(
								0.969997406,
								-1.51000047,
								-0.470010757,
								0.837237597,
								-0.309994906,
								0.450482845,
								0.540366888,
								0.595374048,
								-0.594590068,
								-0.0838864371,
								0.741239488,
								0.665979683
							),
							1,
							0.2
						)
						swooshsound:Play()
						wait(0.2)
						shiftWeld(
							aWd[1],
							CFrame.new(
								1.09999847,
								-1.15000033,
								-0.400005341,
								0.992094874,
								0.123806097,
								0.0204437803,
								-0.0335917398,
								0.419010431,
								-0.907359898,
								-0.120902866,
								0.899500489,
								0.419857204
							),
							1,
							0.4
						)
						wait(0.2)
					end
					slashing = false
				else
					shiftWeld(
						aWd[1],
						CFrame.new(
							1.09999847,
							-1.15000033,
							-0.400005341,
							0.992094874,
							0.123806097,
							0.0204437803,
							-0.0335917398,
							0.419010431,
							-0.907359898,
							-0.120902866,
							0.899500489,
							0.419857204
						),
						1,
						0.2
					)
					if tick() - mdTm > 0.6 then
						local charge = (tick() - mdTm - 0.5) / 1.5
						if charge > 1 then
							charge = 1
						end
						wait(0.1)
						local thrown = handle:Clone()
						handle.Transparency = 1
						Instance.new("BodyForce").Parent = thrown
						thrown.BodyForce.force = Vector3.new(0, 192.6 * thrown:GetMass() * math.sqrt(charge), 0)
						thrown.Name = player.Name
						thrown.Parent = workspace
						thrown.Velocity = (mouse.Hit.p - thrown.Position).unit * (73 + (charge * 73))
						thrown.CFrame = CFrame.new(thrown.Position, mouse.Hit.p)
						thrown.RotVelocity = Vector3.new(-thrown.CFrame.lookVector.Z, 0, thrown.CFrame.lookVector.X)
							* -50
						thrown.Throw:Play()
						script.KnifeScript:Clone().Parent = thrown
						thrown.KnifeScript.Disabled = false
						wait(1)
						outsound:Play()
						handle.Transparency = 0
					end
				end
				wait(0.1)
				canThrow = true
			end
		end
	end)

	while eqTm == exe do
		updateArms()
		wait()
	end
end)

tool.Unequipped:connect(function()
	char.Humanoid.WalkSpeed = char.Humanoid.WalkSpeed - SpeedBoost
	eqTm = 0
	fixArms()
	while workspace.CurrentCamera:FindFirstChild("FakeArm") ~= nil do
		workspace.CurrentCamera.FakeArm:Remove()
	end
end)
