Tool=script.Parent Handle=Tool:WaitForChild("\072\097\110\100\108\101")Players=game:GetService("\080\108\097\121\101\114\115")Debris=game:GetService("\068\101\098\114\105\115")RunService=game:GetService("\082\117\110\083\101\114\118\105\099\101")RbxUtility=LoadLibrary("\082\098\120\085\116\105\108\105\116\121")Create=RbxUtility.Create black=BrickColor.new("\082\101\097\108\108\121 \098\108\097\099\107")BaseUrl="\104\116\116\112\058\047\047\119\119\119\046\114\111\098\108\111\120\046\099\111\109\047\097\115\115\101\116\047\063\105\100\061"LastAttack=0 Lunging=false Grips={Up=CFrame.new(0,-2.3,0,1,0,0,0,1,0,0,0,1);Out=CFrame.new(0,-2.3,0,1,0,0,0,0,-1,0,1,0)}Sounds={Unsheath=Handle:WaitForChild("\085\110\115\104\101\097\116\104"),Slash=Handle:WaitForChild("\083\108\097\115\104");Lunge=Handle:WaitForChild("\076\117\110\103\101")}BasePart=(Create("\080\097\114\116"))({Material=Enum.Material.Plastic;Shape=Enum.PartType.Block;TopSurface=Enum.SurfaceType.Smooth;BottomSurface=Enum.SurfaceType.Smooth,FormFactor=Enum.FormFactor.Custom;Size=Vector3.new(.2,.2,.2),CanCollide=true;Locked=true})SoulFire=(Create("\070\105\114\101"))({Name="\070\105\114\101";Color=Color3.new(1.0,.0,.0);SecondaryColor=Color3.new(.33333333333333,.0,.0);Heat=18,Size=2.5,Enabled=true})SoulLight=(Create("\080\111\105\110\116\076\105\103\104\116"))({Name="\076\105\103\104\116";Color=SoulFire.Color;Brightness=35;Range=4;Shadows=false,Enabled=true})Gravity=196.2 SwordDamage=25 ToolEquipped=false ServerControl=Tool:FindFirstChild("\083\101\114\118\101\114\067\111\110\116\114\111\108")or(Create("\082\101\109\111\116\101\070\117\110\099\116\105\111\110"))({Name="\083\101\114\118\101\114\067\111\110\116\114\111\108";Parent=Tool})ClientControl=Tool:FindFirstChild("\067\108\105\101\110\116\067\111\110\116\114\111\108")or(Create("\082\101\109\111\116\101\070\117\110\099\116\105\111\110"))({Name="\067\108\105\101\110\116\067\111\110\116\114\111\108";Parent=Tool})Tool.Grip=Grips.Up Tool.Enabled=true function IsTeamMate(Y,i)local U=Y.TeamColor local D=i.TeamColor return not(U~=D or U==black and D==black)end function TagHumanoid(Y,i)local U=(Create("\079\098\106\101\099\116\086\097\108\117\101"))({Name="\099\114\101\097\116\111\114",Value=i})Debris:AddItem(U,2)U.Parent=Y end function UntagHumanoid(Y)for Y,i in pairs(Y:GetChildren())do if i:IsA("\079\098\106\101\099\116\086\097\108\117\101")and i.Name=="\099\114\101\097\116\111\114"then i:Destroy()end end end function Blow(Y,i)local U U=Y.Touched:connect(function(Y)if not Y or not Y.Parent or not CheckIfAlive()then return end local U=Character:FindFirstChild("\082\105\103\104\116 \065\114\109")if not U then return end local D=U:FindFirstChild("\082\105\103\104\116\071\114\105\112")if not D or D.Part0~=Handle and D.Part1~=Handle then return end local I=Y.Parent if I==Character then return end local k=I:FindFirstChild("\072\117\109\097\110\111\105\100")if not k or k.Health==0 then return end local q=Players:GetPlayerFromCharacter(I)if q and(q==Player or IsTeamMate(Player,q))then return end local d=k.Health-i UntagHumanoid(k)TagHumanoid(k,Player)k:TakeDamage(i)Spawn(function()k.WalkSpeed=9 wait(1.25)k.WalkSpeed=16 end)end)return U end function CreateTrail(Y,i)local U local D=(Create("\073\110\116\086\097\108\117\101"))({Value=0})local I=(Create("\066\111\111\108\086\097\108\117\101"))({Value=true})Spawn(function()while I.Value and(ToolEquipped and CheckIfAlive())do local Y=Handle:Clone()Y.Name="\069\102\102\101\099\116"Y.CanCollide=false Y.Anchored=true Blow(Y,5)D.Value=D.Value+1 Debris:AddItem(Y,1)Y.Parent=game:GetService("\087\111\114\107\115\112\097\099\101")Y.CFrame=Handle.CFrame wait(i)end end)return{Connection=U,Count=D,Enabled=I}end function Lunge()Lunging=true local Y=InvokeClient("\077\111\117\115\101\080\111\115\105\116\105\111\110")if not Y then return end local i=Y.Position local U=(CFrame.new(Torso.Position,i)).lookVector*Vector3.new(1,0,1)Tool.Grip=Grips.Out Sounds.Lunge:Play()local D=(Create("\083\116\114\105\110\103\086\097\108\117\101"))({Name="\116\111\111\108\097\110\105\109";Value="\076\117\110\103\101";Parent=Tool})if U.Magnitude>.01 then U=U.Unit local Y=(Create("\066\111\100\121\086\101\108\111\099\105\116\121"))({P=100000;maxForce=Vector3.new(100000,0,100000);velocity=U*50})Debris:AddItem(Y,.75)Y.Parent=Torso Torso.CFrame=CFrame.new(Torso.Position,i*Vector3.new(1,0,1)+Vector3.new(0,Torso.Position.Y,0))end Spawn(function()local Y=CreateTrail(5,.08)while Lunging and(CheckIfAlive()and ToolEquipped)do RunService.Stepped:wait()end Y.Enabled.Value=false end)wait(.75)Lunging=false Tool.Grip=Grips.Up wait(.5)end function Attack()Tool.Grip=Grips.Up Sounds.Slash:Play()local Y=(Create("\083\116\114\105\110\103\086\097\108\117\101"))({Name="\116\111\111\108\097\110\105\109";Value="\083\108\097\115\104";Parent=Tool})Spawn(function()local Y=CreateTrail(5,.06)while Y.Count.Value<4 and(CheckIfAlive()and ToolEquipped)do RunService.Stepped:wait()end Y.Enabled.Value=false end)Tool.Grip=Grips.Up end
--Rescripted by Luckymaxer

Tool = script.Parent
Handle = Tool:WaitForChild("Handle")

Players = game:GetService("Players")
Debris = game:GetService("Debris")
RunService = game:GetService("RunService")

RbxUtility = LoadLibrary("RbxUtility")
Create = RbxUtility.Create

black = BrickColor.new("Really black")

BaseUrl = "http://www.roblox.com/asset/?id="
LastAttack = 0
Lunging = false

Grips = {
	Up = CFrame.new(0, -2.3, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1),
	Out = CFrame.new(0, -2.3, 0, 1, 0, 0, 0, 0, -1, -0, 1, 0),
}

Sounds = {
	Unsheath = Handle:WaitForChild("Unsheath"),
	Slash = Handle:WaitForChild("Slash"),
	Lunge = Handle:WaitForChild("Lunge"),
}

BasePart = Create("Part")({
	Material = Enum.Material.Plastic,
	Shape = Enum.PartType.Block,
	TopSurface = Enum.SurfaceType.Smooth,
	BottomSurface = Enum.SurfaceType.Smooth,
	FormFactor = Enum.FormFactor.Custom,
	Size = Vector3.new(0.2, 0.2, 0.2),
	CanCollide = true,
	Locked = true,
})

SoulFire = Create("Fire")({
	Name = "Fire",
	Color = Color3.new((255 / 255), (0 / 255), (0 / 255)),
	SecondaryColor = Color3.new((85 / 255), (0 / 255), (0 / 255)),
	Heat = 18,
	Size = 2.5,
	Enabled = true,
})
SoulLight = Create("PointLight")({
	Name = "Light",
	Color = SoulFire.Color,
	Brightness = 35,
	Range = 4,
	Shadows = false,
	Enabled = true,
})

Gravity = 196.20

SwordDamage = 25

ToolEquipped = false

ServerControl = (
	Tool:FindFirstChild("ServerControl") or Create("RemoteFunction")({
		Name = "ServerControl",
		Parent = Tool,
	})
)

ClientControl = (
	Tool:FindFirstChild("ClientControl") or Create("RemoteFunction")({
		Name = "ClientControl",
		Parent = Tool,
	})
)

Tool.Grip = Grips.Up
Tool.Enabled = true

function IsTeamMate(Player1, Player2)
	local myteam = Player1.TeamColor
	local theirteam = Player2.TeamColor
	return not (myteam ~= theirteam or (myteam == black and theirteam == black))
end

function TagHumanoid(humanoid, player)
	local Creator_Tag = Create("ObjectValue")({
		Name = "creator",
		Value = player,
	})
	Debris:AddItem(Creator_Tag, 2)
	Creator_Tag.Parent = humanoid
end

function UntagHumanoid(humanoid)
	for i, v in pairs(humanoid:GetChildren()) do
		if v:IsA("ObjectValue") and v.Name == "creator" then
			v:Destroy()
		end
	end
end

function Blow(Part, Damage)
	local PartTouched
	PartTouched = Part.Touched:connect(function(Hit)
		if not Hit or not Hit.Parent or not CheckIfAlive() then
			return
		end
		local RightArm = Character:FindFirstChild("Right Arm")
		if not RightArm then
			return
		end
		local RightGrip = RightArm:FindFirstChild("RightGrip")
		if not RightGrip or (RightGrip.Part0 ~= Handle and RightGrip.Part1 ~= Handle) then
			return
		end
		local character = Hit.Parent
		if character == Character then
			return
		end
		local humanoid = character:FindFirstChild("Humanoid")
		if not humanoid or humanoid.Health == 0 then
			return
		end
		local player = Players:GetPlayerFromCharacter(character)
		if player and (player == Player or IsTeamMate(Player, player)) then
			return
		end
		local HealthAfter = (humanoid.Health - Damage)
		UntagHumanoid(humanoid)
		TagHumanoid(humanoid, Player)
		humanoid:TakeDamage(Damage)
		Spawn(function()
			humanoid.WalkSpeed = 9
			wait(1.25)
			humanoid.WalkSpeed = 16
		end)
	end)
	return PartTouched
end

function CreateTrail(Damage, TrailRate)
	local TrailLoop
	local Count = Create("IntValue")({
		Value = 0,
	})
	local Enabled = Create("BoolValue")({
		Value = true,
	})
	Spawn(function()
		while Enabled.Value and ToolEquipped and CheckIfAlive() do
			local TrailPart = Handle:Clone()
			TrailPart.Name = "Effect"
			TrailPart.CanCollide = false
			TrailPart.Anchored = true
			Blow(TrailPart, 5)
			Count.Value = (Count.Value + 1)
			Debris:AddItem(TrailPart, 1)
			TrailPart.Parent = game:GetService("Workspace")
			TrailPart.CFrame = Handle.CFrame
			wait(TrailRate)
		end
	end)
	return { Connection = TrailLoop, Count = Count, Enabled = Enabled }
end

function Lunge()
	Lunging = true
	local Target = InvokeClient("MousePosition")
	if not Target then
		return
	end
	local TargetPosition = Target.Position
	local Direction = (CFrame.new(Torso.Position, TargetPosition).lookVector * Vector3.new(1, 0, 1))
	Tool.Grip = Grips.Out
	Sounds.Lunge:Play()
	local Anim = Create("StringValue")({
		Name = "toolanim",
		Value = "Lunge",
		Parent = Tool,
	})
	if Direction.Magnitude > 0.01 then
		Direction = Direction.Unit
		local NewBV = Create("BodyVelocity")({
			P = 100000,
			maxForce = Vector3.new(100000, 0, 100000),
			velocity = (Direction * 50),
		})
		Debris:AddItem(NewBV, 0.75)
		NewBV.Parent = Torso
		Torso.CFrame =
			CFrame.new(Torso.Position, (TargetPosition * Vector3.new(1, 0, 1) + Vector3.new(0, Torso.Position.Y, 0)))
	end
	Spawn(function()
		local LungeTrail = CreateTrail(5, 0.08)
		while Lunging and CheckIfAlive() and ToolEquipped do
			RunService.Stepped:wait()
		end
		LungeTrail.Enabled.Value = false
	end)
	wait(0.75)
	Lunging = false
	Tool.Grip = Grips.Up
	wait(0.5)
end

function Attack()
	Tool.Grip = Grips.Up
	Sounds.Slash:Play()
	local Anim = Create("StringValue")({
		Name = "toolanim",
		Value = "Slash",
		Parent = Tool,
	})
	Spawn(function()
		local AttackTrail = CreateTrail(5, 0.06)
		while AttackTrail.Count.Value < 4 and CheckIfAlive() and ToolEquipped do
			RunService.Stepped:wait()
		end
		AttackTrail.Enabled.Value = false
	end)
	Tool.Grip = Grips.Up
end
