--local Player
--local Character
--local Humanoid
local Module = require(Tool:WaitForChild("Setting"))
local ChangeMagAndAmmo = script:WaitForChild("ChangeMagAndAmmo")
local Grip2
local Handle2
local CoolDown = false

local func= Tool.Events.punched

function CoolDown2()
    wait(0.01)
	CoolDown = false
end

func.OnServerInvoke = function(plr, hum, dmg, tor)
if not CoolDown then
CoolDown = true
		Tool.Handle.Whip:Play()
	Tool.Assets.BloodPart.Blood:Emit(1.3)
		hum.Parent.Humanoid:TakeDamage(15)
		CoolDown2()
	end
end

function Equip()
	Tool.Barrel.Transparency = 0
	Tool.BarrelOut.Transparency = 1
	Tool.Handle.Transparency = 0
	Tool.Part2.Transparency = 1
	Tool.Part3.Transparency = 1
	Tool.Part24.Transparency = 1
	Tool.Part6.Transparency = 1
	Tool.Part4.Transparency = 1
	Tool.Part2.Transparency = 1
	Tool.Shells.Transparency = 1
	Tool.Trigger.Transparency = 1
	wait(0.2)
	Tool.Barrel.Transparency = 0
	Tool.BarrelOut.Transparency = 1
	Tool.Handle.Transparency = 0
	Tool.Part2.Transparency = 0
	Tool.Part3.Transparency = 0
	Tool.Part24.Transparency = 0
	Tool.Part6.Transparency = 0
	Tool.Part4.Transparency = 0
	Tool.Part2.Transparency = 0
	Tool.Shells.Transparency = 1
	Tool.Trigger.Transparency = 0
	wait(0.42)
	Tool.Handle.EquipSound:play()
end

if Module.DualEnabled then
	Handle2 = Tool:WaitForChild("Handle2",1)
	if Handle2 == nil and Module.DualEnabled then error("\"Dual\" setting is enabled but \"Handle2\" is missing!") end
end

local MagValue = script:FindFirstChild("Mag") or Instance.new("NumberValue",script)
MagValue.Name = "Mag"
MagValue.Value = Module.AmmoPerMag
local AmmoValue = script:FindFirstChild("Ammo") or Instance.new("NumberValue",script)
AmmoValue.Name = "Ammo"
AmmoValue.Value = Module.LimitedAmmoEnabled and Module.Ammo or 0

if Module.IdleAnimationID ~= nil or Module.DualEnabled then
	local IdleAnim = Instance.new("Animation",Tool)
	IdleAnim.Name = "IdleAnim"
	IdleAnim.AnimationId = "rbxassetid://"..(Module.DualEnabled and 53610688 or Module.IdleAnimationID)
end
if Module.FireAnimationID ~= nil then
	local FireAnim = Instance.new("Animation",Tool)
	FireAnim.Name = "FireAnim"
	FireAnim.AnimationId = "rbxassetid://"..Module.FireAnimationID
end
if Module.ReloadAnimationID ~= nil then
	local ReloadAnim = Instance.new("Animation",Tool)
	ReloadAnim.Name = "ReloadAnim"
	ReloadAnim.AnimationId = "rbxassetid://"..Module.ReloadAnimationID
end
if Module.ShotgunClipinAnimationID ~= nil then
	local ShotgunClipinAnim = Instance.new("Animation",Tool)
	ShotgunClipinAnim.Name = "ShotgunClipinAnim"
	ShotgunClipinAnim.AnimationId = "rbxassetid://"..Module.ShotgunClipinAnimationID
end
if Module.HoldDownAnimationID ~= nil then
	local HoldDownAnim = Instance.new("Animation",Tool)
	HoldDownAnim.Name = "HoldDownAnim"
	HoldDownAnim.AnimationId = "rbxassetid://"..Module.HoldDownAnimationID
end
if Module.EquippedAnimationID ~= nil then
	local EquippedAnim = Instance.new("Animation",Tool)
	EquippedAnim.Name = "EquippedAnim"
	EquippedAnim.AnimationId = "rbxassetid://"..Module.EquippedAnimationID
end

ChangeMagAndAmmo.OnServerEvent:connect(function(Player,Mag,Ammo)
	MagValue.Value = Mag
	AmmoValue.Value = Ammo
end)


Tool.Equipped:connect(function()
	Equip()
	--Player = game.Players:GetPlayerFromCharacter(Tool.Parent)
	--Character = Tool.Parent
	--Humanoid = Character:FindFirstChild("Humanoid")
	if Module.DualEnabled and workspace.FilteringEnabled then
		Handle2.CanCollide = false
		local LeftArm = Tool.Parent:FindFirstChild("Left Arm") or Tool.Parent:FindFirstChild("LeftHand")
		local RightArm = Tool.Parent:FindFirstChild("Right Arm") or Tool.Parent:FindFirstChild("RightHand")
		if RightArm then
			local Grip = RightArm:WaitForChild("RightGrip",0.01)
			if Grip then
				Grip2 = Grip:Clone()
				Grip2.Name = "LeftGrip"
				Grip2.Part0 = LeftArm
				Grip2.Part1 = Handle2
				--Grip2.C1 = Grip2.C1:inverse()
				Grip2.Parent = LeftArm
			end
		end
	end
end)

Tool.Unequipped:connect(function()
	Tool.Barrel.Transparency = 1
	Tool.BarrelOut.Transparency = 1
	Tool.Handle.Transparency = 1
	Tool.Part2.Transparency = 1
	Tool.Part3.Transparency = 1
	Tool.Part24.Transparency = 1
	Tool.Part6.Transparency = 1
	Tool.Part4.Transparency = 1
	Tool.Part2.Transparency = 1
	Tool.Shells.Transparency = 1
	Tool.Trigger.Transparency = 1
	if Module.DualEnabled and workspace.FilteringEnabled then
		Handle2.CanCollide = false
		if Grip2 then Grip2:Destroy() end
	end
end)