--[[
function SetPlayerMaxHealth(humanoid, health)
	if not humanoid or not health then
		return
	end
	local Ratio = (humanoid.Health / humanoid.MaxHealth)
	humanoid.MaxHealth = health
	humanoid.Health = (Ratio * humanoid.MaxHealth)
end
]]



function ConsumeTarget(character, number)
	local Part = BasePart:Clone()
	Part.Name = "Effect"
	Part.Transparency = 1
	Part.Size = Vector3.new(0.5, 0.5, 0.5)
	Part.CanCollide = false
	local Fire = SoulFire:Clone()
	Fire.Size = 1
	Fire.Enabled = true
	Fire.Parent = Part
	local Light = SoulLight:Clone()
	Light.Color = Fire.Color
	Light.Enabled = true
	Light.Parent = Part
	if number and number < 3 then
		number = 3
	end
	if character then
		local torso = character:FindFirstChild("Torso")
		if torso then
			number = (number or 4)
			for i = 1, number do
				local Part2 = Part:Clone()
				Part2.CFrame = (Torso.CFrame + Torso.CFrame.lookVector * 4)
				local Propulsion = Create("RocketPropulsion"){
					Target = torso,
					TargetOffset = Vector3.new(0, 2, 0),
					ThrustP = 500,
					ThrustD = 5,
					MaxSpeed = 150,
					MaxTorque = Vector3.new(4000000, 4000000, 0),
					Parent = Part2,
				}
				Debris:AddItem(Part2, 15)
				Part2.Parent = game:GetService("Workspace")
				Propulsion.ReachedTarget:connect(function()
					if not CheckIfAlive() then
						return
					end
					if Part2 and Part2.Parent then
						Part2:Destroy()
					end
				end)
				Propulsion:Fire()
				wait(0.25)
			end
		end
	else
		local TargetPosition = InvokeClient("MousePosition")
		if TargetPosition then
			TargetPosition = TargetPosition.Position
			local Direction = (TargetPosition - Torso.Position).Unit
			for i = 1, 5 do
				local Part2 = Part:Clone()
				Part2.CFrame = (Torso.CFrame + Torso.CFrame.lookVector * 4)
				local Velocity = (Direction * 150)
				local Mass = (Part2:GetMass() * Gravity)
				local BF = Create("BodyForce"){
					Parent = Part2,
					force = Vector3.new(0, Part2:GetMass() * 196.2, 0),
				}
				Part2.Velocity = Velocity
				Part2.Touched:connect(function(Hit)
					if not Hit or not Hit.Parent then
						return
					end
					local character = Hit.Parent
					if character:IsA("Hat") then
						character = Hit.Parent
					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
					if Part2 and Part2.Parent then
						Part2:Destroy()
					end
				end)
				Debris:AddItem(Part2, 15)
				Part2.Parent = game:GetService("Workspace")
			end
		end
	end
end

function CreateFirePart(CreateNew)
	for i, v in pairs(Handle:GetChildren()) do
		if v:IsA("BasePart") then
			v:Destroy()
		end
	end
	if not CreateNew then
		return
	end
	FirePart = BasePart:Clone()
	FirePart.Name = "Effect"
	FirePart.Transparency = 1
	FirePart.CanCollide = false
	local Fire = SoulFire:Clone()
	Fire.Enabled = true
	Fire.Parent = FirePart
	local Light = SoulLight:Clone()
	Light.Color = Fire.Color
	Light.Enabled = true
	Light.Parent = FirePart
	local Weld = Create("Weld"){
		Part0 = Handle,
		Part1 = FirePart,
		C0 = CFrame.new(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1),
		C1 = CFrame.new(0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1),
		Parent = FirePart,
	}
	FirePart.Parent = Handle
end

function CheckIfAlive()
	return (((Character and Character.Parent and Humanoid and Humanoid.Parent and Humanoid.Health > 0 and Torso and Torso.Parent and Player and Player.Parent) and true) or false)
end

function Activated()
	if not Tool.Enabled or not ToolEquipped or not CheckIfAlive() then
		return
	end
	Tool.Enabled = false 
	local Time = RunService.Stepped:wait()
	if (Time - LastAttack) < 0.2 then
		Lunge()
	else
		Attack()
	end
	LastAttack = Time
	Tool.Enabled = true
end

function Equipped()
	Character = Tool.Parent
	Player = Players:GetPlayerFromCharacter(Character)
	Humanoid = Character:FindFirstChild("Humanoid")
	Torso = Character:FindFirstChild("Torso")
	if not CheckIfAlive() then
		return
	end
	ToolEquipped = true
	Spawn(function()
		local CurrentlyEquipped = true
		ToolUnequipped1 = Tool.Unequipped:connect(function()
			CurrentlyEquipped = false
			if ToolUnequipped1 then
				ToolUnequipped1:disconnect()
			end
		end)
		Sounds.Unsheath:Play()
		Humanoid.WalkSpeed = 18
		--SetPlayerMaxHealth(Humanoid, 135)
		CreateFirePart(true)
		Spawn(function()
			while ToolEquipped and CurrentlyEquipped and CheckIfAlive() do
				wait(1)
				if not ToolEquipped or not CurrentlyEquipped or not CheckIfAlive() then
					break
				end
				Humanoid.Health = (Humanoid.Health + 0.25)
			end
		end)
	end)
end

function Unequipped()
	CreateFirePart(true)
	--[[for i, v in pairs(Sounds) do
		v:Stop()
	end]]
	if CheckIfAlive() then
		--SetPlayerMaxHealth(Humanoid, 100)
		Humanoid.WalkSpeed = 16
	end
	Tool.Grip = Grips.Up
	ToolEquipped = false
end

function InvokeClient(Mode, Value)
	local ClientReturn = nil
	pcall(function()
		ClientReturn = ClientControl:InvokeClient(Player, Mode, Value)
	end)
	return ClientReturn
end

CreateFirePart(true)

Tool.Activated:connect(Activated)
Tool.Equipped:connect(Equipped)
Tool.Unequipped:connect(Unequipped)

Blow(Handle, SwordDamage)