function CreateBullet(d)local Q=L_56_.Position local t=(L_4_.Hit.p-Q).unit local H=CFrame.Angles(math.rad(math.random(-d,d)),math.rad(math.random(-d,d)),math.rad(math.random(-d,d)))t=H*t local j=CFrame.new(Q,Q+t)local X=Instance.new("\080\097\114\116",L_98_)game.Debris:AddItem(X,10)X.Shape=Enum.PartType.Ball X.Size=Vector3.new(1,1,12)X.Name="\066\117\108\108\101\116"X.TopSurface="\083\109\111\111\116\104"X.BottomSurface="\083\109\111\111\116\104"X.BrickColor=BrickColor.new("\066\114\105\103\104\116 \103\114\101\101\110")X.Material="\078\101\111\110"X.CanCollide=false X.CFrame=j local y=Instance.new("\083\111\117\110\100")y.SoundId="\114\098\120\097\115\115\101\116\105\100\058\047\047\051\052\049\053\049\057\055\052\051"y.Looped=true y:Play()y.Parent=X y.Volume=.4 y.MaxDistance=30 X.Transparency=1 local r=X:GetMass()local p=Instance.new("\066\111\100\121\070\111\114\099\101",X)if not L_80_ then p.Force=L_24_.BulletPhysics X.Velocity=t*L_24_.BulletSpeed else p.Force=L_24_.ExploPhysics X.Velocity=t*L_24_.ExploSpeed end local v=Instance.new("\065\116\116\097\099\104\109\101\110\116",X)v.Position=Vector3.new(.1,0,0)local N=Instance.new("\065\116\116\097\099\104\109\101\110\116",X)N.Position=Vector3.new(-0.1,0,0)local Y=TracerCalculation()if L_24_.TracerEnabled==true and Y then local d=Instance.new("\084\114\097\105\108",X)d.Attachment0=v d.Attachment1=N d.Transparency=NumberSequence.new(L_24_.TracerTransparency)d.LightEmission=L_24_.TracerLightEmission d.TextureLength=L_24_.TracerTextureLength d.Lifetime=L_24_.TracerLifetime d.FaceCamera=L_24_.TracerFaceCamera d.Color=ColorSequence.new(L_24_.TracerColor.Color)end if L_1_:FindFirstChild("\083\104\101\108\108")and not L_80_ then CreateShell()end delay(.2,function()X.Transparency=0 end)return X end function CheckForHumanoid(d)local Q local t if d.Parent:FindFirstChild("\072\117\109\097\110\111\105\100")or d.Parent.Parent:FindFirstChild("\072\117\109\097\110\111\105\100")then Q=true if d.Parent:FindFirstChild("\072\117\109\097\110\111\105\100")then t=d.Parent.Humanoid elseif d.Parent.Parent:FindFirstChild("\072\117\109\097\110\111\105\100")then t=d.Parent.Parent.Humanoid end else Q=false end return Q,t end function CastRay(d)local Q,t,H local j=L_53_.Position local X=d.Position local y=0 local r=L_80_ while true do L_103_:wait()X=d.Position y=y+(X-j).magnitude Q,t,H=workspace:FindPartOnRayWithIgnoreList(Ray.new(j,X-j),IgnoreList)local p=(Vector3.new(0,1,0)):Cross(H)local v=math.asin(p.magnitude)if y>L_24_.BulletDecay then d:Destroy()break end if Q and((Q and Q.Transparency>=1 or Q.CanCollide==false)and(Q.Name~="\082\105\103\104\116 \065\114\109"and(Q.Name~="\076\101\102\116 \065\114\109"and(Q.Name~="\082\105\103\104\116 \076\101\103"and(Q.Name~="\076\101\102\116 \076\101\103"and Q.Name~="\065\114\109\111\114")))))then table.insert(IgnoreList,Q)end if Q then p=(Vector3.new(0,1,0)):Cross(H)v=math.asin(p.magnitude)L_115_:FireServer(t)local j=CheckForHumanoid(Q)if j==false then d:Destroy()local j=L_110_:InvokeServer(t,p,v,H,"\080\097\114\116",Q)elseif j==true then d:Destroy()local j=L_110_:InvokeServer(t,p,v,H,"\072\117\109\097\110",Q)end end if Q and r then L_113_:FireServer(t)end if Q and(Q.Parent:FindFirstChild("\072\117\109\097\110\111\105\100")or Q.Parent.Parent:FindFirstChild("\072\117\109\097\110\111\105\100"))then local d,t=CheckForHumanoid(Q)if d then L_108_:FireServer(t)if L_24_.AntiTK then if game.Players:FindFirstChild(t.Parent.Name)and(game.Players:FindFirstChild(t.Parent.Name)).TeamColor~=L_2_.TeamColor then if Q.Name=="\072\101\097\100"then L_107_:FireServer(t,L_24_.HeadDamage)local d=(L_19_:WaitForChild("\066\111\100\121\072\105\116")):clone()d.Parent=L_2_.PlayerGui d:Play();(game:GetService("\068\101\098\114\105\115")):addItem(d,d.TimeLength)end if Q.Name~="\072\101\097\100"and not(Q.Parent:IsA("\065\099\099\101\115\115\111\114\121")or Q.Parent:IsA("\072\097\116"))then if Q.Name~="\084\111\114\115\111"and(Q.Name~="\072\117\109\097\110\111\105\100\082\111\111\116\080\097\114\116"and Q.Name~="\065\114\109\111\114")then L_107_:FireServer(t,L_24_.LimbDamage)elseif Q.Name=="\084\111\114\115\111"or Q.Name=="\072\117\109\097\110\111\105\100\082\111\111\116\080\097\114\116"and Q.Name~="\065\114\109\111\114"then L_107_:FireServer(t,L_24_.BaseDamage)elseif Q.Name=="\065\114\109\111\114"then L_107_:FireServer(t,L_24_.ArmorDamage)end local d=(L_19_:WaitForChild("\066\111\100\121\072\105\116")):clone()d.Parent=L_2_.PlayerGui d:Play();(game:GetService("\068\101\098\114\105\115")):addItem(d,d.TimeLength)end if Q.Parent:IsA("\065\099\099\101\115\115\111\114\121")or Q.Parent:IsA("\072\097\116")then L_107_:FireServer(t,L_24_.HeadDamage)local d=(L_19_:WaitForChild("\066\111\100\121\072\105\116")):clone()d.Parent=L_2_.PlayerGui d:Play();(game:GetService("\068\101\098\114\105\115")):addItem(d,d.TimeLength)end end else if Q.Name=="\072\101\097\100"then L_107_:FireServer(t,L_24_.HeadDamage)local d=(L_19_:WaitForChild("\066\111\100\121\072\105\116")):clone()d.Parent=L_2_.PlayerGui d:Play();(game:GetService("\068\101\098\114\105\115")):addItem(d,d.TimeLength)end if Q.Name~="\072\101\097\100"and not(Q.Parent:IsA("\065\099\099\101\115\115\111\114\121")or Q.Parent:IsA("\072\097\116"))then if Q.Name~="\084\111\114\115\111"and(Q.Name~="\072\117\109\097\110\111\105\100\082\111\111\116\080\097\114\116"and Q.Name~="\065\114\109\111\114")then L_107_:FireServer(t,L_24_.LimbDamage)elseif Q.Name=="\084\111\114\115\111"or Q.Name=="\072\117\109\097\110\111\105\100\082\111\111\116\080\097\114\116"and Q.Name~="\065\114\109\111\114"then L_107_:FireServer(t,L_24_.BaseDamage)elseif Q.Name=="\065\114\109\111\114"then L_107_:FireServer(t,L_24_.ArmorDamage)end local d=(L_19_:WaitForChild("\066\111\100\121\072\105\116")):clone()d.Parent=L_2_.PlayerGui d:Play();(game:GetService("\068\101\098\114\105\115")):addItem(d,d.TimeLength)end if Q.Parent:IsA("\065\099\099\101\115\115\111\114\121")or Q.Parent:IsA("\072\097\116")then L_107_:FireServer(t,L_24_.HeadDamage)local d=(L_19_:WaitForChild("\066\111\100\121\072\105\116")):clone()d.Parent=L_2_.PlayerGui d:Play();(game:GetService("\068\101\098\114\105\115")):addItem(d,d.TimeLength)end end end end if Q and Q.Parent:FindFirstChild("\072\117\109\097\110\111\105\100")then return Q,t end j=X end end function fireSemi()if L_15_ then L_66_=false Recoiling=true Shooting=true;(L_56_:WaitForChild("\070\105\114\101")):Play()L_106_:FireServer()L_99_=CreateBullet(L_24_.BulletSpread)L_100_=L_100_-1 UpdateAmmo()RecoilFront=true local d,Q=spawn(function()CastRay(L_99_)end)if L_24_.CanBolt==true then BoltingBackAnim()delay(L_24_.Firerate/2,function()if L_24_.CanSlideLock==false then BoltingForwardAnim()elseif L_24_.CanSlideLock==true then if L_100_>0 then BoltingForwardAnim()end end end)end delay(L_24_.Firerate/2,function()Recoiling=false RecoilFront=false end)wait(L_24_.Firerate)local t=JamCalculation()if t then L_66_=false else L_66_=true end Shooting=false end end function fireExplo()if L_15_ then L_66_=false Recoiling=true Shooting=true;(L_57_:WaitForChild("\070\105\114\101")):Play()L_106_:FireServer()L_99_=CreateBullet(L_24_.BulletSpread)L_102_=L_102_-1 UpdateAmmo()RecoilFront=true local d,Q=spawn(function()CastRay(L_99_)end)delay(L_24_.Firerate/2,function()Recoiling=false RecoilFront=false end)L_66_=false Shooting=false end end function fireShot()if L_15_ then L_66_=false Recoiling=true Shooting=true RecoilFront=true;(L_56_:WaitForChild("\070\105\114\101")):Play()L_106_:FireServer()for d=1,L_24_.ShotNum,1 do L_99_=CreateBullet(L_24_.BulletSpread)local Q,t=spawn(function()CastRay(L_99_)end)end for d,Q in pairs(L_56_:GetChildren())do if Q.Name:sub(1,7)=="\070\108\097\115\104\070\088"then Q.Enabled=true end end delay(.033333333333333,function()for d,Q in pairs(L_56_:GetChildren())do if Q.Name:sub(1,7)=="\070\108\097\115\104\070\088"then Q.Enabled=false end end end)if L_24_.CanBolt==true then BoltingBackAnim()delay(L_24_.Firerate/2,function()if L_24_.CanSlideLock==false then BoltingForwardAnim()elseif L_24_.CanSlideLock==true then if L_100_>0 then BoltingForwardAnim()end end end)end delay(L_24_.Firerate/2,function()Recoiling=false RecoilFront=false end)L_100_=L_100_-1 UpdateAmmo()wait(L_24_.Firerate)L_73_=true BoltBackAnim()BoltForwardAnim()IdleAnim()L_73_=false local d=JamCalculation()if d then L_66_=false else L_66_=true end Shooting=false end end function fireBoltAction()if L_15_ then L_66_=false Recoiling=true Shooting=true;(L_56_:WaitForChild("\070\105\114\101")):Play()L_106_:FireServer()L_99_=CreateBullet(L_24_.BulletSpread)L_100_=L_100_-1 UpdateAmmo()RecoilFront=true local d,Q=spawn(function()CastRay(L_99_)end)for d,Q in pairs(L_56_:GetChildren())do if Q.Name:sub(1,7)=="\070\108\097\115\104\070\088"then Q.Enabled=true end end delay(.033333333333333,function()for d,Q in pairs(L_56_:GetChildren())do if Q.Name:sub(1,7)=="\070\108\097\115\104\070\088"then Q.Enabled=false end end end)if L_24_.CanBolt==true then BoltingBackAnim()delay(L_24_.Firerate/2,function()if L_24_.CanSlideLock==false then BoltingForwardAnim()elseif L_24_.CanSlideLock==true then if L_100_>0 then BoltingForwardAnim()end end end)end delay(L_24_.Firerate/2,function()Recoiling=false RecoilFront=false end)wait(L_24_.Firerate)L_73_=true BoltBackAnim()BoltForwardAnim()IdleAnim()L_73_=false local t=JamCalculation()if t then L_66_=false else L_66_=true end Shooting=false end end function fireAuto()while not Shooting and(L_100_>0 and(L_65_ and(L_66_ and L_15_)))do L_66_=false Recoiling=true;(L_56_:WaitForChild("\070\105\114\101")):Play()L_106_:FireServer()L_100_=L_100_-1 UpdateAmmo()Shooting=true RecoilFront=true L_99_=CreateBullet(L_24_.BulletSpread)local d,Q=spawn(function()CastRay(L_99_)end)for d,Q in pairs(L_56_:GetChildren())do if Q.Name:sub(1,7)=="\070\108\097\115\104\070\088"then Q.Enabled=true end end delay(.033333333333333,function()for d,Q in pairs(L_56_:GetChildren())do if Q.Name:sub(1,7)=="\070\108\097\115\104\070\088"then Q.Enabled=false end end end)if L_24_.CanBolt==true then BoltingBackAnim()delay(L_24_.Firerate/2,function()if L_24_.CanSlideLock==false then BoltingForwardAnim()elseif L_24_.CanSlideLock==true then if L_100_>0 then BoltingForwardAnim()end end end)end delay(L_24_.Firerate/2,function()Recoiling=false RecoilFront=false end)wait(L_24_.Firerate)local t=JamCalculation()if t then L_66_=false else L_66_=true end Shooting=false end end function fireBurst()if not Shooting and(L_100_>0 and(L_65_ and L_15_))then for d=1,L_24_.BurstNum,1 do if L_100_>0 and L_65_ then L_66_=false Recoiling=true;(L_56_:WaitForChild("\070\105\114\101")):Play()L_106_:FireServer()L_99_=CreateBullet(L_24_.BulletSpread)local d,Q=spawn(function()CastRay(L_99_)end)for d,Q in pairs(L_56_:GetChildren())do if Q.Name:sub(1,7)=="\070\108\097\115\104\070\088"then Q.Enabled=true end end delay(.033333333333333,function()for d,Q in pairs(L_56_:GetChildren())do if Q.Name:sub(1,7)=="\070\108\097\115\104\070\088"then Q.Enabled=false end end end)if L_24_.CanBolt==true then BoltingBackAnim()delay(L_24_.Firerate/2,function()if L_24_.CanSlideLock==false then BoltingForwardAnim()elseif L_24_.CanSlideLock==true then if L_100_>0 then BoltingForwardAnim()end end end)end L_100_=L_100_-1 UpdateAmmo()RecoilFront=true delay(L_24_.Firerate/2,function()Recoiling=false RecoilFront=false end)wait(L_24_.Firerate)local t=JamCalculation()if t then L_66_=false else L_66_=true end end Shooting=true end Shooting=false end end function Shoot()if L_15_ and L_66_ then if L_89_==1 then fireSemi()elseif L_89_==2 then fireAuto()elseif L_89_==3 then fireBurst()elseif L_89_==4 then fireBoltAction()elseif L_89_==5 then fireShot()elseif L_89_==6 then fireExplo()end end end

function CreateBullet(L_197_arg1)
	local L_198_ = L_56_.Position
	local L_199_ = (L_4_.Hit.p - L_198_).unit
	local L_200_ = CFrame.Angles(math.rad(math.random(-L_197_arg1, L_197_arg1)), math.rad(math.random(-L_197_arg1, L_197_arg1)), math.rad(math.random(-L_197_arg1, L_197_arg1)))
	L_199_ = L_200_ * L_199_	
	local L_201_ = CFrame.new(L_198_, L_198_ + L_199_)	
		
	local L_202_ = Instance.new("Part", L_98_)
	game.Debris:AddItem(L_202_, 10)
	L_202_.Shape = Enum.PartType.Ball
	L_202_.Size = Vector3.new(1, 1, 12)
	L_202_.Name = "Bullet"
	L_202_.TopSurface = "Smooth"
	L_202_.BottomSurface = "Smooth"
	L_202_.BrickColor = BrickColor.new("Bright green")
	L_202_.Material = "Neon"
	L_202_.CanCollide = false
		--Bullet.CFrame = FirePart.CFrame + (Grip.CFrame.p - Grip.CFrame.p)
	L_202_.CFrame = L_201_
		
	local L_203_ = Instance.new("Sound")
	L_203_.SoundId = "rbxassetid://341519743"
	L_203_.Looped = true
	L_203_:Play()
	L_203_.Parent = L_202_
	L_203_.Volume = 0.4
	L_203_.MaxDistance = 30
	
	L_202_.Transparency = 1
	local L_204_ = L_202_:GetMass()
	local L_205_ = Instance.new('BodyForce', L_202_)
		
	if not L_80_ then
		L_205_.Force = L_24_.BulletPhysics
		L_202_.Velocity = L_199_ * L_24_.BulletSpeed
	else
		L_205_.Force = L_24_.ExploPhysics
		L_202_.Velocity = L_199_ * L_24_.ExploSpeed
	end
		
	local L_206_ = Instance.new('Attachment', L_202_)
	L_206_.Position = Vector3.new(0.1, 0, 0)
	local L_207_ = Instance.new('Attachment', L_202_)
	L_207_.Position = Vector3.new(-0.1, 0, 0)
			
	local L_208_ = TracerCalculation()
		
	if L_24_.TracerEnabled == true and L_208_ then
		local L_209_ = Instance.new('Trail', L_202_)
		L_209_.Attachment0 = L_206_
		L_209_.Attachment1 = L_207_
		L_209_.Transparency = NumberSequence.new(L_24_.TracerTransparency)
		L_209_.LightEmission = L_24_.TracerLightEmission
		L_209_.TextureLength = L_24_.TracerTextureLength
		L_209_.Lifetime = L_24_.TracerLifetime
		L_209_.FaceCamera = L_24_.TracerFaceCamera
		L_209_.Color = ColorSequence.new(L_24_.TracerColor.Color)
	end
		
	if L_1_:FindFirstChild('Shell') and not L_80_ then	
		CreateShell()	
	end	
		
	delay(0.2, function()
		L_202_.Transparency = 0
	end)
	
	return L_202_
end

function CheckForHumanoid(L_210_arg1)
	local L_211_
	local L_212_
	if (L_210_arg1.Parent:FindFirstChild("Humanoid") or L_210_arg1.Parent.Parent:FindFirstChild("Humanoid")) then
		L_211_ = true
		if L_210_arg1.Parent:FindFirstChild('Humanoid') then
			L_212_ = L_210_arg1.Parent.Humanoid
		elseif L_210_arg1.Parent.Parent:FindFirstChild('Humanoid') then
			L_212_ = L_210_arg1.Parent.Parent.Humanoid
		end
	else
		L_211_ = false
	end	
	return L_211_, L_212_
end

function CastRay(L_213_arg1)
	local L_214_, L_215_, L_216_
	local L_217_ = L_53_.Position;
	local L_218_ = L_213_arg1.Position;
	local L_219_ = 0

	local L_220_ = L_80_	
	
	while true do
		L_103_:wait()
		L_218_ = L_213_arg1.Position;
		L_219_ = L_219_ + (L_218_ - L_217_).magnitude
		L_214_, L_215_, L_216_ = workspace:FindPartOnRayWithIgnoreList(Ray.new(L_217_, (L_218_ - L_217_)), IgnoreList);
		local L_221_ = Vector3.new(0, 1, 0):Cross(L_216_)
		local L_222_ = math.asin(L_221_.magnitude) -- division by 1 is redundant
		if L_219_ > L_24_.BulletDecay then
			L_213_arg1:Destroy()
			break
		end
		if L_214_ and (L_214_ and L_214_.Transparency >= 1 or L_214_.CanCollide == false) and L_214_.Name ~= 'Right Arm' and L_214_.Name ~= 'Left Arm' and L_214_.Name ~= 'Right Leg' and L_214_.Name ~= 'Left Leg' and L_214_.Name ~= 'Armor' then
			table.insert(IgnoreList, L_214_)
		end
	
		if L_214_ then
			L_221_ = Vector3.new(0, 1, 0):Cross(L_216_)
			L_222_ = math.asin(L_221_.magnitude) -- division by 1 is redundant
		
			L_115_:FireServer(L_215_)
		
			local L_223_ = CheckForHumanoid(L_214_)
			if L_223_ == false then
				L_213_arg1:Destroy()
				local L_224_ = L_110_:InvokeServer(L_215_, L_221_, L_222_, L_216_, "Part", L_214_)
			elseif L_223_ == true then
				L_213_arg1:Destroy()
				local L_225_ = L_110_:InvokeServer(L_215_, L_221_, L_222_, L_216_, "Human", L_214_)
			end
		end
	
		if L_214_ and L_220_ then
			L_113_:FireServer(L_215_)
		end
	
		if L_214_ and (L_214_.Parent:FindFirstChild("Humanoid") or L_214_.Parent.Parent:FindFirstChild("Humanoid")) then
			local L_226_, L_227_ = CheckForHumanoid(L_214_)
			if L_226_ then
				L_108_:FireServer(L_227_)
				if L_24_.AntiTK then
					if game.Players:FindFirstChild(L_227_.Parent.Name) and game.Players:FindFirstChild(L_227_.Parent.Name).TeamColor ~= L_2_.TeamColor then
						if L_214_.Name == 'Head' then
							L_107_:FireServer(L_227_, L_24_.HeadDamage)
							local L_228_ = L_19_:WaitForChild('BodyHit'):clone()
							L_228_.Parent = L_2_.PlayerGui
							L_228_:Play()
							game:GetService("Debris"):addItem(L_228_, L_228_.TimeLength)
						end
						if L_214_.Name ~= 'Head' and not (L_214_.Parent:IsA('Accessory') or L_214_.Parent:IsA('Hat')) then
							if L_214_.Name ~= 'Torso' and L_214_.Name ~= 'HumanoidRootPart' and L_214_.Name ~= 'Armor' then
								L_107_:FireServer(L_227_, L_24_.LimbDamage)
							elseif L_214_.Name == 'Torso' or L_214_.Name == 'HumanoidRootPart' and L_214_.Name ~= 'Armor'  then
								L_107_:FireServer(L_227_, L_24_.BaseDamage)
							elseif L_214_.Name == 'Armor' then
								L_107_:FireServer(L_227_, L_24_.ArmorDamage)
							end
							local L_229_ = L_19_:WaitForChild('BodyHit'):clone()
							L_229_.Parent = L_2_.PlayerGui
							L_229_:Play()
							game:GetService("Debris"):addItem(L_229_, L_229_.TimeLength)
						end
						if (L_214_.Parent:IsA('Accessory') or L_214_.Parent:IsA('Hat')) then
							L_107_:FireServer(L_227_, L_24_.HeadDamage)
							local L_230_ = L_19_:WaitForChild('BodyHit'):clone()
							L_230_.Parent = L_2_.PlayerGui
							L_230_:Play()
							game:GetService("Debris"):addItem(L_230_, L_230_.TimeLength)
						end
					end
				else
					if L_214_.Name == 'Head' then
						L_107_:FireServer(L_227_, L_24_.HeadDamage)
						local L_231_ = L_19_:WaitForChild('BodyHit'):clone()
						L_231_.Parent = L_2_.PlayerGui
						L_231_:Play()
						game:GetService("Debris"):addItem(L_231_, L_231_.TimeLength)
					end
					if L_214_.Name ~= 'Head' and not (L_214_.Parent:IsA('Accessory') or L_214_.Parent:IsA('Hat')) then
						if L_214_.Name ~= 'Torso' and L_214_.Name ~= 'HumanoidRootPart' and L_214_.Name ~= 'Armor' then
							L_107_:FireServer(L_227_, L_24_.LimbDamage)
						elseif L_214_.Name == 'Torso' or L_214_.Name == 'HumanoidRootPart' and L_214_.Name ~= 'Armor' then
							L_107_:FireServer(L_227_, L_24_.BaseDamage)
						elseif L_214_.Name == 'Armor' then
							L_107_:FireServer(L_227_, L_24_.ArmorDamage)
						end
						local L_232_ = L_19_:WaitForChild('BodyHit'):clone()
						L_232_.Parent = L_2_.PlayerGui
						L_232_:Play()
						game:GetService("Debris"):addItem(L_232_, L_232_.TimeLength)
					end
					if (L_214_.Parent:IsA('Accessory') or L_214_.Parent:IsA('Hat')) then
						L_107_:FireServer(L_227_, L_24_.HeadDamage)
						local L_233_ = L_19_:WaitForChild('BodyHit'):clone()
						L_233_.Parent = L_2_.PlayerGui
						L_233_:Play()
						game:GetService("Debris"):addItem(L_233_, L_233_.TimeLength)
					end
				end	
			end
		end
	
		if L_214_ and L_214_.Parent:FindFirstChild("Humanoid") then
			return L_214_, L_215_;
		end
		L_217_ = L_218_;
	end
end

function fireSemi()
	if L_15_ then
		L_66_ = false
		Recoiling = true
		Shooting = true
		
		--CheckReverb()
		
		L_56_:WaitForChild('Fire'):Play()	
		L_106_:FireServer()
		L_99_ = CreateBullet(L_24_.BulletSpread)
		L_100_ = L_100_ - 1
		UpdateAmmo()
		RecoilFront = true
		local L_234_, L_235_ = spawn(function()
			CastRay(L_99_)
		end)
		
		if L_24_.CanBolt == true then
			BoltingBackAnim()
			delay(L_24_.Firerate / 2, function()
				if L_24_.CanSlideLock == false then
					BoltingForwardAnim()
				elseif L_24_.CanSlideLock == true then
					if L_100_ > 0 then
						BoltingForwardAnim()
					end
				end
			end)
		end
		
		delay(L_24_.Firerate / 2, function()
			Recoiling = false
			RecoilFront = false
		end)		
		
		wait(L_24_.Firerate)
		
		local L_236_ = JamCalculation()
		if L_236_ then
			L_66_ = false
		else
			L_66_ = true
		end
		Shooting = false
	end
end

function fireExplo()
	if L_15_ then
		L_66_ = false
		Recoiling = true
		Shooting = true
		L_57_:WaitForChild('Fire'):Play()
		L_106_:FireServer()
		L_99_ = CreateBullet(L_24_.BulletSpread)
		L_102_ = L_102_ - 1
		UpdateAmmo()
		RecoilFront = true
		local L_237_, L_238_ = spawn(function()
			CastRay(L_99_)
		end)
		
		delay(L_24_.Firerate / 2, function()
			Recoiling = false
			RecoilFront = false
		end)		
			
		L_66_ = false
		Shooting = false
	end
end

function fireShot()
	if L_15_ then
		L_66_ = false
		Recoiling = true
		Shooting = true
		RecoilFront = true
		--CheckReverb()
		L_56_:WaitForChild('Fire'):Play()
		L_106_:FireServer()
		for L_240_forvar1 = 1, L_24_.ShotNum do
			L_99_ = CreateBullet(L_24_.BulletSpread)
			local L_241_, L_242_ = spawn(function()
				CastRay(L_99_)
			end)
		end
						
		for L_243_forvar1, L_244_forvar2 in pairs(L_56_:GetChildren()) do
			if L_244_forvar2.Name:sub(1, 7) == "FlashFX" then
				L_244_forvar2.Enabled = true
			end
		end
	
		delay(1 / 30, function()
			for L_245_forvar1, L_246_forvar2 in pairs(L_56_:GetChildren()) do
				if L_246_forvar2.Name:sub(1, 7) == "FlashFX" then
					L_246_forvar2.Enabled = false
				end
			end
		end)
		
		if L_24_.CanBolt == true then
			BoltingBackAnim()
			delay(L_24_.Firerate / 2, function()
				if L_24_.CanSlideLock == false then
					BoltingForwardAnim()
				elseif L_24_.CanSlideLock == true then
					if L_100_ > 0 then
						BoltingForwardAnim()
					end
				end
			end)
		end
		
		delay(L_24_.Firerate / 2, function()
			Recoiling = false
			RecoilFront = false
		end)
		L_100_ = L_100_ - 1
		UpdateAmmo()
		wait(L_24_.Firerate)
		
		L_73_ = true
		BoltBackAnim()
		BoltForwardAnim()
		IdleAnim()
		L_73_ = false
		
		local L_239_ = JamCalculation()
		if L_239_ then
			L_66_ = false
		else
			L_66_ = true
		end
		
		Shooting = false
	end
end

function fireBoltAction()
	if L_15_ then
		L_66_ = false
		Recoiling = true
		Shooting = true
		--CheckReverb()
		L_56_:WaitForChild('Fire'):Play()
		L_106_:FireServer()
		L_99_ = CreateBullet(L_24_.BulletSpread)
		L_100_ = L_100_ - 1
		UpdateAmmo()
		RecoilFront = true
		local L_247_, L_248_ = spawn(function()
			CastRay(L_99_)
		end)
						
		for L_250_forvar1, L_251_forvar2 in pairs(L_56_:GetChildren()) do
			if L_251_forvar2.Name:sub(1, 7) == "FlashFX" then
				L_251_forvar2.Enabled = true
			end
		end
	
		delay(1 / 30, function()
			for L_252_forvar1, L_253_forvar2 in pairs(L_56_:GetChildren()) do
				if L_253_forvar2.Name:sub(1, 7) == "FlashFX" then
					L_253_forvar2.Enabled = false
				end
			end
		end)
		
		if L_24_.CanBolt == true then
			BoltingBackAnim()
			delay(L_24_.Firerate / 2, function()
				if L_24_.CanSlideLock == false then
					BoltingForwardAnim()
				elseif L_24_.CanSlideLock == true then
					if L_100_ > 0 then
						BoltingForwardAnim()
					end
				end
			end)
		end
		
		delay(L_24_.Firerate / 2, function()
			Recoiling = false
			RecoilFront = false
		end)
		wait(L_24_.Firerate)
		
		L_73_ = true
		BoltBackAnim()
		BoltForwardAnim()
		IdleAnim()
		L_73_ = false
		
		local L_249_ = JamCalculation()
		if L_249_ then
			L_66_ = false
		else
			L_66_ = true
		end		
		
		Shooting = false
	end
end

function fireAuto()
	while not Shooting and L_100_ > 0 and L_65_ and L_66_ and L_15_ do
		L_66_ = false
		Recoiling = true
		--CheckReverb()
		L_56_:WaitForChild('Fire'):Play()
		L_106_:FireServer()
		L_100_ = L_100_ - 1
		UpdateAmmo()
		Shooting = true
		RecoilFront = true
		L_99_ = CreateBullet(L_24_.BulletSpread)
		local L_254_, L_255_ = spawn(function()
			CastRay(L_99_)
		end)
					
		for L_257_forvar1, L_258_forvar2 in pairs(L_56_:GetChildren()) do
			if L_258_forvar2.Name:sub(1, 7) == "FlashFX" then
				L_258_forvar2.Enabled = true
			end
		end
	
		delay(1 / 30, function()
			for L_259_forvar1, L_260_forvar2 in pairs(L_56_:GetChildren()) do
				if L_260_forvar2.Name:sub(1, 7) == "FlashFX" then
					L_260_forvar2.Enabled = false
				end
			end
		end)
		
		if L_24_.CanBolt == true then
			BoltingBackAnim()
			delay(L_24_.Firerate / 2, function()
				if L_24_.CanSlideLock == false then
					BoltingForwardAnim()
				elseif L_24_.CanSlideLock == true then
					if L_100_ > 0 then
						BoltingForwardAnim()
					end
				end
			end)
		end
		
		
		delay(L_24_.Firerate / 2, function()
			Recoiling = false
			RecoilFront = false
		end)
		wait(L_24_.Firerate)
		
		local L_256_ = JamCalculation()
		if L_256_ then
			L_66_ = false
		else
			L_66_ = true
		end
		
		Shooting = false
	end
end

function fireBurst()
	if not Shooting and L_100_ > 0 and L_65_ and L_15_ then
		for L_261_forvar1 = 1, L_24_.BurstNum do
			if L_100_ > 0 and L_65_ then
				L_66_ = false
				Recoiling = true
			--CheckReverb()
				L_56_:WaitForChild('Fire'):Play()
				L_106_:FireServer()
				L_99_ = CreateBullet(L_24_.BulletSpread)
				local L_262_, L_263_ = spawn(function()
					CastRay(L_99_)
				end)
					
				for L_265_forvar1, L_266_forvar2 in pairs(L_56_:GetChildren()) do
					if L_266_forvar2.Name:sub(1, 7) == "FlashFX" then
						L_266_forvar2.Enabled = true
					end
				end
		
				delay(1 / 30, function()
					for L_267_forvar1, L_268_forvar2 in pairs(L_56_:GetChildren()) do
						if L_268_forvar2.Name:sub(1, 7) == "FlashFX" then
							L_268_forvar2.Enabled = false
						end
					end
				end)
			
				if L_24_.CanBolt == true then
					BoltingBackAnim()
					delay(L_24_.Firerate / 2, function()
						if L_24_.CanSlideLock == false then
							BoltingForwardAnim()
						elseif L_24_.CanSlideLock == true then
							if L_100_ > 0 then
								BoltingForwardAnim()
							end
						end
					end)
				end
			
				L_100_ = L_100_ - 1
				UpdateAmmo()
				RecoilFront = true
				delay(L_24_.Firerate / 2, function()
					Recoiling = false
					RecoilFront = false
				end)
				wait(L_24_.Firerate)
			
				local L_264_ = JamCalculation()
				if L_264_ then
					L_66_ = false
				else
					L_66_ = true
				end
		
			end
			Shooting = true
		end
		Shooting = false
	end
end

function Shoot()
	if L_15_ and L_66_ then
		if L_89_ == 1 then
			fireSemi()
		elseif L_89_ == 2 then
			fireAuto()
		elseif L_89_ == 3 then
			fireBurst()	
		elseif L_89_ == 4 then
			fireBoltAction()
		elseif L_89_ == 5 then
			fireShot()
		elseif L_89_ == 6 then
			fireExplo()
		end
	end
end
