local W=require(Tool:WaitForChild("\083\101\116\116\105\110\103"))local k=script:WaitForChild("\067\104\097\110\103\101\077\097\103\065\110\100\065\109\109\111")local w local m local z=false local B=Tool.Events.punched function CoolDown2()wait(.01)z=false end B.OnServerInvoke=function(W,k,w,m)if not z then z=true Tool.Handle.Whip:Play()Tool.Assets.BloodPart.Blood:Emit(1.3)k.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(.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(.42)Tool.Handle.EquipSound:play()end if W.DualEnabled then m=Tool:WaitForChild("\072\097\110\100\108\101\050",1)if m==nil and W.DualEnabled then error("\"\068\117\097\108\" \115\101\116\116\105\110\103 \105\115 \101\110\097\098\108\101\100 \098\117\116 \"\072\097\110\100\108\101\050\" \105\115 \109\105\115\115\105\110\103\033")end end local O=script:FindFirstChild("\077\097\103")or Instance.new("\078\117\109\098\101\114\086\097\108\117\101",script)O.Name="\077\097\103"O.Value=W.AmmoPerMag local S=script:FindFirstChild("\065\109\109\111")or Instance.new("\078\117\109\098\101\114\086\097\108\117\101",script)S.Name="\065\109\109\111"S.Value=W.LimitedAmmoEnabled and W.Ammo or 0 if W.IdleAnimationID~=nil or W.DualEnabled then local k=Instance.new("\065\110\105\109\097\116\105\111\110",Tool)k.Name="\073\100\108\101\065\110\105\109"k.AnimationId="\114\098\120\097\115\115\101\116\105\100\058\047\047"..(W.DualEnabled and 53610688 or W.IdleAnimationID)end if W.FireAnimationID~=nil then local k=Instance.new("\065\110\105\109\097\116\105\111\110",Tool)k.Name="\070\105\114\101\065\110\105\109"k.AnimationId="\114\098\120\097\115\115\101\116\105\100\058\047\047"..W.FireAnimationID end if W.ReloadAnimationID~=nil then local k=Instance.new("\065\110\105\109\097\116\105\111\110",Tool)k.Name="\082\101\108\111\097\100\065\110\105\109"k.AnimationId="\114\098\120\097\115\115\101\116\105\100\058\047\047"..W.ReloadAnimationID end if W.ShotgunClipinAnimationID~=nil then local k=Instance.new("\065\110\105\109\097\116\105\111\110",Tool)k.Name="\083\104\111\116\103\117\110\067\108\105\112\105\110\065\110\105\109"k.AnimationId="\114\098\120\097\115\115\101\116\105\100\058\047\047"..W.ShotgunClipinAnimationID end if W.HoldDownAnimationID~=nil then local k=Instance.new("\065\110\105\109\097\116\105\111\110",Tool)k.Name="\072\111\108\100\068\111\119\110\065\110\105\109"k.AnimationId="\114\098\120\097\115\115\101\116\105\100\058\047\047"..W.HoldDownAnimationID end if W.EquippedAnimationID~=nil then local k=Instance.new("\065\110\105\109\097\116\105\111\110",Tool)k.Name="\069\113\117\105\112\112\101\100\065\110\105\109"k.AnimationId="\114\098\120\097\115\115\101\116\105\100\058\047\047"..W.EquippedAnimationID end k.OnServerEvent:connect(function(W,k,w)O.Value=k S.Value=w end)Tool.Equipped:connect(function()Equip()if W.DualEnabled and workspace.FilteringEnabled then m.CanCollide=false local W=Tool.Parent:FindFirstChild("\076\101\102\116 \065\114\109")or Tool.Parent:FindFirstChild("\076\101\102\116\072\097\110\100")local k=Tool.Parent:FindFirstChild("\082\105\103\104\116 \065\114\109")or Tool.Parent:FindFirstChild("\082\105\103\104\116\072\097\110\100")if k then local z=k:WaitForChild("\082\105\103\104\116\071\114\105\112",.01)if z then w=z:Clone()w.Name="\076\101\102\116\071\114\105\112"w.Part0=W w.Part1=m w.Parent=W 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 W.DualEnabled and workspace.FilteringEnabled then m.CanCollide=false if w then w:Destroy()end end end)
--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)
