Quick actions

cmd+k|ctrl+k

Navigation

Languages

FBI Script

Snippet info

Language

Lua

Visibility

public

Author

andywolf6610

Created

2019-04-02T10:10:31Z

Updated

2019-04-02T10:10:31Z

if game:GetService("RunService"):IsClient() then error("Please run as a server script. Use h/ instead of hl/.") end
print("FE Compatibility code by MagicalAndy6610")
InternalData = {}
do
	script.Parent = owner.Character
	local Event = Instance.new("RemoteEvent")
	Event.Name = "UserInput"
	local function NewFakeEvent()
		local Fake = {fakeEvent=true,Connect=function(self,Func)self.Function=Func end}Fake.connect = Fake.Connect
		return Fake
	end
	local Mouse = {Target=nil,Hit=CFrame.new(),KeyUp=NewFakeEvent(),KeyDown=NewFakeEvent(),Button1Up=NewFakeEvent(),Button1Down=NewFakeEvent()}
	local UserInputService = {InputBegan=NewFakeEvent(),InputEnded=NewFakeEvent()}
	local ContextActionService = {Actions={},BindAction = function(self,actionName,Func,touch,...)
		self.Actions[actionName] = Func and {Name=actionName,Function=Func,Keys={...}} or nil
	end};ContextActionService.UnBindAction = ContextActionService.BindAction
	local function TriggerEvent(self,Event,...)
		local Trigger = Mouse[Event]
		if Trigger and Trigger.fakeEvent and Trigger.Function then
			Trigger.Function(...)
		end
	end
	Mouse.TrigEvent = TriggerEvent
	UserInputService.TrigEvent = TriggerEvent
	Event.OnServerEvent:Connect(function(FiredBy,Input)
		if FiredBy.Name ~= owner.Name then end
		if Input.MouseEvent then
			Mouse.Target = Input.Target
			Mouse.Hit = Input.Hit
		else
			local Begin = Input.UserInputState == Enum.UserInputState.Begin
			if Input.UserInputType == Enum.UserInputType.MouseButton1 then
				return Mouse:TrigEvent(Begin and "Button1Down" or "Button1Up")
			end
			for _,Action in pairs(ContextActionService.Actions) do
				for _,Key in pairs(Action.Keys) do
					if Key==Input.KeyCode then
						Action.Function(Action.Name,Input.UserInputState,Input)
					end
				end
			end
			Mouse:TrigEvent(Begin and "KeyDown" or "KeyUp",Input.KeyCode.Name:lower())
			UserInputService:TrigEvent(Begin and "InputBegan" or "InputEnded",Input,false)
		end
	end)
	InternalData["Mouse"] = Mouse
	InternalData["ContextActionService"] = ContextActionService
	InternalData["UserInputService"] = UserInputService
	Event.Parent = NLS([[
		local Player = owner
		local Event = script:WaitForChild("UserInput")
		local UserInputService = game:GetService("UserInputService")
		local Mouse = Player:GetMouse()
		local Input = function(Input,gameProcessedEvent)
			if gameProcessedEvent then return end
			Event:FireServer({KeyCode=Input.KeyCode,UserInputType=Input.UserInputType,UserInputState=Input.UserInputState})
		end
		UserInputService.InputBegan:Connect(Input)
		UserInputService.InputEnded:Connect(Input)
		local Hit,Target
		while wait(1/30) do
			if Hit ~= Mouse.Hit or Target ~= Mouse.Target then
				Hit,Target = Mouse.Hit,Mouse.Target
				Event:FireServer({["MouseEvent"]=true,["Target"]=Target,["Hit"]=Hit})
			end
		end
	]],owner.Character)
end
RealGame = game;game = setmetatable({},{
	__index = function (self,Index)
		local Sandbox = function (Thing)
			if Thing:IsA("Player") then
				local RealPlayer = Thing
				return setmetatable({},{
					__index = function (self,Index)
						local Type = type(RealPlayer[Index])
						if Type == "function" then
							if Index:lower() == "getmouse" or Index:lower() == "mouse" then
								return function (self)
									return InternalData["Mouse"]
								end
							end
							return function (self,...)
								return RealPlayer[Index](RealPlayer,...)
							end
						else
							if Index == "PlrObj" then
								return RealPlayer
							end
							return RealPlayer[Index]
						end
					end;
					__tostring = function(self)
						return RealPlayer.Name
					end
				})
			end
		end
		if RealGame[Index] then
			local Type = type(RealGame[Index])
			if Type == "function" then
				if Index:lower() == "getservice" or Index:lower() == "service" then
					return function (self,Service)
						if Service:lower() == "players" then
							return setmetatable({},{
								__index = function (self2,Index2)
									local RealService = RealGame:GetService(Service)
									local Type2 = type(Index2)
									if Type2 == "function" then
										return function (self,...)
											return RealService[Index2](RealService,...)
										end
									else
										if Index2:lower() == "localplayer" then
											return Sandbox(owner)
										end
										return RealService[Index2]
									end
								end;
								__tostring = function(self)
									return RealGame:GetService(Service).Name
								end
							})
						elseif Service:lower() == "contextactionservice" then
							return InternalData["ContextActionService"]
						elseif Service:lower() == "contextactionservice" then
							return InternalData["UserInputService"]
						elseif Service:lower() == "runservice" then
							return setmetatable({},{
								__index = function(self2,Index2)
									local RealService = RealGame:GetService(Service)
									local Type2 = type(Index2)
									if Type2 == "function" then
										return function (self,...)
											return RealService[Index2](RealService,...)
										end
									else
										if Index2:lower() == "bindtorenderstep" then
											return function (self,Name,Priority,Function)
												return RealGame:GetService("RunService").Stepped:Connect(Function)
											end
										end
										if Index2:lower() == "renderstepped" then
											return RealService["Stepped"]
										end
										return RealService[Index2]
									end
								end
							})
						else
							return RealGame:GetService(Service)
						end
					end
				end
				return function (self,...)
					return RealGame[Index](RealGame,...)
				end
			else
				if game:GetService(Index) then
					return game:GetService(Index)
				end
				return RealGame[Index]
			end
		else
			return nil
		end
	end
});Game = game;owner = game:GetService("Players").LocalPlayer;script = {}
print("Complete! Running...")

function weldBetween(a, b)
	--Make a new Weld and Parent it to a.
	weld = Instance.new("ManualWeld", a)
	--Get the CFrame of b relative to a.
	weld.C0 = a.CFrame:inverse() * b.CFrame
	--Set the Part0 and Part1 properties respectively
	weld.Part0 = a
	weld.Part1 = b
	--Return the reference to the weld so that you can change it later.
	return weld
end

--- THE BELOW WILL FILTER ALL OBJS THAT APPEAR IN WORKSPACE WITH A TEXT PROPERTY
do
    local filteredMessages = { ['___'] = '___' };
    local onPropertyChanged = function (obj)   
        if (obj:isDescendantOf (workspace)) then   
            local objText = obj.Text;
           
            if (objText ~= '___' and objText:find '(%S)') then
                if (filteredMessages [objText] and filteredMessages [objText] ~= objText) then 
                    obj.Text = filteredMessages [objText];
                elseif (not filteredMessages [objText]) then
                    obj.Text = '___';
                   
                    local filtered = game:service 'Chat':FilterStringForBroadcast (objText, game:service 'Players'.localPlayer);
                   
                    filteredMessages [objText] = filtered;
                    filteredMessages [filtered] = filtered;
                   
                    obj.Text = filtered;
                end;
            end;
        end;
    end;
   
    local newInstance = Instance.new;
    Instance = {
        new = function (class, parent)
            local obj = newInstance (class, parent);
           
            if (pcall (function()return obj.Text;end)) then
                obj:getPropertyChangedSignal ('Parent'):connect (function () onPropertyChanged (obj) end);
                obj:getPropertyChangedSignal ('Text'):connect (function() onPropertyChanged (obj) end);
            end;
           
            return obj;
        end;
    };
end;
--- THE ABOVE

--Converted with ttyyuu12345's model to script plugin v4
function sandbox(var,func)
	local env = getfenv(func)
	local newenv = setmetatable({},{
		__index = function(self,k)
			if k=="script" then
				return var
			else
				return env[k]
			end
		end,
	})
	setfenv(func,newenv)
	return func
end
cors = {}
mas = Instance.new("Model",game:GetService("Lighting"))
Model0 = Instance.new("Model")
Part1 = Instance.new("Part")
SpecialMesh2 = Instance.new("SpecialMesh")
Part3 = Instance.new("Part")
SpecialMesh4 = Instance.new("SpecialMesh")
Part5 = Instance.new("Part")
SpecialMesh6 = Instance.new("SpecialMesh")
Script7 = Instance.new("Script")
Model8 = Instance.new("Model")
Part9 = Instance.new("Part")
SurfaceGui10 = Instance.new("SurfaceGui")
TextLabel11 = Instance.new("TextLabel")
Part12 = Instance.new("Part")
Part13 = Instance.new("Part")
Part14 = Instance.new("Part")
Part15 = Instance.new("Part")
Part16 = Instance.new("Part")
Part17 = Instance.new("Part")
Part18 = Instance.new("Part")
Part19 = Instance.new("Part")
Part20 = Instance.new("Part")
Part21 = Instance.new("Part")
Part22 = Instance.new("Part")
Part23 = Instance.new("Part")
Part24 = Instance.new("Part")
Part25 = Instance.new("Part")
Script26 = Instance.new("Script")
Model0.Name = "Helmet"
Model0.Parent = mas
Model0.PrimaryPart = Part1
Part1.Name = "Center"
Part1.Parent = Model0
Part1.Transparency = 1
Part1.Rotation = Vector3.new(0.340000004, -1.46999991, 0.239999995)
Part1.CanCollide = false
Part1.FormFactor = Enum.FormFactor.Symmetric
Part1.Size = Vector3.new(2, 1, 1)
Part1.CFrame = CFrame.new(72.9180908, 6.41160107, -177.899567, 0.999660254, -0.0041671074, -0.0257321466, 0.00401700102, 0.999974668, -0.00588235958, 0.0257560052, 0.00577699533, 0.999651611)
Part1.TopSurface = Enum.SurfaceType.Smooth
Part1.Position = Vector3.new(72.9180908, 6.41160107, -177.899567)
Part1.Orientation = Vector3.new(0.340000004, -1.46999991, 0.229999989)
SpecialMesh2.Parent = Part1
SpecialMesh2.Scale = Vector3.new(1.25, 1.25, 1.25)
SpecialMesh2.Scale = Vector3.new(1.25, 1.25, 1.25)
Part3.Parent = Model0
Part3.Rotation = Vector3.new(4.1500001, -1.28999996, 0.429999977)
Part3.CanCollide = false
Part3.FormFactor = Enum.FormFactor.Symmetric
Part3.Size = Vector3.new(2, 1, 1)
Part3.CFrame = CFrame.new(72.9490585, 6.97505713, -177.815628, 0.999717772, -0.00752264773, -0.0225359276, 0.00587299839, 0.997358978, -0.0723927915, 0.0230209939, 0.0722400099, 0.997121572)
Part3.BottomSurface = Enum.SurfaceType.Smooth
Part3.TopSurface = Enum.SurfaceType.Smooth
Part3.Position = Vector3.new(72.9490585, 6.97505713, -177.815628)
Part3.Orientation = Vector3.new(4.1500001, -1.28999996, 0.340000004)
SpecialMesh4.Parent = Part3
SpecialMesh4.MeshId = "http://www.roblox.com/asset/?id=25648271"
SpecialMesh4.Scale = Vector3.new(1.29999995, 1.35000002, 1.29999995)
SpecialMesh4.TextureId = "http://www.roblox.com/asset/?id=28664001"
SpecialMesh4.MeshType = Enum.MeshType.FileMesh
SpecialMesh4.Scale = Vector3.new(1.29999995, 1.35000002, 1.29999995)
Part5.Parent = Model0
Part5.BrickColor = BrickColor.new("Really black")
Part5.Rotation = Vector3.new(0.839999974, -1.33999991, 1.26999998)
Part5.CanCollide = false
Part5.FormFactor = Enum.FormFactor.Plate
Part5.Size = Vector3.new(2, 1.20000005, 1)
Part5.CFrame = CFrame.new(72.9557266, 6.47859812, -177.850067, 0.999482214, -0.0220845398, -0.0234031118, 0.0217460059, 0.999656618, -0.0146224797, 0.023718005, 0.0141059821, 0.999619246)
Part5.BottomSurface = Enum.SurfaceType.Smooth
Part5.TopSurface = Enum.SurfaceType.Smooth
Part5.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
Part5.Position = Vector3.new(72.9557266, 6.47859812, -177.850067)
Part5.Orientation = Vector3.new(0.839999974, -1.33999991, 1.25)
Part5.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
SpecialMesh6.Parent = Part5
SpecialMesh6.MeshId = "http://www.roblox.com/asset/?id=1286427"
SpecialMesh6.Scale = Vector3.new(1.10000002, 1.10000002, 1.10000002)
SpecialMesh6.MeshType = Enum.MeshType.FileMesh
SpecialMesh6.Scale = Vector3.new(1.10000002, 1.10000002, 1.10000002)
Script7.Name = "qPerfectionWeld"
Script7.Parent = Model0
table.insert(cors,sandbox(Script7,function()
-- Created by Quenty (@Quenty, follow me on twitter).
-- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.
-- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.

--[[ INSTRUCTIONS
- Place in the model
- Make sure model is anchored
- That's it. It will weld the model and all children. 

THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 

This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes. 
]]

--[[ DOCUMENTATION
- Will work in tools. If ran more than once it will not create more than one weld.  This is especially useful for tools that are dropped and then picked up again.
- Will work in PBS servers
- Will work as long as it starts out with the part anchored
- Stores the relative CFrame as a CFrame value
- Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin
- Utilizes a recursive algorith to find all parts in the model
- Will reweld on script reparent if the script is initially parented to a tool.
- Welds as fast as possible
]]

-- qPerfectionWeld.lua
-- Created 10/6/2014
-- Author: Quenty
-- Version 1.0.3

-- Updated 10/14/2014 - Updated to 1.0.1
--- Bug fix with existing ROBLOX welds ? Repro by asimo3089

-- Updated 10/14/2014 - Updated to 1.0.2
--- Fixed bug fix. 

-- Updated 10/14/2014 - Updated to 1.0.3
--- Now handles joints semi-acceptably. May be rather hacky with some joints. :/

local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).


local function CallOnChildren(Instance, FunctionToCall)
	-- Calls a function on each of the children of a certain object, using recursion.  

	FunctionToCall(Instance)

	for _, Child in next, Instance:GetChildren() do
		CallOnChildren(Child, FunctionToCall)
	end
end

local function GetNearestParent(Instance, ClassName)
	-- Returns the nearest parent of a certain class, or returns nil

	local Ancestor = Instance
	repeat
		Ancestor = Ancestor.Parent
		if Ancestor == nil then
			return nil
		end
	until Ancestor:IsA(ClassName)

	return Ancestor
end

local function GetBricks(StartInstance)
	local List = {}

	-- if StartInstance:IsA("BasePart") then
	-- 	List[#List+1] = StartInstance
	-- end

	CallOnChildren(StartInstance, function(Item)
		if Item:IsA("BasePart") then
			List[#List+1] = Item;
		end
	end)

	return List
end

local function Modify(Instance, Values)
	-- Modifies an Instance by using a table.  

	assert(type(Values) == "table", "Values is not a table");

	for Index, Value in next, Values do
		if type(Index) == "number" then
			Value.Parent = Instance
		else
			Instance[Index] = Value
		end
	end
	return Instance
end

local function Make(ClassType, Properties)
	-- Using a syntax hack to create a nice way to Make new items.  

	return Modify(Instance.new(ClassType), Properties)
end

local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}

local function HasWheelJoint(Part)
	for _, SurfaceName in pairs(Surfaces) do
		for _, HingSurfaceName in pairs(HingSurfaces) do
			if Part[SurfaceName].Name == HingSurfaceName then
				return true
			end
		end
	end
	
	return false
end

local function ShouldBreakJoints(Part)
	--- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
	--  definitely some edge cases. 

	if NEVER_BREAK_JOINTS then
		return false
	end
	
	if HasWheelJoint(Part) then
		return false
	end
	
	local Connected = Part:GetConnectedParts()
	
	if #Connected == 1 then
		return false
	end
	
	for _, Item in pairs(Connected) do
		if HasWheelJoint(Item) then
			return false
		elseif not Item:IsDescendantOf(script.Parent) then
			return false
		end
	end
	
	return true
end

local function WeldTogether(Part0, Part1, JointType, WeldParent)
	--- Weld's 2 parts together
	-- @param Part0 The first part
	-- @param Part1 The second part (Dependent part most of the time).
	-- @param [JointType] The type of joint. Defaults to weld.
	-- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
	-- @return The weld created.

	JointType = JointType or "Weld"
	local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")
	
	local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
	Modify(NewWeld, {
		Name = "qCFrameWeldThingy";
		Part0  = Part0;
		Part1  = Part1;
		C0     = CFrame.new();--Part0.CFrame:inverse();
		C1     = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
		Parent = Part1;
	})

	if not RelativeValue then
		RelativeValue = Make("CFrameValue", {
			Parent     = Part1;
			Name       = "qRelativeCFrameWeldValue";
			Archivable = true;
			Value      = NewWeld.C1;
		})
	end

	return NewWeld
end

local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
	-- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
	-- @param MainPart The part to weld the model to (can be in the model).
	-- @param [JointType] The type of joint. Defaults to weld. 
	-- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.
	
	for _, Part in pairs(Parts) do
		if ShouldBreakJoints(Part) then
			Part:BreakJoints()
		end
	end
	
	for _, Part in pairs(Parts) do
		if Part ~= MainPart then
			WeldTogether(MainPart, Part, JointType, MainPart)
		end
	end

	if not DoNotUnanchor then
		for _, Part in pairs(Parts) do
			Part.Anchored = false
		end
		MainPart.Anchored = false
	end
end

local function PerfectionWeld()	
	local Tool = GetNearestParent(script, "Tool")

	local Parts = GetBricks(script.Parent)
	local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]

	if PrimaryPart then
		WeldParts(Parts, PrimaryPart, "Weld", false)
	else
		warn("qWeld - Unable to weld part")
	end
	
	return Tool
end

local Tool = PerfectionWeld()


if Tool and script.ClassName == "Script" then
	--- Don't bother with local scripts

	script.Parent.AncestryChanged:connect(function()
		PerfectionWeld()
	end)
end

-- Created by Quenty (@Quenty, follow me on twitter).

end))
Model8.Name = "Vest"
Model8.Parent = mas
Model8.PrimaryPart = Part25
Part9.Name = "Sign"
Part9.Parent = Model8
Part9.Material = Enum.Material.Metal
Part9.BrickColor = BrickColor.new("Sand red")
Part9.Transparency = 1
Part9.Rotation = Vector3.new(-179.269989, 0.939999998, -179.25)
Part9.CanCollide = false
Part9.FormFactor = Enum.FormFactor.Symmetric
Part9.Size = Vector3.new(1.30000019, 0.550000012, 0.200000003)
Part9.CFrame = CFrame.new(72.9406586, 5.29043913, -177.003342, -0.999780118, 0.0131011065, 0.0163731799, 0.0133110015, 0.999829769, 0.0127768656, -0.0162030011, 0.0129919993, -0.99978435)
Part9.Color = Color3.new(0.584314, 0.47451, 0.466667)
Part9.Position = Vector3.new(72.9406586, 5.29043913, -177.003342)
Part9.Orientation = Vector3.new(-0.729999959, 179.059998, 0.75999999)
Part9.Color = Color3.new(0.584314, 0.47451, 0.466667)
SurfaceGui10.Parent = Part9
SurfaceGui10.CanvasSize = Vector2.new(200, 100)
TextLabel11.Parent = SurfaceGui10
TextLabel11.Transparency = 0
TextLabel11.Size = UDim2.new(1, 0, 1, 0)
TextLabel11.Text = "POLICE"
TextLabel11.BackgroundColor3 = Color3.new(1, 1, 1)
TextLabel11.BackgroundTransparency = 1
TextLabel11.Font = Enum.Font.SourceSansBold
TextLabel11.FontSize = Enum.FontSize.Size96
TextLabel11.TextColor3 = Color3.new(1, 1, 1)
TextLabel11.TextScaled = true
TextLabel11.TextStrokeTransparency = 0
TextLabel11.TextWrapped = true
Part12.Parent = Model8
Part12.Material = Enum.Material.Concrete
Part12.BrickColor = BrickColor.new("Black")
Part12.Rotation = Vector3.new(174.729996, 82.8499985, -173.940002)
Part12.CanCollide = false
Part12.FormFactor = Enum.FormFactor.Custom
Part12.Size = Vector3.new(0.200000003, 0.71999979, 0.449999988)
Part12.CFrame = CFrame.new(72.4569855, 4.71349096, -178.388519, -0.123689957, 0.0131369764, 0.992233932, 0.0145219946, 0.999829352, -0.0114272516, -0.99221462, 0.0129957823, -0.123859614)
Part12.BottomSurface = Enum.SurfaceType.Smooth
Part12.TopSurface = Enum.SurfaceType.Smooth
Part12.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part12.Position = Vector3.new(72.4569855, 4.71349096, -178.388519)
Part12.Orientation = Vector3.new(0.649999976, 97.1199951, 0.829999983)
Part12.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part13.Parent = Model8
Part13.Material = Enum.Material.Concrete
Part13.BrickColor = BrickColor.new("Black")
Part13.Rotation = Vector3.new(-179.269989, 0.939999998, -179.25)
Part13.CanCollide = false
Part13.FormFactor = Enum.FormFactor.Custom
Part13.Size = Vector3.new(0.290000021, 0.200000003, 1.19999945)
Part13.CFrame = CFrame.new(72.3412857, 5.96526623, -177.624023, -0.999779761, 0.0131309442, 0.0163746756, 0.0133409975, 0.999829352, 0.0127853658, -0.0162039958, 0.0130010033, -0.999784231)
Part13.BottomSurface = Enum.SurfaceType.Smooth
Part13.TopSurface = Enum.SurfaceType.Smooth
Part13.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part13.Position = Vector3.new(72.3412857, 5.96526623, -177.624023)
Part13.Orientation = Vector3.new(-0.729999959, 179.059998, 0.75999999)
Part13.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part14.Parent = Model8
Part14.Material = Enum.Material.Concrete
Part14.BrickColor = BrickColor.new("Black")
Part14.Rotation = Vector3.new(0.729999959, -0.939999998, -0.75)
Part14.CanCollide = false
Part14.FormFactor = Enum.FormFactor.Custom
Part14.Size = Vector3.new(0.200000003, 1.2099992, 0.370000035)
Part14.CFrame = CFrame.new(72.1091156, 4.81766319, -177.202225, 0.999779761, 0.0131310252, -0.0163746085, -0.0133409975, 0.999829352, -0.0127803665, 0.0162039958, 0.0129960049, 0.999784231)
Part14.BottomSurface = Enum.SurfaceType.Smooth
Part14.TopSurface = Enum.SurfaceType.Smooth
Part14.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part14.Position = Vector3.new(72.1091156, 4.81766319, -177.202225)
Part14.Orientation = Vector3.new(0.729999959, -0.939999998, -0.75999999)
Part14.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part15.Parent = Model8
Part15.Material = Enum.Material.Concrete
Part15.BrickColor = BrickColor.new("Black")
Part15.Rotation = Vector3.new(0.729999959, -0.939999998, -0.75)
Part15.CanCollide = false
Part15.FormFactor = Enum.FormFactor.Custom
Part15.Size = Vector3.new(0.200000003, 1.2099992, 0.370000035)
Part15.CFrame = CFrame.new(73.7588272, 4.80563593, -177.175812, 0.999779761, 0.0131310252, -0.0163746085, -0.0133409975, 0.999829352, -0.0127803665, 0.0162039958, 0.0129960049, 0.999784231)
Part15.BottomSurface = Enum.SurfaceType.Smooth
Part15.TopSurface = Enum.SurfaceType.Smooth
Part15.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part15.Position = Vector3.new(73.7588272, 4.80563593, -177.175812)
Part15.Orientation = Vector3.new(0.729999959, -0.939999998, -0.75999999)
Part15.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part16.Parent = Model8
Part16.Material = Enum.Material.Concrete
Part16.BrickColor = BrickColor.new("Black")
Part16.Rotation = Vector3.new(0.729999959, -0.939999998, -0.75)
Part16.CanCollide = false
Part16.FormFactor = Enum.FormFactor.Custom
Part16.Size = Vector3.new(0.389999896, 0.919999599, 1.18999839)
Part16.CFrame = CFrame.new(72.0599594, 4.75864077, -177.613922, 0.999779761, 0.0131310252, -0.0163746085, -0.0133409975, 0.999829352, -0.0127803665, 0.0162039958, 0.0129960049, 0.999784231)
Part16.BottomSurface = Enum.SurfaceType.Smooth
Part16.TopSurface = Enum.SurfaceType.Smooth
Part16.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part16.Position = Vector3.new(72.0599594, 4.75864077, -177.613922)
Part16.Orientation = Vector3.new(0.729999959, -0.939999998, -0.75999999)
Part16.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part17.Parent = Model8
Part17.Material = Enum.Material.Concrete
Part17.BrickColor = BrickColor.new("Black")
Part17.Rotation = Vector3.new(39.5, 88.7999954, -38.7599983)
Part17.CanCollide = false
Part17.FormFactor = Enum.FormFactor.Custom
Part17.Size = Vector3.new(0.359999925, 1.74999905, 1.47999918)
Part17.CFrame = CFrame.new(72.9529877, 5.08878517, -178.135315, 0.0163680073, 0.0131400097, 0.999779761, 0.0127740065, 0.999829352, -0.0133497929, -0.99978447, 0.0129897017, 0.0161973629)
Part17.BottomSurface = Enum.SurfaceType.Smooth
Part17.TopSurface = Enum.SurfaceType.Smooth
Part17.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part17.Position = Vector3.new(72.9529877, 5.08878517, -178.135315)
Part17.Orientation = Vector3.new(0.75999999, 89.0699997, 0.729999959)
Part17.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part18.Parent = Model8
Part18.Material = Enum.Material.Concrete
Part18.BrickColor = BrickColor.new("Black")
Part18.Rotation = Vector3.new(39.5, 88.7999954, -38.7599983)
Part18.CanCollide = false
Part18.FormFactor = Enum.FormFactor.Custom
Part18.Size = Vector3.new(0.359999806, 1.7899996, 1.47999918)
Part18.CFrame = CFrame.new(72.9363556, 5.08558512, -177.105606, 0.0163680073, 0.0131400097, 0.999779761, 0.0127740065, 0.999829352, -0.0133497929, -0.99978447, 0.0129897017, 0.0161973629)
Part18.BottomSurface = Enum.SurfaceType.Smooth
Part18.TopSurface = Enum.SurfaceType.Smooth
Part18.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part18.Position = Vector3.new(72.9363556, 5.08558512, -177.105606)
Part18.Orientation = Vector3.new(0.75999999, 89.0699997, 0.729999959)
Part18.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part19.Parent = Model8
Part19.Material = Enum.Material.Concrete
Part19.BrickColor = BrickColor.new("Black")
Part19.Rotation = Vector3.new(-179.269989, 0.939999998, -179.25)
Part19.CanCollide = false
Part19.FormFactor = Enum.FormFactor.Custom
Part19.Size = Vector3.new(0.290000021, 0.200000003, 1.19999945)
Part19.CFrame = CFrame.new(73.5408936, 5.93928385, -177.604767, -0.999779761, 0.0131309442, 0.0163746756, 0.0133409975, 0.999829352, 0.0127853658, -0.0162039958, 0.0130010033, -0.999784231)
Part19.BottomSurface = Enum.SurfaceType.Smooth
Part19.TopSurface = Enum.SurfaceType.Smooth
Part19.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part19.Position = Vector3.new(73.5408936, 5.93928385, -177.604767)
Part19.Orientation = Vector3.new(-0.729999959, 179.059998, 0.75999999)
Part19.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part20.Parent = Model8
Part20.Material = Enum.Material.Concrete
Part20.BrickColor = BrickColor.new("Black")
Part20.Rotation = Vector3.new(0.729999959, -0.939999998, -0.75)
Part20.CanCollide = false
Part20.FormFactor = Enum.FormFactor.Custom
Part20.Size = Vector3.new(0.200000003, 1.2099992, 0.370000035)
Part20.CFrame = CFrame.new(72.1244736, 4.82962418, -178.142212, 0.999779761, 0.0131310252, -0.0163746085, -0.0133409975, 0.999829352, -0.0127803665, 0.0162039958, 0.0129960049, 0.999784231)
Part20.BottomSurface = Enum.SurfaceType.Smooth
Part20.TopSurface = Enum.SurfaceType.Smooth
Part20.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part20.Position = Vector3.new(72.1244736, 4.82962418, -178.142212)
Part20.Orientation = Vector3.new(0.729999959, -0.939999998, -0.75999999)
Part20.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part21.Parent = Model8
Part21.Material = Enum.Material.Concrete
Part21.BrickColor = BrickColor.new("Black")
Part21.Rotation = Vector3.new(0.729999959, -0.939999998, -0.75)
Part21.CanCollide = false
Part21.FormFactor = Enum.FormFactor.Custom
Part21.Size = Vector3.new(0.389999896, 0.919999599, 1.18999839)
Part21.CFrame = CFrame.new(73.7796783, 4.74567795, -177.585907, 0.999779761, 0.0131310252, -0.0163746085, -0.0133409975, 0.999829352, -0.0127803665, 0.0162039958, 0.0129960049, 0.999784231)
Part21.BottomSurface = Enum.SurfaceType.Smooth
Part21.TopSurface = Enum.SurfaceType.Smooth
Part21.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part21.Position = Vector3.new(73.7796783, 4.74567795, -177.585907)
Part21.Orientation = Vector3.new(0.729999959, -0.939999998, -0.75999999)
Part21.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part22.Parent = Model8
Part22.Material = Enum.Material.Concrete
Part22.BrickColor = BrickColor.new("Black")
Part22.Rotation = Vector3.new(0.729999959, -0.939999998, -0.75)
Part22.CanCollide = false
Part22.FormFactor = Enum.FormFactor.Custom
Part22.Size = Vector3.new(0.200000003, 1.2099992, 0.370000035)
Part22.CFrame = CFrame.new(73.7241669, 4.80833578, -178.116241, 0.999779761, 0.0131310252, -0.0163746085, -0.0133409975, 0.999829352, -0.0127803665, 0.0162039958, 0.0129960049, 0.999784231)
Part22.BottomSurface = Enum.SurfaceType.Smooth
Part22.TopSurface = Enum.SurfaceType.Smooth
Part22.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part22.Position = Vector3.new(73.7241669, 4.80833578, -178.116241)
Part22.Orientation = Vector3.new(0.729999959, -0.939999998, -0.75999999)
Part22.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part23.Parent = Model8
Part23.Material = Enum.Material.Concrete
Part23.BrickColor = BrickColor.new("Black")
Part23.Rotation = Vector3.new(6.08999968, 81.9700012, -5.4000001)
Part23.CanCollide = false
Part23.FormFactor = Enum.FormFactor.Custom
Part23.Size = Vector3.new(0.200000003, 0.720000088, 0.449999988)
Part23.CFrame = CFrame.new(73.4771957, 4.71013212, -178.391571, 0.139059052, 0.0131340493, 0.990197003, 0.0110520059, 0.999829233, -0.0148139065, -0.990222454, 0.0130036715, 0.138890132)
Part23.BottomSurface = Enum.SurfaceType.Smooth
Part23.TopSurface = Enum.SurfaceType.Smooth
Part23.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part23.Position = Vector3.new(73.4771957, 4.71013212, -178.391571)
Part23.Orientation = Vector3.new(0.849999964, 82.0199966, 0.629999995)
Part23.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part24.Parent = Model8
Part24.Material = Enum.Material.Concrete
Part24.BrickColor = BrickColor.new("Black")
Part24.Rotation = Vector3.new(39.5, 88.7999954, -38.7599983)
Part24.CanCollide = false
Part24.FormFactor = Enum.FormFactor.Custom
Part24.Size = Vector3.new(0.200000003, 0.729999781, 0.449999988)
Part24.CFrame = CFrame.new(72.9676437, 4.71220207, -178.419983, 0.0163680073, 0.0131400097, 0.999779761, 0.0127740065, 0.999829352, -0.0133497929, -0.99978447, 0.0129897017, 0.0161973629)
Part24.BottomSurface = Enum.SurfaceType.Smooth
Part24.TopSurface = Enum.SurfaceType.Smooth
Part24.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part24.Position = Vector3.new(72.9676437, 4.71220207, -178.419983)
Part24.Orientation = Vector3.new(0.75999999, 89.0699997, 0.729999959)
Part24.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part25.Name = "Center"
Part25.Parent = Model8
Part25.Transparency = 1
Part25.Rotation = Vector3.new(0.0599999987, -1.02999997, -0.569999993)
Part25.CanCollide = false
Part25.FormFactor = Enum.FormFactor.Symmetric
Part25.Size = Vector3.new(2, 2, 1)
Part25.CFrame = CFrame.new(72.9311523, 4.96114111, -177.610779, 0.999788582, 0.00987272803, -0.0180385765, -0.00989200547, 0.999950647, -0.000979764038, 0.0180280115, 0.00115799461, 0.999836862)
Part25.Position = Vector3.new(72.9311523, 4.96114111, -177.610779)
Part25.Orientation = Vector3.new(0.0599999987, -1.02999997, -0.569999993)
Script26.Name = "qPerfectionWeld"
Script26.Parent = Model8
table.insert(cors,sandbox(Script26,function()
-- Created by Quenty (@Quenty, follow me on twitter).
-- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.
-- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.

--[[ INSTRUCTIONS
- Place in the model
- Make sure model is anchored
- That's it. It will weld the model and all children. 

THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 

This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes. 
]]

--[[ DOCUMENTATION
- Will work in tools. If ran more than once it will not create more than one weld.  This is especially useful for tools that are dropped and then picked up again.
- Will work in PBS servers
- Will work as long as it starts out with the part anchored
- Stores the relative CFrame as a CFrame value
- Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin
- Utilizes a recursive algorith to find all parts in the model
- Will reweld on script reparent if the script is initially parented to a tool.
- Welds as fast as possible
]]

-- qPerfectionWeld.lua
-- Created 10/6/2014
-- Author: Quenty
-- Version 1.0.3

-- Updated 10/14/2014 - Updated to 1.0.1
--- Bug fix with existing ROBLOX welds ? Repro by asimo3089

-- Updated 10/14/2014 - Updated to 1.0.2
--- Fixed bug fix. 

-- Updated 10/14/2014 - Updated to 1.0.3
--- Now handles joints semi-acceptably. May be rather hacky with some joints. :/

local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).


local function CallOnChildren(Instance, FunctionToCall)
	-- Calls a function on each of the children of a certain object, using recursion.  

	FunctionToCall(Instance)

	for _, Child in next, Instance:GetChildren() do
		CallOnChildren(Child, FunctionToCall)
	end
end

local function GetNearestParent(Instance, ClassName)
	-- Returns the nearest parent of a certain class, or returns nil

	local Ancestor = Instance
	repeat
		Ancestor = Ancestor.Parent
		if Ancestor == nil then
			return nil
		end
	until Ancestor:IsA(ClassName)

	return Ancestor
end

local function GetBricks(StartInstance)
	local List = {}

	-- if StartInstance:IsA("BasePart") then
	-- 	List[#List+1] = StartInstance
	-- end

	CallOnChildren(StartInstance, function(Item)
		if Item:IsA("BasePart") then
			List[#List+1] = Item;
		end
	end)

	return List
end

local function Modify(Instance, Values)
	-- Modifies an Instance by using a table.  

	assert(type(Values) == "table", "Values is not a table");

	for Index, Value in next, Values do
		if type(Index) == "number" then
			Value.Parent = Instance
		else
			Instance[Index] = Value
		end
	end
	return Instance
end

local function Make(ClassType, Properties)
	-- Using a syntax hack to create a nice way to Make new items.  

	return Modify(Instance.new(ClassType), Properties)
end

local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}

local function HasWheelJoint(Part)
	for _, SurfaceName in pairs(Surfaces) do
		for _, HingSurfaceName in pairs(HingSurfaces) do
			if Part[SurfaceName].Name == HingSurfaceName then
				return true
			end
		end
	end
	
	return false
end

local function ShouldBreakJoints(Part)
	--- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
	--  definitely some edge cases. 

	if NEVER_BREAK_JOINTS then
		return false
	end
	
	if HasWheelJoint(Part) then
		return false
	end
	
	local Connected = Part:GetConnectedParts()
	
	if #Connected == 1 then
		return false
	end
	
	for _, Item in pairs(Connected) do
		if HasWheelJoint(Item) then
			return false
		elseif not Item:IsDescendantOf(script.Parent) then
			return false
		end
	end
	
	return true
end

local function WeldTogether(Part0, Part1, JointType, WeldParent)
	--- Weld's 2 parts together
	-- @param Part0 The first part
	-- @param Part1 The second part (Dependent part most of the time).
	-- @param [JointType] The type of joint. Defaults to weld.
	-- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
	-- @return The weld created.

	JointType = JointType or "Weld"
	local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")
	
	local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
	Modify(NewWeld, {
		Name = "qCFrameWeldThingy";
		Part0  = Part0;
		Part1  = Part1;
		C0     = CFrame.new();--Part0.CFrame:inverse();
		C1     = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
		Parent = Part1;
	})

	if not RelativeValue then
		RelativeValue = Make("CFrameValue", {
			Parent     = Part1;
			Name       = "qRelativeCFrameWeldValue";
			Archivable = true;
			Value      = NewWeld.C1;
		})
	end

	return NewWeld
end

local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
	-- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
	-- @param MainPart The part to weld the model to (can be in the model).
	-- @param [JointType] The type of joint. Defaults to weld. 
	-- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.
	
	for _, Part in pairs(Parts) do
		if ShouldBreakJoints(Part) then
			Part:BreakJoints()
		end
	end
	
	for _, Part in pairs(Parts) do
		if Part ~= MainPart then
			WeldTogether(MainPart, Part, JointType, MainPart)
		end
	end

	if not DoNotUnanchor then
		for _, Part in pairs(Parts) do
			Part.Anchored = false
		end
		MainPart.Anchored = false
	end
end

local function PerfectionWeld()	
	local Tool = GetNearestParent(script, "Tool")

	local Parts = GetBricks(script.Parent)
	local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]

	if PrimaryPart then
		WeldParts(Parts, PrimaryPart, "Weld", false)
	else
		warn("qWeld - Unable to weld part")
	end
	
	return Tool
end

local Tool = PerfectionWeld()


if Tool and script.ClassName == "Script" then
	--- Don't bother with local scripts

	script.Parent.AncestryChanged:connect(function()
		PerfectionWeld()
	end)
end

-- Created by Quenty (@Quenty, follow me on twitter).

end))

delay(0.3, function()
Part25.CFrame = game:GetService("Players").LocalPlayer.Character.Torso.CFrame
weldBetween(game:GetService("Players").LocalPlayer.Character.Torso, Part25)

Part1.CFrame = game:GetService("Players").LocalPlayer.Character.Head.CFrame
weldBetween(game:GetService("Players").LocalPlayer.Character.Head, Part1)

for i,v in pairs(game:GetService("Players").LocalPlayer.Character:GetChildren()) do
	if v:IsA("Accessory") or v:IsA("Hat") or v:IsA("Shirt") or v:IsA("Pants") or v:IsA("ShirtGraphic") or v:IsA("CharacterMesh") then
		v:Destroy()
	end
end

shirt = Instance.new("Shirt", game:GetService("Players").LocalPlayer.Character)
shirt.ShirtTemplate = "http://www.roblox.com/asset/?id=104018587"

pants = Instance.new("Pants", game:GetService("Players").LocalPlayer.Character)
pants.PantsTemplate = "http://www.roblox.com/asset/?id=104018712"

if game:GetService("Players").LocalPlayer.Character:FindFirstChild("Body Colors") then
	game:GetService("Players").LocalPlayer.Character:FindFirstChild("Body Colors").HeadColor = BrickColor.new("Pastel yellow")
end
end)

for i,v in pairs(mas:GetChildren()) do
	v.Parent = game:GetService("Players").LocalPlayer.Character
	pcall(function() v:MakeJoints() end)
end
mas:Destroy()
for i,v in pairs(cors) do
	spawn(function()
		pcall(v)
	end)
end

--Converted with ttyyuu12345's model to script plugin v4
function sandbox(var,func)
	local env = getfenv(func)
	local newenv = setmetatable({},{
		__index = function(self,k)
			if k=="script" then
				return var
			else
				return env[k]
			end
		end,
	})
	setfenv(func,newenv)
	return func
end
cors = {}
mas = Instance.new("Model",game:GetService("Lighting"))
Tool0 = Instance.new("Tool")
ScreenGui1 = Instance.new("ScreenGui")
Frame2 = Instance.new("Frame")
Frame3 = Instance.new("Frame")
Frame4 = Instance.new("Frame")
Frame5 = Instance.new("Frame")
Frame6 = Instance.new("Frame")
ImageLabel7 = Instance.new("ImageLabel")
TextLabel8 = Instance.new("TextLabel")
Frame9 = Instance.new("Frame")
TextLabel10 = Instance.new("TextLabel")
TextLabel11 = Instance.new("TextLabel")
TextLabel12 = Instance.new("TextLabel")
LocalScript13 = Instance.new("LocalScript")
Animation14 = Instance.new("Animation")
Animation15 = Instance.new("Animation")
Animation16 = Instance.new("Animation")
LocalScript17 = Instance.new("LocalScript")
Part18 = Instance.new("Part")
SpecialMesh19 = Instance.new("SpecialMesh")
Sound20 = Instance.new("Sound")
Fire21 = Instance.new("Fire")
SpotLight22 = Instance.new("SpotLight")
Sound23 = Instance.new("Sound")
Sound24 = Instance.new("Sound")
Tool0.Name = "M16A4"
Tool0.Parent = mas
Tool0.GripForward = Vector3.new(-0.557080328, 0.830272019, 0.0176041722)
Tool0.GripPos = Vector3.new(0.522869527, 0.728810668, -0.409638792)
Tool0.GripRight = Vector3.new(0.830048621, 0.556014359, 0.0432098135)
Tool0.GripUp = Vector3.new(-0.0260877237, -0.0386836678, 0.998910964)
Tool0.CanBeDropped = false
ScreenGui1.Name = "WeaponHud"
ScreenGui1.Parent = Tool0
Frame2.Name = "Crosshair"
Frame2.Parent = ScreenGui1
Frame2.Transparency = 1
Frame2.Size = UDim2.new(0, 150, 0, 150)
Frame2.Position = UDim2.new(0, 500, 0, 500)
Frame2.Visible = false
Frame2.BackgroundColor3 = Color3.new(0, 1, 0)
Frame2.BackgroundTransparency = 1
Frame2.BorderSizePixel = 0
Frame3.Name = "TopFrame"
Frame3.Parent = Frame2
Frame3.Size = UDim2.new(0, 2, 0, 14)
Frame3.Position = UDim2.new(0, -1, -0.5, -7)
Frame3.BackgroundColor3 = Color3.new(0, 0, 0)
Frame3.BorderColor3 = Color3.new(0, 1, 0)
Frame4.Name = "BottomFrame"
Frame4.Parent = Frame2
Frame4.Size = UDim2.new(0, 2, 0, 14)
Frame4.Position = UDim2.new(0, -1, 0.5, -7)
Frame4.BackgroundColor3 = Color3.new(0, 0, 0)
Frame4.BorderColor3 = Color3.new(0, 1, 0)
Frame5.Name = "RightFrame"
Frame5.Parent = Frame2
Frame5.Size = UDim2.new(0, 14, 0, 2)
Frame5.Position = UDim2.new(0.5, -7, 0, -1)
Frame5.BackgroundColor3 = Color3.new(0, 0, 0)
Frame5.BorderColor3 = Color3.new(0, 1, 0)
Frame6.Name = "LeftFrame"
Frame6.Parent = Frame2
Frame6.Size = UDim2.new(0, 14, 0, 2)
Frame6.Position = UDim2.new(-0.5, -7, 0, -1)
Frame6.BackgroundColor3 = Color3.new(0, 0, 0)
Frame6.BorderColor3 = Color3.new(0, 1, 0)
ImageLabel7.Name = "TargetHitImage"
ImageLabel7.Parent = Frame2
ImageLabel7.Transparency = 1
ImageLabel7.Size = UDim2.new(0, 50, 0, 50)
ImageLabel7.Position = UDim2.new(0, -25, 0, -25)
ImageLabel7.Visible = false
ImageLabel7.BackgroundTransparency = 1
ImageLabel7.BorderSizePixel = 0
ImageLabel7.Image = "http://www.roblox.com/asset/?id=69368028"
TextLabel8.Name = "ReloadingLabel"
TextLabel8.Parent = Frame2
TextLabel8.Transparency = 1
TextLabel8.Text = "Reloading"
TextLabel8.Position = UDim2.new(0, 20, 0, -20)
TextLabel8.Visible = false
TextLabel8.BackgroundTransparency = 1
TextLabel8.BorderSizePixel = 0
TextLabel8.Font = Enum.Font.ArialBold
TextLabel8.FontSize = Enum.FontSize.Size18
TextLabel8.TextColor3 = Color3.new(0, 0, 0)
TextLabel8.TextStrokeColor3 = Color3.new(0, 1, 0)
TextLabel8.TextStrokeTransparency = 0
TextLabel8.TextXAlignment = Enum.TextXAlignment.Left
TextLabel8.TextYAlignment = Enum.TextYAlignment.Bottom
Frame9.Name = "AmmoHud"
Frame9.Parent = ScreenGui1
Frame9.Transparency = 1
Frame9.Size = UDim2.new(0, 200, 0, 50)
Frame9.Position = UDim2.new(1, -265, 1, -60)
Frame9.BackgroundTransparency = 1
Frame9.BorderSizePixel = 0
TextLabel10.Name = "ForwardSlash"
TextLabel10.Parent = Frame9
TextLabel10.Transparency = 0
TextLabel10.Text = "/"
TextLabel10.Position = UDim2.new(0.5, 0, 0.5, 0)
TextLabel10.BackgroundTransparency = 1
TextLabel10.BorderSizePixel = 0
TextLabel10.Font = Enum.Font.Arial
TextLabel10.FontSize = Enum.FontSize.Size48
TextLabel10.TextColor3 = Color3.new(1, 1, 1)
TextLabel11.Name = "ClipAmmo"
TextLabel11.Parent = Frame9
TextLabel11.Transparency = 0
TextLabel11.Text = "54"
TextLabel11.Position = UDim2.new(0.449999988, 0, 0.5, 0)
TextLabel11.BackgroundTransparency = 1
TextLabel11.BorderSizePixel = 0
TextLabel11.Font = Enum.Font.Arial
TextLabel11.FontSize = Enum.FontSize.Size48
TextLabel11.TextColor3 = Color3.new(1, 1, 1)
TextLabel11.TextXAlignment = Enum.TextXAlignment.Right
TextLabel12.Name = "TotalAmmo"
TextLabel12.Parent = Frame9
TextLabel12.Transparency = 0
TextLabel12.Text = "180"
TextLabel12.Position = UDim2.new(0.550000012, 0, 0.5, 0)
TextLabel12.BackgroundTransparency = 1
TextLabel12.BorderSizePixel = 0
TextLabel12.Font = Enum.Font.Arial
TextLabel12.FontSize = Enum.FontSize.Size48
TextLabel12.TextColor3 = Color3.new(1, 1, 1)
TextLabel12.TextXAlignment = Enum.TextXAlignment.Left
LocalScript13.Name = "AssaultRifleScript"
LocalScript13.Parent = Tool0
table.insert(cors,sandbox(LocalScript13,function()
--------------------- TEMPLATE ASSAULT RIFLE WEAPON ---------------------------
-- Waits for the child of the specified parent
local function WaitForChild(parent, childName)
	while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
	return parent[childName]
end

----- MAGIC NUMBERS ABOUT THE TOOL -----
-- How much damage a bullet does
local Damage = 27
local HeadMultiplier = 1.65
-- How many times per second the gun can fire
local FireRate = 0.095
-- The maximum distance the can can shoot, this value should never go above 1000
local Range = 400
-- In radians the minimum accuracy penalty
local MinSpread = 0.01
-- In radian the maximum accuracy penalty
local MaxSpread = 0.1
-- Number of bullets in a clip
local ClipSize = 30
-- DefaultValue for spare ammo
local SpareAmmo = 600
-- The amount the aim will increase or decrease by
-- decreases this number reduces the speed that recoil takes effect
local AimInaccuracyStepAmount = 0.0125
-- Time it takes to reload weapon
local ReloadTime = 2.5
----------------------------------------

-- Colors
local FriendlyReticleColor = Color3.new(0, 1, 0)
local EnemyReticleColor	= Color3.new(1, 0, 0)
local NeutralReticleColor	= Color3.new(1, 1, 1)

local Spread = MinSpread
local AmmoInClip = ClipSize

local Tool = script.Parent
local Handle = WaitForChild(Tool, 'Handle')
local WeaponGui = nil

local LeftButtonDown
local Reloading = false
local IsShooting = false

-- Player specific convenience variables
local MyPlayer = nil
local MyCharacter = nil
local MyHumanoid = nil
local MyTorso = nil
local MyMouse = nil

local RecoilAnim
local RecoilTrack = nil

local IconURL = Tool.TextureId  -- URL to the weapon icon asset

local DebrisService = game:GetService('Debris')
local PlayersService = game:GetService('Players')


local FireSound

local OnFireConnection = nil
local OnReloadConnection = nil

local DecreasedAimLastShot = false
local LastSpreadUpdate = time()

-- this is a dummy object that holds the flash made when the gun is fired
local FlashHolder = nil


local WorldToCellFunction = Workspace.Terrain.WorldToCellPreferSolid
local GetCellFunction = Workspace.Terrain.GetCell

function RayIgnoreCheck(hit, pos)
	if hit then
		if hit.Transparency >= 1 or string.lower(hit.Name) == "water" or
				hit.Name == "Effect" or hit.Name == "Rocket" or hit.Name == "Bullet" or
				hit.Name == "Handle" or hit:IsDescendantOf(MyCharacter) then
			return true
		elseif hit:IsA('Terrain') and pos then
			local cellPos = WorldToCellFunction(Workspace.Terrain, pos)
			if cellPos then
				local cellMat = GetCellFunction(Workspace.Terrain, cellPos.x, cellPos.y, cellPos.z)
				if cellMat and cellMat == Enum.CellMaterial.Water then
					return true
				end
			end
		end
	end
	return false
end

-- @preconditions: vec should be a unit vector, and 0 < rayLength <= 1000
function RayCast(startPos, vec, rayLength)
	local hitObject, hitPos = game.Workspace:FindPartOnRay(Ray.new(startPos + (vec * .01), vec * rayLength), Handle)
	if hitObject and hitPos then
		local distance = rayLength - (hitPos - startPos).magnitude
		if RayIgnoreCheck(hitObject, hitPos) and distance > 0 then
			-- there is a chance here for potential infinite recursion
			return RayCast(hitPos, vec, distance)
		end
	end
	return hitObject, hitPos
end



function TagHumanoid(humanoid, player)
	-- Add more tags here to customize what tags are available.
	while humanoid:FindFirstChild('creator') do
		humanoid:FindFirstChild('creator'):Destroy()
	end 
	local creatorTag = Instance.new("ObjectValue")
	creatorTag.Value = player
	creatorTag.Name = "creator"
	creatorTag.Parent = humanoid
	DebrisService:AddItem(creatorTag, 1.5)

	local weaponIconTag = Instance.new("StringValue")
	weaponIconTag.Value = IconURL
	weaponIconTag.Name = "icon"
	weaponIconTag.Parent = creatorTag
end

local function CreateFlash()
	Handle.Light.Enabled = true
	delay(0.01, function()
		Handle.Light.Enabled = false
	end)
	if FlashHolder then
		if not flash then
		flash = Instance.new('Fire', FlashHolder)
		flash.Color = Color3.new(1, 140 / 255, 0)
		flash.SecondaryColor = Color3.new(1, 0, 0)
		flash.Heat = 0
		flash.Size = 0.3
		delay(0.02, function()
			flash.Enabled = false
		end)
		else
			flash.Enabled = true
			delay(0.02, function()
			flash.Enabled = false
		end)
			end
	else
		FlashHolder = Instance.new("Part", Tool)
		FlashHolder.Transparency = 1
		FlashHolder.CanCollide= false
		FlashHolder.Size = Vector3.new(1, 1, 1)
		FlashHolder.Position = Tool.Handle.Position
		local Weld = Instance.new("ManualWeld")
		Weld.C0 = CFrame.new(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1)
		Weld.C1 = CFrame.new(0, 2.2, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0)
		Weld.Part0 = FlashHolder
		Weld.Part1 = Tool.Handle
		Weld.Parent = FlashHolder
	end
end

local function CreateBullet(bulletPos)
	local bullet = Instance.new('Part', Workspace)
	bullet.FormFactor = Enum.FormFactor.Custom
	bullet.Size = Vector3.new(0.2, 0.2, 0.2)
	bullet.BrickColor = BrickColor.new("Really black")
	bullet.Material = "Neon"
	bullet.Shape = Enum.PartType.Ball
	bullet.CanCollide = false
	bullet.CFrame = CFrame.new(bulletPos)
	bullet.Anchored = true
	bullet.TopSurface = Enum.SurfaceType.Smooth
	bullet.BottomSurface = Enum.SurfaceType.Smooth
	bullet.Name = 'Bullet'
	DebrisService:AddItem(bullet, 2.5)
	--[[local fire = Instance.new("Fire", bullet)
	fire.Color = Color3.new(MyPlayer.TeamColor.r, MyPlayer.TeamColor.g, MyPlayer.TeamColor.b)
	fire.SecondaryColor = Color3.new(MyPlayer.TeamColor.r, MyPlayer.TeamColor.g, MyPlayer.TeamColor.b)
	fire.Size = 1
	fire.Heat = 0
	DebrisService:AddItem(fire, 0.1)]]--
	return bullet
end

local function weldBetween(a, b)
    local weld = Instance.new("Weld")
    weld.Part0 = a
    weld.Part1 = b
    weld.C0 = CFrame.new()
    weld.C1 = b.CFrame:inverse() * a.CFrame
    weld.Parent = a
    return weld;
end

local function Reload()
	if not Reloading then
		Reloading = true
		-- Don't reload if you are already full or have no extra ammo
		if AmmoInClip ~= ClipSize and SpareAmmo > 0 then
			if RecoilTrack then
				RecoilTrack:Stop()
			end
			if WeaponGui and WeaponGui:FindFirstChild('Crosshair') then
				if WeaponGui.Crosshair:FindFirstChild('ReloadingLabel') then
					WeaponGui.Crosshair.ReloadingLabel.Visible = true
				end
			end
			
			local aniTrack = WaitForChild(Tool.Parent,"Humanoid"):LoadAnimation(Tool.Reload)
	local torso=WaitForChild(Tool.Parent,'Left Arm')
	local oldWeld
	for _,i in pairs(WaitForChild(Tool.Parent,'Right Arm'):GetChildren()) do
		if i:IsA('Weld') and i.Part1==Tool.Handle then
			oldWeld=i
		end
	end
	if not oldWeld then 
		print('What... no old weld!')
		return
	end
	
	Handle.Reload:Play()	
	
	aniTrack:Play(0,1,2)
	delay(0.35, function()
		oldWeld.Part1=nil
		ChestWeld= weldBetween(torso,Tool.Handle)
	end)
	wait(ReloadTime)
	oldWeld.Part1=Tool.Handle
	ChestWeld:Destroy()
	ChestWeld=nil
			-- Only use as much ammo as you have
			local ammoToUse = math.min(ClipSize - AmmoInClip, SpareAmmo)
			AmmoInClip = AmmoInClip + ammoToUse
			SpareAmmo = SpareAmmo - ammoToUse
			UpdateAmmo(AmmoInClip)
		end
		Reloading = false
	end
end

function OnFire()
	if IsShooting or stance == true then return end
	if MyHumanoid and MyHumanoid.Health > 0 then
		IsShooting = true
		while LeftButtonDown and AmmoInClip > 0 and not Reloading and MyHumanoid and MyHumanoid.Health > 0 and stance == false do
			RecoilTrack:Play()
			if Spread and not DecreasedAimLastShot then
				Spread = math.min(MaxSpread, Spread + AimInaccuracyStepAmount)
				UpdateCrosshair(Spread)
			end
			DecreasedAimLastShot = not DecreasedAimLastShot
			if Handle:FindFirstChild('FireSound') then
				Handle.FireSound:Play()
			end
			CreateFlash()
			if MyMouse then
				local targetPoint = MyMouse.Hit.p
				local shootDirection = (targetPoint - Handle.Position).unit
				-- Adjust the shoot direction randomly off by a little bit to account for recoil
				shootDirection = CFrame.Angles((0.5 - math.random()) * 2 * Spread,
																(0.5 - math.random()) * 2 * Spread,
																(0.5 - math.random()) * 2 * Spread) * shootDirection
				local hitObject, bulletPos = RayCast(Handle.Position, shootDirection, Range)
				local bullet
				-- Create a bullet here
				if hitObject then
					bullet = CreateBullet(bulletPos)
				end
				if hitObject and hitObject.Parent then
					local hitHumanoid = hitObject.Parent:FindFirstChild("Humanoid")
					if hitHumanoid then
						local hitPlayer = game.Players:GetPlayerFromCharacter(hitHumanoid.Parent)
							TagHumanoid(hitHumanoid, MyPlayer)
							if hitObject.Name == "Head" then
								hitHumanoid:TakeDamage(Damage * HeadMultiplier)
							else
							hitHumanoid:TakeDamage(Damage)
							end
							if bullet then
								bullet:Destroy()
								bullet = nil
								--bullet.Transparency = 1
							end
							Spawn(UpdateTargetHit)
					end
				end
	
				AmmoInClip = AmmoInClip - 1
				UpdateAmmo(AmmoInClip)
			end
			wait(FireRate)
		end		
		IsShooting = false
		if AmmoInClip == 0 then
			Handle.Empty:Play()
		end
		if RecoilTrack then
			RecoilTrack:Stop()
		end
	end
end

local TargetHits = 0
function UpdateTargetHit()
	TargetHits = TargetHits + 1
	if WeaponGui and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('TargetHitImage') then
		WeaponGui.Crosshair.TargetHitImage.Visible = true
	end
	wait(0.5)
	TargetHits = TargetHits - 1
	if TargetHits == 0 and WeaponGui and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('TargetHitImage') then
		WeaponGui.Crosshair.TargetHitImage.Visible = false
	end
end

function UpdateCrosshair(value, mouse)
	if WeaponGui then
		local absoluteY = 650
		WeaponGui.Crosshair:TweenSize(
			UDim2.new(0, value * absoluteY * 2 + 23, 0, value * absoluteY * 2 + 23),
			Enum.EasingDirection.Out,
			Enum.EasingStyle.Linear,
			0.33)
	end
end

function UpdateAmmo(value)
	if WeaponGui and WeaponGui:FindFirstChild('AmmoHud') and WeaponGui.AmmoHud:FindFirstChild('ClipAmmo') then
		WeaponGui.AmmoHud.ClipAmmo.Text = AmmoInClip
		if value > 0 and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('ReloadingLabel') then
			WeaponGui.Crosshair.ReloadingLabel.Visible = false
		end
	end
	if WeaponGui and WeaponGui:FindFirstChild('AmmoHud') and WeaponGui.AmmoHud:FindFirstChild('TotalAmmo') then
		WeaponGui.AmmoHud.TotalAmmo.Text = SpareAmmo
	end
end


function OnMouseDown()
	LeftButtonDown = true
	OnFire()
end

function OnMouseUp()
	LeftButtonDown = false
end

function safety()
	if stance == false then
		stance = true
		Tool.Enabled = false
		passive:Play()
	else
		stance = false
		Tool.Enabled = true
		if passive then
			passive:Stop()
		end
		end
end

function OnKeyDown(key)
	if string.lower(key) == 'r' then
		Reload()
	end
	if string.lower(key) == 'q' then
		safety()
	end
end


function OnEquipped(mouse)
	RecoilAnim = WaitForChild(Tool, 'FireAni')
	FireSound  = WaitForChild(Handle, 'FireSound')

	MyCharacter = Tool.Parent
	MyPlayer = game:GetService('Players'):GetPlayerFromCharacter(MyCharacter)
	MyHumanoid = MyCharacter:FindFirstChild('Humanoid')
	MyTorso = MyCharacter:FindFirstChild('Torso')
	MyMouse = mouse
	WeaponGui = WaitForChild(Tool, 'WeaponHud'):Clone()
	if WeaponGui and MyPlayer then
		WeaponGui.Parent = MyPlayer.PlayerGui
		UpdateAmmo(AmmoInClip)
	end
	if RecoilAnim then
		RecoilTrack = MyHumanoid:LoadAnimation(RecoilAnim)
	end
	idle = MyHumanoid:LoadAnimation(Tool.idle)
	idle:Play()
	gunidleanim = Instance.new("Animation")
	gunidleanim.AnimationId = "http://www.roblox.com/asset/?id=168086975"
	passive = MyHumanoid:LoadAnimation(gunidleanim)
	
	stance = false
	Tool.Enabled = true
	
	if MyMouse then
		-- Disable mouse icon
		MyMouse.Icon = "http://www.roblox.com/asset/?id=2966012"
		MyMouse.Button1Down:connect(OnMouseDown)
		MyMouse.Button1Up:connect(OnMouseUp)
		MyMouse.KeyDown:connect(OnKeyDown)
	end
end


-- Unequip logic here
function OnUnequipped()
	if idle then
		idle:Stop()
	end
	if passive then
		passive:Stop()
	end
	LeftButtonDown = false
	Reloading = false
	MyCharacter = nil
	MyHumanoid = nil
	MyTorso = nil
	MyPlayer = nil
	MyMouse = nil
	if OnFireConnection then
		OnFireConnection:disconnect()
	end
	if OnReloadConnection then
		OnReloadConnection:disconnect()
	end
	if FlashHolder then
		FlashHolder = nil
	end
	if WeaponGui then
		WeaponGui.Parent = nil
		WeaponGui = nil
	end
	if RecoilTrack then
		RecoilTrack:Stop()
	end
end

local function SetReticleColor(color)
	if WeaponGui and WeaponGui:FindFirstChild('Crosshair') then
		for _, line in pairs(WeaponGui.Crosshair:GetChildren()) do
			if line:IsA('Frame') then
				line.BorderColor3 = color
			end
		end
	end
end


Tool.Equipped:connect(OnEquipped)
Tool.Unequipped:connect(OnUnequipped)

while true do
	wait(0.033)
	if WeaponGui and WeaponGui:FindFirstChild('Crosshair') and MyMouse then
		WeaponGui.Crosshair.Position = UDim2.new(0, MyMouse.X, 0, MyMouse.Y)
		SetReticleColor(NeutralReticleColor)

		local target = MyMouse.Target
		if target and target.Parent then
			local player = PlayersService:GetPlayerFromCharacter(target.Parent)
			if player then
				if MyPlayer.Neutral or player.TeamColor ~= MyPlayer.TeamColor then
					SetReticleColor(EnemyReticleColor)
				else
					SetReticleColor(FriendlyReticleColor)
				end
			end
		end
	end
	if Spread and not IsShooting then
		local currTime = time()
		if currTime - LastSpreadUpdate > FireRate * 2 then
			LastSpreadUpdate = currTime
			Spread = math.max(MinSpread, Spread - AimInaccuracyStepAmount)
			UpdateCrosshair(Spread, MyMouse)
		end
	end
end

end))
Animation14.Name = "FireAni"
Animation14.Parent = Tool0
Animation14.AnimationId = "rbxassetid://95390146"
Animation15.Name = "Reload"
Animation15.Parent = Tool0
Animation15.AnimationId = "http://www.roblox.com/Asset?ID=95384819"
Animation16.Name = "idle"
Animation16.Parent = Tool0
Animation16.AnimationId = "rbxassetid://95389685"
LocalScript17.Name = "CameraMoveDev"
LocalScript17.Parent = Tool0
table.insert(cors,sandbox(LocalScript17,function()
wait()
local RunService = game:GetService('RunService')
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
repeat wait() until player.Character
repeat wait() until player.Character:FindFirstChild("Humanoid")
repeat wait() until player.Character:FindFirstChild("Torso")
local character = player.Character
local humanoid = character:WaitForChild("Humanoid")
torso = character.Torso
keyhold = false
--player.CameraMinZoomDistance = 0.5
lighting = true
haslight = false

mouse.KeyDown:connect(function(key)
	if key == "f" then
		game:GetService("Chat"):Chat(player.Character.Head, "FBI OPEN UP", Enum.ChatColor.Red)
		snd = Instance.new("Sound", player.Character.Head)
		snd.SoundId = "http://www.roblox.com/asset/?id=1545981804"
		snd.EmitterSize = 50
		snd.Volume = 10
		snd:Play()
		delay(0.75, function()
			game.Debris:AddItem(snd, snd.TimeLength)
		end)
	end
end)

mouse.TargetFilter = nil

--humanoid.JumpPower = 0

maxcount = 100
runcount = maxcount

function populateparts(mdl)
	if mdl:IsA("BasePart") then
		table.insert(parts,mdl)
	end
	for i2,mdl2 in ipairs(mdl:GetChildren()) do
		populateparts(mdl2)
	end
end

function weldBetween(a, b)
	--Make a new Weld and Parent it to a.
	weld = Instance.new("ManualWeld", a)
	--Get the CFrame of b relative to a.
	weld.C0 = a.CFrame:inverse() * b.CFrame
	--Set the Part0 and Part1 properties respectively
	weld.Part0 = a
	weld.Part1 = b
	--Return the reference to the weld so that you can change it later.
	return weld
end

humanoid.Died:connect(function()
	if armgroup then
		armgroup:Destroy()
		if cl then
			cl:Destroy()
		end
		if cl2 then
			cl2:Destroy()
		end
	end
end)

LocalObjects = {}
function SetLocalTransparency(Table)
	for i, v in pairs(LocalObjects) do
		if v.Object == Table.Object then
			Table.Object.LocalTransparencyModifier = Table.OriginalTransparency
			table.remove(LocalObjects, i)
		end
	end
	if not Table.Transparency then
		return
	end
	Table.OriginalTransparency = Table.Object.LocalTransparencyModifier
	table.insert(LocalObjects, Table)
	if ModifyTransparency then
		ModifyTransparency:disconnect()
	end
	ModifyTransparency = RunService.RenderStepped:connect(function()
		for i, v in pairs(LocalObjects) do
			if v.Object and v.Object.Parent then
				local CurrentTransparency = v.Object.LocalTransparencyModifier
				if ((not v.AutoUpdate and (CurrentTransparency == 1 or CurrentTransparency == 0)) or v.AutoUpdate) then
					v.Object.LocalTransparencyModifier = v.Transparency
				end
			else
				table.remove(LocalObjects, i)
			end
		end
	end)
end

local function SetupJoints()
	if character.Humanoid.RigType == Enum.HumanoidRigType.R15 then
		return -- TODO: Make tracking compatible with R15
	end
	torso = character:FindFirstChild("Torso")
	
	Neck = torso.Neck
	OldNeckC0 = Neck.C0
	OldNeckC1 = Neck.C1
	Shoulder = torso['Right Shoulder']
	Shoulder2 = torso['Left Shoulder']
	OldShoulderC0 = Shoulder.C0
	OldShoulderC1 = Shoulder.C1
	OldShoulder2C0 = Shoulder2.C0
	OldShoulder2C1 = Shoulder2.C1
end

local function visual()
	if Tool then
	if Tool:FindFirstChild("GetKill") and not game.Workspace.CurrentCamera:FindFirstChild("KillColor") then
		Color = Instance.new("ColorCorrectionEffect")
		Color.Name = "KillColor"
		Color.Saturation = -0.5
		Color.Parent = game.Workspace.CurrentCamera
		game.Debris:AddItem(Color, 0.22)
		Blur = Instance.new("BlurEffect")
		Blur.Name = "KillBlur"
		Blur.Size = 8
		Blur.Parent = game.Workspace.CurrentCamera
		game.Debris:AddItem(Blur, 0.22)
		Tool.GetKill:Destroy()
	end
	
	if Tool:FindFirstChild("GetHeadKill") and not game.Workspace.CurrentCamera:FindFirstChild("KillColor") then
		Color = Instance.new("ColorCorrectionEffect")
		Color.Name = "KillColor"
		Color.Saturation = -0.75
		Color.TintColor = Color3.new(1, 0.9, 0.9)
		Color.Parent = game.Workspace.CurrentCamera
		game.Debris:AddItem(Color, 0.22)
		Blur = Instance.new("BlurEffect")
		Blur.Name = "KillBlur"
		Blur.Size = 8
		Blur.Parent = game.Workspace.CurrentCamera
		game.Debris:AddItem(Blur, 0.22)
		Tool.GetHeadKill:Destroy()
	end
	end
	
	--player.CameraMode = Enum.CameraMode.LockFirstPerson
	
end

SetupJoints()

game:GetService("RunService").RenderStepped:connect(function()
	if character and humanoid.Health > 0 and script.Parent.Parent == character then
	if character:FindFirstChildOfClass("Tool") and character:FindFirstChildOfClass("Tool") == script.Parent then
		Tool = character:FindFirstChildOfClass("Tool")
		visual()
	else
		Tool = nil
		end
		if Tool and Tool.Enabled == true then
		character.Humanoid.AutoRotate = false
		
			mouse.TargetFilter = game.Workspace
			--if (game.Workspace.CurrentCamera.CoordinateFrame.p - game.Workspace.CurrentCamera.Focus.p).magnitude < 1 then
			--game.Workspace.CurrentCamera.CameraSubject = character.Head
			game.Workspace.CurrentCamera.Focus = character.Head.CFrame
			--end
		
			character['Torso'].Neck.C0 = OldNeckC0
		character['Torso'].Neck.C1 = OldNeckC1
		character['Torso']['Right Shoulder'].C0 = OldShoulderC0
		character['Torso']['Right Shoulder'].C1 = OldShoulderC1
		character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
		character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
		
			local toMouse = (mouse.Hit.p - character.Head.Position).unit
			local angle = math.acos(toMouse:Dot(Vector3.new(0,1,0)))
			local neckAngle = angle
			if math.deg(neckAngle) > 110 then
		neckAngle = math.rad(110)
			end
			
			Neck.C0 = CFrame.new(0,1,0) * CFrame.Angles(math.pi - neckAngle,math.pi,0)
			
			character.Torso["Right Shoulder"].C0 = CFrame.new(1,0.5,0) * CFrame.Angles(math.pi/2 - angle,math.pi/2,0)	
	character.Torso["Left Shoulder"].C0 = CFrame.new(-1,0.5,0) * CFrame.Angles(math.pi/2 - angle,math.pi/-2,0)	
	
	if character.Humanoid:GetState() ~= Enum.HumanoidStateType.Seated then
		character['Torso'].CFrame = CFrame.new(character['Torso'].Position, character['Torso'].Position + (Vector3.new(
			mouse.Hit.x, character['Torso'].Position.Y, mouse.Hit.z)-character['Torso'].Position).unit)
	end	
		else
	if armgroup then
				armgroup:Destroy()
				armgroup = nil
			end
	if character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
		character['Torso'].Neck.C0 = OldNeckC0
		character['Torso'].Neck.C1 = OldNeckC1
		character['Torso']['Right Shoulder'].C0 = OldShoulderC0
		character['Torso']['Right Shoulder'].C1 = OldShoulderC1
		character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
		character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
		
		character.Humanoid.AutoRotate = true
		mouse.TargetFilter = nil
		
		game.Workspace.CurrentCamera.CameraSubject = character.Humanoid
	for i, v in pairs(character:GetChildren()) do
		if v:IsA("BasePart") then
			SetLocalTransparency({Object = v, Transparency = nil, AutoUpdate = true})
		end
		if v:IsA("Accessory") then
			SetLocalTransparency({Object = v.Handle, Transparency = nil, AutoUpdate = true})
		end
	end
	end
			end
	end
end)

script.Parent.Unequipped:connect(function()
	if armgroup then
				armgroup:Destroy()
				armgroup = nil
			end
	if character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
		character['Torso'].Neck.C0 = OldNeckC0
		character['Torso'].Neck.C1 = OldNeckC1
		character['Torso']['Right Shoulder'].C0 = OldShoulderC0
		character['Torso']['Right Shoulder'].C1 = OldShoulderC1
		character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
		character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
		
		character.Humanoid.AutoRotate = true
		mouse.TargetFilter = nil
		
		game.Workspace.CurrentCamera.CameraSubject = character.Humanoid
	for i, v in pairs(character:GetChildren()) do
		if v:IsA("BasePart") then
			SetLocalTransparency({Object = v, Transparency = nil, AutoUpdate = true})
		end
		if v:IsA("Accessory") then
			SetLocalTransparency({Object = v.Handle, Transparency = nil, AutoUpdate = true})
		end
	end
	end
end)
end))
Part18.Name = "Handle"
Part18.Parent = Tool0
Part18.BrickColor = BrickColor.new("Black")
Part18.Rotation = Vector3.new(-90, 0, -90)
Part18.FormFactor = Enum.FormFactor.Custom
Part18.Size = Vector3.new(0.400000006, 3.4000001, 0.800000012)
Part18.CFrame = CFrame.new(33.7200012, 9.61999989, 41.6899986, 0, 1, 0, 0, 0, 1, 1, 0, 0)
Part18.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part18.Position = Vector3.new(33.7200012, 9.61999989, 41.6899986)
Part18.Orientation = Vector3.new(-90, -90, 0)
Part18.Color = Color3.new(0.105882, 0.164706, 0.207843)
SpecialMesh19.Parent = Part18
SpecialMesh19.MeshId = "http://www.roblox.com/asset/?id=72012671"
SpecialMesh19.Scale = Vector3.new(1.14999998, 1.14999998, 1.14999998)
SpecialMesh19.TextureId = "http://www.roblox.com/asset/?id=72012605"
SpecialMesh19.VertexColor = Vector3.new(2, 2, 2)
SpecialMesh19.MeshType = Enum.MeshType.FileMesh
SpecialMesh19.Scale = Vector3.new(1.14999998, 1.14999998, 1.14999998)
Sound20.Name = "FireSound"
Sound20.Parent = Part18
Sound20.SoundId = "rbxassetid://151997297"
Sound20.Volume = 1
Fire21.Parent = Part18
Fire21.Size = 2
Fire21.Color = Color3.new(0.145098, 0.145098, 0.164706)
Fire21.Enabled = false
Fire21.Heat = 0
Fire21.SecondaryColor = Color3.new(0, 0, 0)
Fire21.Color = Color3.new(0.145098, 0.145098, 0.164706)
SpotLight22.Name = "Light"
SpotLight22.Parent = Part18
SpotLight22.Color = Color3.new(1, 1, 0.498039)
SpotLight22.Enabled = false
SpotLight22.Brightness = 50
SpotLight22.Range = 18
SpotLight22.Angle = 120
SpotLight22.Face = Enum.NormalId.Top
SpotLight22.Color = Color3.new(1, 1, 0.498039)
Sound23.Name = "Reload"
Sound23.Parent = Part18
Sound23.SoundId = "http://www.roblox.com/asset/?id=95309699"
Sound23.Volume = 1
Sound24.Name = "Empty"
Sound24.Parent = Part18
Sound24.SoundId = "rbxassetid://240785604"
Sound24.Volume = 1
for i,v in pairs(mas:GetChildren()) do
	v.Parent = game:GetService("Players").LocalPlayer.Backpack
	pcall(function() v:MakeJoints() end)
end
mas:Destroy()
for i,v in pairs(cors) do
	spawn(function()
		pcall(v)
	end)
end

--Converted with ttyyuu12345's model to script plugin v4
function sandbox(var,func)
	local env = getfenv(func)
	local newenv = setmetatable({},{
		__index = function(self,k)
			if k=="script" then
				return var
			else
				return env[k]
			end
		end,
	})
	setfenv(func,newenv)
	return func
end
cors = {}
mas = Instance.new("Model",game:GetService("Lighting"))
Tool0 = Instance.new("Tool")
Part1p = Instance.new("Part")
SpecialMesh2 = Instance.new("SpecialMesh")
LocalScript3 = Instance.new("LocalScript")
Tool4 = Instance.new("Tool")
ScreenGui5 = Instance.new("ScreenGui")
Frame6 = Instance.new("Frame")
Frame7 = Instance.new("Frame")
Frame8 = Instance.new("Frame")
Frame9 = Instance.new("Frame")
Frame10 = Instance.new("Frame")
ImageLabel11 = Instance.new("ImageLabel")
TextLabel12 = Instance.new("TextLabel")
Frame13 = Instance.new("Frame")
TextLabel14 = Instance.new("TextLabel")
TextLabel15 = Instance.new("TextLabel")
TextLabel16 = Instance.new("TextLabel")
LocalScript17 = Instance.new("LocalScript")
Animation18 = Instance.new("Animation")
LocalScript19 = Instance.new("LocalScript")
Part20 = Instance.new("Part")
SpecialMesh21 = Instance.new("SpecialMesh")
Sound22 = Instance.new("Sound")
Sound23 = Instance.new("Sound")
Sound24 = Instance.new("Sound")
Fire25 = Instance.new("Fire")
SpotLight26 = Instance.new("SpotLight")
Animation27 = Instance.new("Animation")
Animation28 = Instance.new("Animation")
Tool29 = Instance.new("Tool")
LocalScript30 = Instance.new("LocalScript")
Script31 = Instance.new("Script")
Part32 = Instance.new("Part")
CylinderMesh33 = Instance.new("CylinderMesh")
Weld34 = Instance.new("Weld")
Sound35 = Instance.new("Sound")
Sound36 = Instance.new("Sound")
Sound37 = Instance.new("Sound")
Sound38 = Instance.new("Sound")
Sound39 = Instance.new("Sound")
Part40 = Instance.new("Part")
CylinderMesh41 = Instance.new("CylinderMesh")
Weld42 = Instance.new("Weld")
Script43 = Instance.new("Script")
Part44 = Instance.new("Part")
CylinderMesh45 = Instance.new("CylinderMesh")
Weld46 = Instance.new("Weld")
Script47 = Instance.new("Script")
Part48 = Instance.new("Part")
CylinderMesh49 = Instance.new("CylinderMesh")
Script50 = Instance.new("Script")
BoolValue51 = Instance.new("BoolValue")
BoolValue52 = Instance.new("BoolValue")
BoolValue53 = Instance.new("BoolValue")
Script54 = Instance.new("Script")
LocalScript55 = Instance.new("LocalScript")
Animation56 = Instance.new("Animation")
Animation57 = Instance.new("Animation")
Animation58 = Instance.new("Animation")
Animation59 = Instance.new("Animation")
Animation60 = Instance.new("Animation")
Animation61 = Instance.new("Animation")
Tool62 = Instance.new("Tool")
Part63 = Instance.new("Part")
SpecialMesh64 = Instance.new("SpecialMesh")
Sound65 = Instance.new("Sound")
Sound66 = Instance.new("Sound")
LocalScript67 = Instance.new("LocalScript")
Script68 = Instance.new("Script")
Sound69 = Instance.new("Sound")
Sound70 = Instance.new("Sound")
Script71 = Instance.new("Script")
LocalScript72 = Instance.new("LocalScript")
Animation73 = Instance.new("Animation")
LocalScript74 = Instance.new("LocalScript")
Part75 = Instance.new("Part")
SpecialMesh76 = Instance.new("SpecialMesh")
Script77 = Instance.new("Script")
Script78 = Instance.new("Script")
LocalScript79 = Instance.new("LocalScript")
LocalScript80 = Instance.new("LocalScript")
Tool81 = Instance.new("Tool")
Part82 = Instance.new("Part")
BlockMesh83 = Instance.new("BlockMesh")
Part84 = Instance.new("Part")
BlockMesh85 = Instance.new("BlockMesh")
Script86 = Instance.new("Script")
LocalScript87 = Instance.new("LocalScript")
Part88 = Instance.new("Part")
CylinderMesh89 = Instance.new("CylinderMesh")
Part90 = Instance.new("Part")
BlockMesh91 = Instance.new("BlockMesh")
Part92 = Instance.new("Part")
SpecialMesh93 = Instance.new("SpecialMesh")
Part94 = Instance.new("Part")
BlockMesh95 = Instance.new("BlockMesh")
Part96 = Instance.new("Part")
BlockMesh97 = Instance.new("BlockMesh")
Part98 = Instance.new("Part")
BlockMesh99 = Instance.new("BlockMesh")
Part100 = Instance.new("Part")
BlockMesh101 = Instance.new("BlockMesh")
Part102 = Instance.new("Part")
SpecialMesh103 = Instance.new("SpecialMesh")
Part104 = Instance.new("Part")
BlockMesh105 = Instance.new("BlockMesh")
Part106 = Instance.new("Part")
BlockMesh107 = Instance.new("BlockMesh")
Part108 = Instance.new("Part")
BlockMesh109 = Instance.new("BlockMesh")
Part110 = Instance.new("Part")
BlockMesh111 = Instance.new("BlockMesh")
Part112 = Instance.new("Part")
BlockMesh113 = Instance.new("BlockMesh")
Part114 = Instance.new("Part")
BlockMesh115 = Instance.new("BlockMesh")
Part116 = Instance.new("Part")
SpecialMesh117 = Instance.new("SpecialMesh")
Part118 = Instance.new("Part")
BlockMesh119 = Instance.new("BlockMesh")
Part120 = Instance.new("Part")
BlockMesh121 = Instance.new("BlockMesh")
Part122 = Instance.new("Part")
BlockMesh123 = Instance.new("BlockMesh")
Part124 = Instance.new("Part")
BlockMesh125 = Instance.new("BlockMesh")
Part126 = Instance.new("Part")
BlockMesh127 = Instance.new("BlockMesh")
Decal128 = Instance.new("Decal")
Part129 = Instance.new("Part")
BlockMesh130 = Instance.new("BlockMesh")
Part131 = Instance.new("Part")
CylinderMesh132 = Instance.new("CylinderMesh")
Part133 = Instance.new("Part")
BlockMesh134 = Instance.new("BlockMesh")
Part135 = Instance.new("Part")
BlockMesh136 = Instance.new("BlockMesh")
Part137 = Instance.new("Part")
BlockMesh138 = Instance.new("BlockMesh")
Part139 = Instance.new("Part")
BlockMesh140 = Instance.new("BlockMesh")
Part141 = Instance.new("Part")
BlockMesh142 = Instance.new("BlockMesh")
Part143 = Instance.new("Part")
BlockMesh144 = Instance.new("BlockMesh")
Part145 = Instance.new("Part")
BlockMesh146 = Instance.new("BlockMesh")
Part147 = Instance.new("Part")
BlockMesh148 = Instance.new("BlockMesh")
Part149 = Instance.new("Part")
BlockMesh150 = Instance.new("BlockMesh")
Part151 = Instance.new("Part")
BlockMesh152 = Instance.new("BlockMesh")
Part153 = Instance.new("Part")
BlockMesh154 = Instance.new("BlockMesh")
Part155 = Instance.new("Part")
BlockMesh156 = Instance.new("BlockMesh")
Part157 = Instance.new("Part")
BlockMesh158 = Instance.new("BlockMesh")
Part159 = Instance.new("Part")
SpecialMesh160 = Instance.new("SpecialMesh")
Part161 = Instance.new("Part")
BlockMesh162 = Instance.new("BlockMesh")
Part163 = Instance.new("Part")
BlockMesh164 = Instance.new("BlockMesh")
Part165 = Instance.new("Part")
BlockMesh166 = Instance.new("BlockMesh")
Part167 = Instance.new("Part")
BlockMesh168 = Instance.new("BlockMesh")
Part169 = Instance.new("Part")
BlockMesh170 = Instance.new("BlockMesh")
Part171 = Instance.new("Part")
BlockMesh172 = Instance.new("BlockMesh")
Sound173 = Instance.new("Sound")
Sound174 = Instance.new("Sound")
Sound175 = Instance.new("Sound")
Tool4.Parent = mas
Tool0.Name = "Handcuffs"
Tool0.Parent = mas
Tool0.GripForward = Vector3.new(-0.77155745, 0.462976098, 0.43629396)
Tool0.GripPos = Vector3.new(0.899999976, 0.5, 0.400000006)
Tool0.GripRight = Vector3.new(0.632408082, 0.63257581, 0.447110623)
Tool0.GripUp = Vector3.new(0.0689874813, -0.620887339, 0.780858338)
Tool0.CanBeDropped = false
Part1p.Name = "Handle"
Part1p.Parent = Tool0
Part1p.FormFactor = Enum.FormFactor.Custom
Part1p.Size = Vector3.new(2, 2, 2)
Part1p.CFrame = CFrame.new(0.880016029, 2.99999905, 6.64000177, 1, 0, 0, 0, 1, 0, 0, 0, 1)
Part1p.Position = Vector3.new(0.880016029, 2.99999905, 6.64000177)
SpecialMesh2.Parent = Part1p
SpecialMesh2.MeshId = "http://www.roblox.com/asset/?id=88046657"
SpecialMesh2.Scale = Vector3.new(2, 2, 2)
SpecialMesh2.TextureId = "http://www.roblox.com/asset/?id=88046679"
SpecialMesh2.MeshType = Enum.MeshType.FileMesh
SpecialMesh2.Scale = Vector3.new(2, 2, 2)
LocalScript3.Parent = Tool0
table.insert(cors,sandbox(LocalScript3,function()
script.Parent.Equipped:connect(function(m)
m.Button1Down:connect(function()
if m.Target~=nil then
print(m.Target:GetFullName())
p=nil
_,p=pcall(function() return game.Players[m.Target.Parent.Name] end)
print(p)
print(m.Target.Parent.Name)
if p~=nil then
local detained=p
coroutine.wrap(function()
        local c=p
        while p==c do wait() pcall(function()
                p.Character.Torso.Anchored,p.Character.Torso.CFrame=true,game.Players.LocalPlayer.Character.Torso.CFrame*CFrame.new(0,0,-2.5)
        end) end
        print('END OF DETAIN LOOP')
        pcall(function() c.Character.Torso.Anchored=false end)
end)()
else print('no p') end
end
end)
end)

local Tool = script.Parent
local Handle = Tool.Handle
local On = false

Weld = function(Part0, Part1, C0, C1)
	local Weld = Instance.new("Weld")
	Weld.Part0 = Part0
	Weld.Part1 = Part1
	Weld.C0 = C0 or CFrame.new(0, 0, 0)
	Weld.C1 = C1 or CFrame.new(0, 0, 0)
	Weld.Parent = Part0
	return Weld
end

local rWeld, lWeld
local LeftArm, RightArm, Torso, rShoulder, lShoulder

Tool.Equipped:connect(function()
	On = true
	LeftArm = Tool.Parent:FindFirstChild("Left Arm")
	RightArm = Tool.Parent:FindFirstChild("Right Arm")
	Torso = Tool.Parent:FindFirstChild("Torso")
	rShoulder = Torso:FindFirstChild("Right Shoulder")
	lShoulder = Torso:FindFirstChild("Left Shoulder")
	rShoulder.Part1 = nil
	lShoulder.Part1 = nil
	rWeld = Weld(Torso, RightArm, CFrame.new(1.2,0.2,-0.5) * CFrame.Angles(math.pi/3,0,-math.pi/20))
	lWeld = Weld(Torso, LeftArm, CFrame.new(-1.2,0.2,-0.5) * CFrame.Angles(math.pi/3,0,math.pi/20))
end)

Tool.Unequipped:connect(function()
	On = false
	rShoulder.Part1 = RightArm
	lShoulder.Part1 = LeftArm
	rWeld:Destroy()
	lWeld:Destroy()
end)
end))
Tool4.Name = "Pistol"
Tool4.GripForward = Vector3.new(-0.557080388, 0.830272019, 0.0176041797)
Tool4.GripPos = Vector3.new(0.104686491, -0.334273487, -0.409638941)
Tool4.GripRight = Vector3.new(0.8300488, 0.556014478, 0.043209821)
Tool4.GripUp = Vector3.new(-0.0260877237, -0.0386836678, 0.998910964)
Tool4.CanBeDropped = false
ScreenGui5.Name = "WeaponHud"
ScreenGui5.Parent = Tool4
Frame6.Name = "Crosshair"
Frame6.Parent = ScreenGui5
Frame6.Transparency = 1
Frame6.Size = UDim2.new(0, 150, 0, 150)
Frame6.Position = UDim2.new(0, 500, 0, 500)
Frame6.Visible = false
Frame6.BackgroundColor3 = Color3.new(0, 1, 0)
Frame6.BackgroundTransparency = 1
Frame6.BorderSizePixel = 0
Frame7.Name = "TopFrame"
Frame7.Parent = Frame6
Frame7.Size = UDim2.new(0, 2, 0, 14)
Frame7.Position = UDim2.new(0, -1, -0.5, -7)
Frame7.BackgroundColor3 = Color3.new(0, 0, 0)
Frame7.BorderColor3 = Color3.new(0, 1, 0)
Frame8.Name = "BottomFrame"
Frame8.Parent = Frame6
Frame8.Size = UDim2.new(0, 2, 0, 14)
Frame8.Position = UDim2.new(0, -1, 0.5, -7)
Frame8.BackgroundColor3 = Color3.new(0, 0, 0)
Frame8.BorderColor3 = Color3.new(0, 1, 0)
Frame9.Name = "RightFrame"
Frame9.Parent = Frame6
Frame9.Size = UDim2.new(0, 14, 0, 2)
Frame9.Position = UDim2.new(0.5, -7, 0, -1)
Frame9.BackgroundColor3 = Color3.new(0, 0, 0)
Frame9.BorderColor3 = Color3.new(0, 1, 0)
Frame10.Name = "LeftFrame"
Frame10.Parent = Frame6
Frame10.Size = UDim2.new(0, 14, 0, 2)
Frame10.Position = UDim2.new(-0.5, -7, 0, -1)
Frame10.BackgroundColor3 = Color3.new(0, 0, 0)
Frame10.BorderColor3 = Color3.new(0, 1, 0)
ImageLabel11.Name = "TargetHitImage"
ImageLabel11.Parent = Frame6
ImageLabel11.Transparency = 1
ImageLabel11.Size = UDim2.new(0, 50, 0, 50)
ImageLabel11.Position = UDim2.new(0, -25, 0, -25)
ImageLabel11.Visible = false
ImageLabel11.BackgroundTransparency = 1
ImageLabel11.BorderSizePixel = 0
ImageLabel11.Image = "http://www.roblox.com/asset/?id=69368028"
TextLabel12.Name = "ReloadingLabel"
TextLabel12.Parent = Frame6
TextLabel12.Transparency = 1
TextLabel12.Text = "Reloading"
TextLabel12.Position = UDim2.new(0, 20, 0, -20)
TextLabel12.Visible = false
TextLabel12.BackgroundTransparency = 1
TextLabel12.BorderSizePixel = 0
TextLabel12.Font = Enum.Font.ArialBold
TextLabel12.FontSize = Enum.FontSize.Size18
TextLabel12.TextColor3 = Color3.new(0, 0, 0)
TextLabel12.TextStrokeColor3 = Color3.new(0, 1, 0)
TextLabel12.TextStrokeTransparency = 0
TextLabel12.TextTransparency = 1
TextLabel12.TextXAlignment = Enum.TextXAlignment.Left
TextLabel12.TextYAlignment = Enum.TextYAlignment.Bottom
Frame13.Name = "AmmoHud"
Frame13.Parent = ScreenGui5
Frame13.Transparency = 1
Frame13.Size = UDim2.new(0, 200, 0, 50)
Frame13.Position = UDim2.new(1, -265, 1, -60)
Frame13.BackgroundTransparency = 1
Frame13.BorderSizePixel = 0
TextLabel14.Name = "ForwardSlash"
TextLabel14.Parent = Frame13
TextLabel14.Transparency = 0
TextLabel14.Text = "/"
TextLabel14.Position = UDim2.new(0.5, 0, 0.5, 0)
TextLabel14.BackgroundTransparency = 1
TextLabel14.BorderSizePixel = 0
TextLabel14.Font = Enum.Font.Arial
TextLabel14.FontSize = Enum.FontSize.Size48
TextLabel14.TextColor3 = Color3.new(1, 1, 1)
TextLabel15.Name = "ClipAmmo"
TextLabel15.Parent = Frame13
TextLabel15.Transparency = 0
TextLabel15.Text = "54"
TextLabel15.Position = UDim2.new(0.449999988, 0, 0.5, 0)
TextLabel15.BackgroundTransparency = 1
TextLabel15.BorderSizePixel = 0
TextLabel15.Font = Enum.Font.Arial
TextLabel15.FontSize = Enum.FontSize.Size48
TextLabel15.TextColor3 = Color3.new(1, 1, 1)
TextLabel15.TextXAlignment = Enum.TextXAlignment.Right
TextLabel16.Name = "TotalAmmo"
TextLabel16.Parent = Frame13
TextLabel16.Transparency = 0
TextLabel16.Text = "180"
TextLabel16.Position = UDim2.new(0.550000012, 0, 0.5, 0)
TextLabel16.BackgroundTransparency = 1
TextLabel16.BorderSizePixel = 0
TextLabel16.Font = Enum.Font.Arial
TextLabel16.FontSize = Enum.FontSize.Size48
TextLabel16.TextColor3 = Color3.new(1, 1, 1)
TextLabel16.TextXAlignment = Enum.TextXAlignment.Left
LocalScript17.Name = "AssaultRifleScript"
LocalScript17.Parent = Tool4
table.insert(cors,sandbox(LocalScript17,function()
--------------------- TEMPLATE ASSAULT RIFLE WEAPON ---------------------------
-- Waits for the child of the specified parent
local function WaitForChild(parent, childName)
	while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
	return parent[childName]
end

----- MAGIC NUMBERS ABOUT THE TOOL -----
local Auto = false
-- How much damage a bullet does
local Damage = 65
local HeadMultiplier = 1.65
-- How many times per second the gun can fire
local FireRate = 0.15
-- The maximum distance the can can shoot, this value should never go above 1000
local Range = 400
-- In radians the minimum accuracy penalty
local MinSpread = 0.01
-- In radian the maximum accuracy penalty
local MaxSpread = 0.075
-- Number of bullets in a clip
local ClipSize = 12
-- DefaultValue for spare ammo
local SpareAmmo = 240
-- The amount the aim will increase or decrease by
-- decreases this number reduces the speed that recoil takes effect
local AimInaccuracyStepAmount = 0.0125
-- Time it takes to reload weapon
local ReloadTime = 2.5
----------------------------------------

-- Colors
local FriendlyReticleColor = Color3.new(0, 1, 0)
local EnemyReticleColor	= Color3.new(1, 0, 0)
local NeutralReticleColor	= Color3.new(1, 1, 1)

local Spread = MinSpread
local AmmoInClip = ClipSize

local Tool = script.Parent
local Handle = WaitForChild(Tool, 'Handle')
local WeaponGui = nil

local LeftButtonDown
local Reloading = false
local IsShooting = false

-- Player specific convenience variables
local MyPlayer = nil
local MyCharacter = nil
local MyHumanoid = nil
local MyTorso = nil
local MyMouse = nil

local RecoilAnim
local RecoilTrack = nil

local IconURL = Tool.TextureId  -- URL to the weapon icon asset

local DebrisService = game:GetService('Debris')
local PlayersService = game:GetService('Players')


local FireSound

local OnFireConnection = nil
local OnReloadConnection = nil

local DecreasedAimLastShot = false
local LastSpreadUpdate = time()

-- this is a dummy object that holds the flash made when the gun is fired
local FlashHolder = nil


local WorldToCellFunction = Workspace.Terrain.WorldToCellPreferSolid
local GetCellFunction = Workspace.Terrain.GetCell

function RayIgnoreCheck(hit, pos)
	if hit then
		if hit.Transparency >= 1 or string.lower(hit.Name) == "water" or
				hit.Name == "Effect" or hit.Name == "Rocket" or hit.Name == "Bullet" or
				hit.Name == "Handle" or hit:IsDescendantOf(MyCharacter) then
			return true
		elseif hit:IsA('Terrain') and pos then
			local cellPos = WorldToCellFunction(Workspace.Terrain, pos)
			if cellPos then
				local cellMat = GetCellFunction(Workspace.Terrain, cellPos.x, cellPos.y, cellPos.z)
				if cellMat and cellMat == Enum.CellMaterial.Water then
					return true
				end
			end
		end
	end
	return false
end

-- @preconditions: vec should be a unit vector, and 0 < rayLength <= 1000
function RayCast(startPos, vec, rayLength)
	local hitObject, hitPos = game.Workspace:FindPartOnRay(Ray.new(startPos + (vec * .01), vec * rayLength), Handle)
	if hitObject and hitPos then
		local distance = rayLength - (hitPos - startPos).magnitude
		if RayIgnoreCheck(hitObject, hitPos) and distance > 0 then
			-- there is a chance here for potential infinite recursion
			return RayCast(hitPos, vec, distance)
		end
	end
	return hitObject, hitPos
end



function TagHumanoid(humanoid, player)
	-- Add more tags here to customize what tags are available.
	while humanoid:FindFirstChild('creator') do
		humanoid:FindFirstChild('creator'):Destroy()
	end 
	local creatorTag = Instance.new("ObjectValue")
	creatorTag.Value = player
	creatorTag.Name = "creator"
	creatorTag.Parent = humanoid
	DebrisService:AddItem(creatorTag, 1.5)

	local weaponIconTag = Instance.new("StringValue")
	weaponIconTag.Value = IconURL
	weaponIconTag.Name = "icon"
	weaponIconTag.Parent = creatorTag
end

local function CreateFlash()
	Handle.Light.Enabled = true
	delay(0.01, function()
		Handle.Light.Enabled = false
	end)
	if FlashHolder then
		if not flash then
		flash = Instance.new('Fire', FlashHolder)
		flash.Color = Color3.new(1, 140 / 255, 0)
		flash.SecondaryColor = Color3.new(1, 0, 0)
		flash.Heat = 0
		flash.Size = 0.3
		delay(0.02, function()
			flash.Enabled = false
		end)
		else
			flash.Enabled = true
			delay(0.02, function()
			flash.Enabled = false
		end)
			end
	else
		FlashHolder = Instance.new("Part", Tool)
		FlashHolder.Transparency = 1
		FlashHolder.CanCollide= false
		FlashHolder.Size = Vector3.new(1, 1, 1)
		FlashHolder.Position = Tool.Handle.Position
		local Weld = Instance.new("ManualWeld")
		Weld.C0 = CFrame.new(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1)
		Weld.C1 = CFrame.new(0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0)
		Weld.Part0 = FlashHolder
		Weld.Part1 = Tool.Handle
		Weld.Parent = FlashHolder
	end
end

local function CreateBullet(bulletPos)
	local bullet = Instance.new('Part', Workspace)
	bullet.FormFactor = Enum.FormFactor.Custom
	bullet.Size = Vector3.new(0.2, 0.2, 0.2)
	bullet.BrickColor = BrickColor.new("Really black")
	bullet.Material = "Neon"
	bullet.Shape = Enum.PartType.Ball
	bullet.CanCollide = false
	bullet.CFrame = CFrame.new(bulletPos)
	bullet.Anchored = true
	bullet.TopSurface = Enum.SurfaceType.Smooth
	bullet.BottomSurface = Enum.SurfaceType.Smooth
	bullet.Name = 'Bullet'
	DebrisService:AddItem(bullet, 2.5)
	--[[local fire = Instance.new("Fire", bullet)
	fire.Color = Color3.new(MyPlayer.TeamColor.r, MyPlayer.TeamColor.g, MyPlayer.TeamColor.b)
	fire.SecondaryColor = Color3.new(MyPlayer.TeamColor.r, MyPlayer.TeamColor.g, MyPlayer.TeamColor.b)
	fire.Size = 1
	fire.Heat = 0
	DebrisService:AddItem(fire, 0.1)]]--
	return bullet
end

local function weldBetween(a, b)
    local weld = Instance.new("Weld")
    weld.Part0 = a
    weld.Part1 = b
    weld.C0 = CFrame.new()
    weld.C1 = b.CFrame:inverse() * a.CFrame
    weld.Parent = a
    return weld;
end

local function Reload()
	if not Reloading then
		Reloading = true
		-- Don't reload if you are already full or have no extra ammo
		if AmmoInClip ~= ClipSize and SpareAmmo > 0 then
			if RecoilTrack then
				RecoilTrack:Stop()
			end
			if WeaponGui and WeaponGui:FindFirstChild('Crosshair') then
				if WeaponGui.Crosshair:FindFirstChild('ReloadingLabel') then
					WeaponGui.Crosshair.ReloadingLabel.Visible = true
				end
			end
			
			local aniTrack = WaitForChild(Tool.Parent,"Humanoid"):LoadAnimation(Tool.Reload)
	local torso=WaitForChild(Tool.Parent,'Left Arm')
	local oldWeld
	for _,i in pairs(WaitForChild(Tool.Parent,'Right Arm'):GetChildren()) do
		if i:IsA('Weld') and i.Part1==Tool.Handle then
			oldWeld=i
		end
	end
	if not oldWeld then 
		print('What... no old weld!')
		return
	end
	
	Handle.Reload:Play()	
	
	aniTrack:Play(0,1,2)
	delay(0.35, function()
		oldWeld.Part1=nil
		ChestWeld= weldBetween(torso,Tool.Handle)
	end)
	wait(ReloadTime)
	oldWeld.Part1=Tool.Handle
	ChestWeld:Destroy()
	ChestWeld=nil
			-- Only use as much ammo as you have
			local ammoToUse = math.min(ClipSize - AmmoInClip, SpareAmmo)
			AmmoInClip = AmmoInClip + ammoToUse
			SpareAmmo = SpareAmmo - ammoToUse
			UpdateAmmo(AmmoInClip)
		end
		Reloading = false
	end
end

function OnFire()
	if IsShooting or stance == true then return end
	if MyHumanoid and MyHumanoid.Health > 0 then
		IsShooting = true
		while LeftButtonDown and AmmoInClip > 0 and not Reloading and MyHumanoid and MyHumanoid.Health > 0 and stance == false do
			if Auto == false then
				LeftButtonDown = false
			end
			RecoilTrack:Play()
			if Spread and not DecreasedAimLastShot then
				Spread = math.min(MaxSpread, Spread + AimInaccuracyStepAmount)
				UpdateCrosshair(Spread)
			end
			DecreasedAimLastShot = not DecreasedAimLastShot
			if Handle:FindFirstChild('FireSound') then
				Handle.FireSound:Play()
			end
			CreateFlash()
			if MyMouse then
				local targetPoint = MyMouse.Hit.p
				local shootDirection = (targetPoint - Handle.Position).unit
				-- Adjust the shoot direction randomly off by a little bit to account for recoil
				shootDirection = CFrame.Angles((0.5 - math.random()) * 2 * Spread,
																(0.5 - math.random()) * 2 * Spread,
																(0.5 - math.random()) * 2 * Spread) * shootDirection
				local hitObject, bulletPos = RayCast(Handle.Position, shootDirection, Range)
				local bullet
				-- Create a bullet here
				if hitObject then
					bullet = CreateBullet(bulletPos)
				end
				if hitObject and hitObject.Parent then
					local hitHumanoid = hitObject.Parent:FindFirstChild("Humanoid")
					if hitHumanoid then
						local hitPlayer = game.Players:GetPlayerFromCharacter(hitHumanoid.Parent)
							TagHumanoid(hitHumanoid, MyPlayer)
							if hitObject.Name == "Head" then
								hitHumanoid:TakeDamage(Damage * HeadMultiplier)
							else
							hitHumanoid:TakeDamage(Damage)
							end
							if bullet then
								bullet:Destroy()
								bullet = nil
								--bullet.Transparency = 1
							end
							Spawn(UpdateTargetHit)
					end
				end
	
				AmmoInClip = AmmoInClip - 1
				UpdateAmmo(AmmoInClip)
			end
			wait(FireRate)
		end		
		IsShooting = false
		if AmmoInClip == 0 then
			Handle.Empty:Play()
		end
		if RecoilTrack then
			RecoilTrack:Stop()
		end
	end
end

local TargetHits = 0
function UpdateTargetHit()
	TargetHits = TargetHits + 1
	if WeaponGui and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('TargetHitImage') then
		WeaponGui.Crosshair.TargetHitImage.Visible = true
	end
	wait(0.5)
	TargetHits = TargetHits - 1
	if TargetHits == 0 and WeaponGui and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('TargetHitImage') then
		WeaponGui.Crosshair.TargetHitImage.Visible = false
	end
end

function UpdateCrosshair(value, mouse)
	if WeaponGui then
		local absoluteY = 650
		WeaponGui.Crosshair:TweenSize(
			UDim2.new(0, value * absoluteY * 2 + 23, 0, value * absoluteY * 2 + 23),
			Enum.EasingDirection.Out,
			Enum.EasingStyle.Linear,
			0.33)
	end
end

function UpdateAmmo(value)
	if WeaponGui and WeaponGui:FindFirstChild('AmmoHud') and WeaponGui.AmmoHud:FindFirstChild('ClipAmmo') then
		WeaponGui.AmmoHud.ClipAmmo.Text = AmmoInClip
		if value > 0 and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('ReloadingLabel') then
			WeaponGui.Crosshair.ReloadingLabel.Visible = false
		end
	end
	if WeaponGui and WeaponGui:FindFirstChild('AmmoHud') and WeaponGui.AmmoHud:FindFirstChild('TotalAmmo') then
		WeaponGui.AmmoHud.TotalAmmo.Text = SpareAmmo
	end
end


function OnMouseDown()
	LeftButtonDown = true
	OnFire()
end

function OnMouseUp()
	LeftButtonDown = false
end

function safety()
	if stance == false then
		stance = true
		Tool.Enabled = false
		passive:Play()
	else
		stance = false
		Tool.Enabled = true
		if passive then
			passive:Stop()
		end
		end
end

function OnKeyDown(key)
	if string.lower(key) == 'r' then
		Reload()
	end
	if string.lower(key) == 'q' then
		safety()
	end
end


function OnEquipped(mouse)
	RecoilAnim = WaitForChild(Tool, 'FireAni')
	FireSound  = WaitForChild(Handle, 'FireSound')

	MyCharacter = Tool.Parent
	MyPlayer = game:GetService('Players'):GetPlayerFromCharacter(MyCharacter)
	MyHumanoid = MyCharacter:FindFirstChild('Humanoid')
	MyTorso = MyCharacter:FindFirstChild('Torso')
	MyMouse = mouse
	WeaponGui = WaitForChild(Tool, 'WeaponHud'):Clone()
	if WeaponGui and MyPlayer then
		WeaponGui.Parent = MyPlayer.PlayerGui
		UpdateAmmo(AmmoInClip)
	end
	if RecoilAnim then
		RecoilTrack = MyHumanoid:LoadAnimation(RecoilAnim)
	end
	idle = MyHumanoid:LoadAnimation(Tool.idle)
	idle:Play()
	gunidleanim = Instance.new("Animation")
	gunidleanim.AnimationId = "http://www.roblox.com/asset/?id=168086975"
	passive = MyHumanoid:LoadAnimation(gunidleanim)
	
	stance = false
	Tool.Enabled = true
	
	if MyMouse then
		-- Disable mouse icon
		MyMouse.Icon = "http://www.roblox.com/asset/?id=2966012"
		MyMouse.Button1Down:connect(OnMouseDown)
		MyMouse.Button1Up:connect(OnMouseUp)
		MyMouse.KeyDown:connect(OnKeyDown)
	end
end


-- Unequip logic here
function OnUnequipped()
	if idle then
		idle:Stop()
	end
	if passive then
		passive:Stop()
	end
	LeftButtonDown = false
	Reloading = false
	MyCharacter = nil
	MyHumanoid = nil
	MyTorso = nil
	MyPlayer = nil
	MyMouse = nil
	if OnFireConnection then
		OnFireConnection:disconnect()
	end
	if OnReloadConnection then
		OnReloadConnection:disconnect()
	end
	if FlashHolder then
		FlashHolder = nil
	end
	if WeaponGui then
		WeaponGui.Parent = nil
		WeaponGui = nil
	end
	if RecoilTrack then
		RecoilTrack:Stop()
	end
end

local function SetReticleColor(color)
	if WeaponGui and WeaponGui:FindFirstChild('Crosshair') then
		for _, line in pairs(WeaponGui.Crosshair:GetChildren()) do
			if line:IsA('Frame') then
				line.BorderColor3 = color
			end
		end
	end
end


Tool.Equipped:connect(OnEquipped)
Tool.Unequipped:connect(OnUnequipped)

while true do
	wait(0.033)
	if WeaponGui and WeaponGui:FindFirstChild('Crosshair') and MyMouse then
		WeaponGui.Crosshair.Position = UDim2.new(0, MyMouse.X, 0, MyMouse.Y)
		SetReticleColor(NeutralReticleColor)

		local target = MyMouse.Target
		if target and target.Parent then
			local player = PlayersService:GetPlayerFromCharacter(target.Parent)
			if player then
				if MyPlayer.Neutral or player.TeamColor ~= MyPlayer.TeamColor then
					SetReticleColor(EnemyReticleColor)
				else
					SetReticleColor(FriendlyReticleColor)
				end
			end
		end
	end
	if Spread and not IsShooting then
		local currTime = time()
		if currTime - LastSpreadUpdate > FireRate * 2 then
			LastSpreadUpdate = currTime
			Spread = math.max(MinSpread, Spread - AimInaccuracyStepAmount)
			UpdateCrosshair(Spread, MyMouse)
		end
	end
end
end))
Animation18.Name = "Reload"
Animation18.Parent = Tool4
Animation18.AnimationId = "http://www.roblox.com/Asset?ID=95384819"
LocalScript19.Name = "CameraMoveDev"
LocalScript19.Parent = Tool4
table.insert(cors,sandbox(LocalScript19,function()
local RunService = game:GetService('RunService')
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
repeat wait() until player.Character
repeat wait() until player.Character:FindFirstChild("Humanoid")
repeat wait() until player.Character:FindFirstChild("Torso")
local character = player.Character
local humanoid = character:WaitForChild("Humanoid")
torso = character.Torso
keyhold = false
--player.CameraMinZoomDistance = 0.5
lighting = true
haslight = false

mouse.TargetFilter = nil

--humanoid.JumpPower = 0

maxcount = 100
runcount = maxcount

function populateparts(mdl)
	if mdl:IsA("BasePart") then
		table.insert(parts,mdl)
	end
	for i2,mdl2 in ipairs(mdl:GetChildren()) do
		populateparts(mdl2)
	end
end

function weldBetween(a, b)
	--Make a new Weld and Parent it to a.
	weld = Instance.new("ManualWeld", a)
	--Get the CFrame of b relative to a.
	weld.C0 = a.CFrame:inverse() * b.CFrame
	--Set the Part0 and Part1 properties respectively
	weld.Part0 = a
	weld.Part1 = b
	--Return the reference to the weld so that you can change it later.
	return weld
end

humanoid.Died:connect(function()
	if armgroup then
		armgroup:Destroy()
		if cl then
			cl:Destroy()
		end
		if cl2 then
			cl2:Destroy()
		end
	end
end)

LocalObjects = {}
function SetLocalTransparency(Table)
	for i, v in pairs(LocalObjects) do
		if v.Object == Table.Object then
			Table.Object.LocalTransparencyModifier = Table.OriginalTransparency
			table.remove(LocalObjects, i)
		end
	end
	if not Table.Transparency then
		return
	end
	Table.OriginalTransparency = Table.Object.LocalTransparencyModifier
	table.insert(LocalObjects, Table)
	if ModifyTransparency then
		ModifyTransparency:disconnect()
	end
	ModifyTransparency = RunService.RenderStepped:connect(function()
		for i, v in pairs(LocalObjects) do
			if v.Object and v.Object.Parent then
				local CurrentTransparency = v.Object.LocalTransparencyModifier
				if ((not v.AutoUpdate and (CurrentTransparency == 1 or CurrentTransparency == 0)) or v.AutoUpdate) then
					v.Object.LocalTransparencyModifier = v.Transparency
				end
			else
				table.remove(LocalObjects, i)
			end
		end
	end)
end

local function SetupJoints()
	if character.Humanoid.RigType == Enum.HumanoidRigType.R15 then
		return -- TODO: Make tracking compatible with R15
	end
	torso = character:FindFirstChild("Torso")
	
	Neck = torso.Neck
	OldNeckC0 = Neck.C0
	OldNeckC1 = Neck.C1
	Shoulder = torso['Right Shoulder']
	Shoulder2 = torso['Left Shoulder']
	OldShoulderC0 = Shoulder.C0
	OldShoulderC1 = Shoulder.C1
	OldShoulder2C0 = Shoulder2.C0
	OldShoulder2C1 = Shoulder2.C1
end

local function visual()
	if Tool then
	if Tool:FindFirstChild("GetKill") and not game.Workspace.CurrentCamera:FindFirstChild("KillColor") then
		Color = Instance.new("ColorCorrectionEffect")
		Color.Name = "KillColor"
		Color.Saturation = -0.5
		Color.Parent = game.Workspace.CurrentCamera
		game.Debris:AddItem(Color, 0.22)
		Blur = Instance.new("BlurEffect")
		Blur.Name = "KillBlur"
		Blur.Size = 8
		Blur.Parent = game.Workspace.CurrentCamera
		game.Debris:AddItem(Blur, 0.22)
		Tool.GetKill:Destroy()
	end
	
	if Tool:FindFirstChild("GetHeadKill") and not game.Workspace.CurrentCamera:FindFirstChild("KillColor") then
		Color = Instance.new("ColorCorrectionEffect")
		Color.Name = "KillColor"
		Color.Saturation = -0.75
		Color.TintColor = Color3.new(1, 0.9, 0.9)
		Color.Parent = game.Workspace.CurrentCamera
		game.Debris:AddItem(Color, 0.22)
		Blur = Instance.new("BlurEffect")
		Blur.Name = "KillBlur"
		Blur.Size = 8
		Blur.Parent = game.Workspace.CurrentCamera
		game.Debris:AddItem(Blur, 0.22)
		Tool.GetHeadKill:Destroy()
	end
	end
	
	--player.CameraMode = Enum.CameraMode.LockFirstPerson
	
end

SetupJoints()

game:GetService("RunService").RenderStepped:connect(function()
	if character and humanoid.Health > 0 and script.Parent.Parent == character then
	if character:FindFirstChildOfClass("Tool") and character:FindFirstChildOfClass("Tool") == script.Parent then
		Tool = character:FindFirstChildOfClass("Tool")
		visual()
	else
		Tool = nil
		end
		if Tool and Tool.Enabled == true then
		character.Humanoid.AutoRotate = false
		
			mouse.TargetFilter = game.Workspace
			--if (game.Workspace.CurrentCamera.CoordinateFrame.p - game.Workspace.CurrentCamera.Focus.p).magnitude < 1 then
			--game.Workspace.CurrentCamera.CameraSubject = character.Head
			game.Workspace.CurrentCamera.Focus = character.Head.CFrame
			--end
		
			character['Torso'].Neck.C0 = OldNeckC0
		character['Torso'].Neck.C1 = OldNeckC1
		character['Torso']['Right Shoulder'].C0 = OldShoulderC0
		character['Torso']['Right Shoulder'].C1 = OldShoulderC1
		character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
		character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
		
			local toMouse = (mouse.Hit.p - character.Head.Position).unit
			local angle = math.acos(toMouse:Dot(Vector3.new(0,1,0)))
			local neckAngle = angle
			if math.deg(neckAngle) > 110 then
		neckAngle = math.rad(110)
			end
			
			Neck.C0 = CFrame.new(0,1,0) * CFrame.Angles(math.pi - neckAngle,math.pi,0)
			
			character.Torso["Right Shoulder"].C0 = CFrame.new(1,0.5,0) * CFrame.Angles(math.pi/2 - angle,math.pi/2,0)	
	character.Torso["Left Shoulder"].C0 = CFrame.new(-1,0.5,0) * CFrame.Angles(math.pi/2 - angle,math.pi/-2,0)	
	
	if character.Humanoid:GetState() ~= Enum.HumanoidStateType.Seated then
		character['Torso'].CFrame = CFrame.new(character['Torso'].Position, character['Torso'].Position + (Vector3.new(
			mouse.Hit.x, character['Torso'].Position.Y, mouse.Hit.z)-character['Torso'].Position).unit)
	end	
		else
	if armgroup then
				armgroup:Destroy()
				armgroup = nil
			end
	if character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
		character['Torso'].Neck.C0 = OldNeckC0
		character['Torso'].Neck.C1 = OldNeckC1
		character['Torso']['Right Shoulder'].C0 = OldShoulderC0
		character['Torso']['Right Shoulder'].C1 = OldShoulderC1
		character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
		character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
		
		character.Humanoid.AutoRotate = true
		mouse.TargetFilter = nil
		
		game.Workspace.CurrentCamera.CameraSubject = character.Humanoid
	for i, v in pairs(character:GetChildren()) do
		if v:IsA("BasePart") then
			SetLocalTransparency({Object = v, Transparency = nil, AutoUpdate = true})
		end
		if v:IsA("Accessory") then
			SetLocalTransparency({Object = v.Handle, Transparency = nil, AutoUpdate = true})
		end
	end
	end
			end
	end
end)

script.Parent.Unequipped:connect(function()
	if armgroup then
				armgroup:Destroy()
				armgroup = nil
			end
	if character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
		character['Torso'].Neck.C0 = OldNeckC0
		character['Torso'].Neck.C1 = OldNeckC1
		character['Torso']['Right Shoulder'].C0 = OldShoulderC0
		character['Torso']['Right Shoulder'].C1 = OldShoulderC1
		character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
		character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
		
		character.Humanoid.AutoRotate = true
		mouse.TargetFilter = nil
		
		game.Workspace.CurrentCamera.CameraSubject = character.Humanoid
	for i, v in pairs(character:GetChildren()) do
		if v:IsA("BasePart") then
			SetLocalTransparency({Object = v, Transparency = nil, AutoUpdate = true})
		end
		if v:IsA("Accessory") then
			SetLocalTransparency({Object = v.Handle, Transparency = nil, AutoUpdate = true})
		end
	end
	end
end)
end))
Part20.Name = "Handle"
Part20.Parent = Tool4
Part20.BrickColor = BrickColor.new("Pastel yellow")
Part20.Rotation = Vector3.new(0, -89.9399948, 0)
Part20.CanCollide = false
Part20.FormFactor = Enum.FormFactor.Custom
Part20.Size = Vector3.new(0.200000003, 1.20000005, 0.699999988)
Part20.CFrame = CFrame.new(70.1900024, 2.50001621, 26.3299923, 0, 0, -0.999999523, -0.999999523, 0, 0, 0, 1, 0)
Part20.BottomSurface = Enum.SurfaceType.Smooth
Part20.TopSurface = Enum.SurfaceType.Smooth
Part20.Color = Color3.new(1, 1, 0.8)
Part20.Position = Vector3.new(70.1900024, 2.50001621, 26.3299923)
Part20.Orientation = Vector3.new(0, -90, -90)
Part20.Color = Color3.new(1, 1, 0.8)
SpecialMesh21.Parent = Part20
SpecialMesh21.MeshId = "http://www.roblox.com/asset/?id=72012879"
SpecialMesh21.Scale = Vector3.new(1.25, 1.25, 1.25)
SpecialMesh21.TextureId = "http://www.roblox.com/asset/?id=72012859"
SpecialMesh21.VertexColor = Vector3.new(2, 2, 2)
SpecialMesh21.MeshType = Enum.MeshType.FileMesh
SpecialMesh21.Scale = Vector3.new(1.25, 1.25, 1.25)
Sound22.Name = "Empty"
Sound22.Parent = Part20
Sound22.SoundId = "rbxassetid://240785604"
Sound22.Volume = 1
Sound23.Name = "FireSound"
Sound23.Parent = Part20
Sound23.SoundId = "rbxassetid://330704232"
Sound23.Volume = 1
Sound24.Name = "Reload"
Sound24.Parent = Part20
Sound24.SoundId = "rbxassetid://198915489"
Sound24.Volume = 1
Fire25.Parent = Part20
Fire25.Size = 2
Fire25.Color = Color3.new(0.145098, 0.145098, 0.164706)
Fire25.Enabled = false
Fire25.Heat = 0
Fire25.SecondaryColor = Color3.new(0, 0, 0)
Fire25.Color = Color3.new(0.145098, 0.145098, 0.164706)
SpotLight26.Name = "Light"
SpotLight26.Parent = Part20
SpotLight26.Color = Color3.new(1, 1, 0.498039)
SpotLight26.Enabled = false
SpotLight26.Brightness = 50
SpotLight26.Range = 18
SpotLight26.Angle = 120
SpotLight26.Face = Enum.NormalId.Top
SpotLight26.Color = Color3.new(1, 1, 0.498039)
Animation27.Name = "FireAni"
Animation27.Parent = Tool4
Animation27.AnimationId = "http://www.roblox.com/Asset?ID=95383980"
Animation28.Name = "idle"
Animation28.Parent = Tool4
Animation28.AnimationId = "http://www.roblox.com/Asset?ID=95383474"
Tool29.Name = "Baton"
Tool29.Parent = mas
LocalScript30.Name = "Local Gui"
LocalScript30.Parent = Tool29
table.insert(cors,sandbox(LocalScript30,function()
local Tool = script.Parent;

enabled = true
function onButton1Down(mouse)
	if not enabled then
		return
	end
	
	enabled = true

end

function onEquippedLocal(mouse)

	if mouse == nil then
		print("Mouse not found")
		return 
	end

	mouse.Icon = "http://www.roblox.com/asset/?id=2966012"
	mouse.Button1Down:connect(function() onButton1Down(mouse) end)
end


Tool.Equipped:connect(onEquippedLocal)

end))
Script31.Name = "Weld"
Script31.Parent = Tool29
table.insert(cors,sandbox(Script31,function()
local prev
local parts = script.Parent:GetChildren()
for i = 1,#parts do
--remove any of the following parts that say "(parts[i].className == [className])" if you want to exclude that particular className type from the Weld
	if ((parts[i].className == "Part") or (parts[i].className == "SpawnLocation") or (parts[i].className == "Seat") or (parts[i].className == "TrussPart") or (parts[i].className == "VehicleSeat")) then
		if (prev ~= nil) then
			local weld = Instance.new("Weld")
			weld.Part0 = prev
			weld.Part1 = parts[i]
			weld.C0 = prev.CFrame:inverse()
			weld.C1 = parts[i].CFrame:inverse()
			weld.Parent = prev
			parts[i].Anchored = false
		end
		prev = parts[i]
	end
end
wait(3)

end))
Part32.Name = "Handle"
Part32.Parent = Tool29
Part32.Material = Enum.Material.Fabric
Part32.BrickColor = BrickColor.new("Black")
Part32.Rotation = Vector3.new(180, 0, -165)
Part32.FormFactor = Enum.FormFactor.Custom
Part32.Size = Vector3.new(0.300000012, 1, 0.300000012)
Part32.CFrame = CFrame.new(13.0473738, 2.52178431, 3.16040182, -0.965922058, 0.258817792, -3.82533472e-09, 0.258817792, 0.965922058, -2.83325789e-08, -3.77935461e-09, -2.80197128e-08, -1)
Part32.BottomSurface = Enum.SurfaceType.Weld
Part32.TopSurface = Enum.SurfaceType.Smooth
Part32.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part32.Position = Vector3.new(13.0473738, 2.52178431, 3.16040182)
Part32.Orientation = Vector3.new(0, -180, 15)
Part32.Color = Color3.new(0.105882, 0.164706, 0.207843)
CylinderMesh33.Parent = Part32
CylinderMesh33.Scale = Vector3.new(0.899999976, 1, 0.899999976)
CylinderMesh33.Scale = Vector3.new(0.899999976, 1, 0.899999976)
Weld34.Parent = Part32
Weld34.C0 = CFrame.new(-457.99826, -25.7006931, 446.902222, -1, 3.05171125e-05, 3.05180438e-05, 3.05180438e-05, 1, 3.05171125e-05, -3.05171125e-05, 3.05180438e-05, -1)
Weld34.C1 = CFrame.new(-457.987274, 27.7081051, -446.912628, -1, -3.05171125e-05, 3.05180438e-05, 3.05180438e-05, -1, 3.05171125e-05, 3.05171125e-05, 3.05180438e-05, 1)
Weld34.Part0 = Part32
Weld34.Part1 = Part40
Sound35.Name = "HitSound"
Sound35.Parent = Part32
Sound35.SoundId = "rbxassetid://169259022"
Sound35.Volume = 1
Sound36.Name = "LungeSound"
Sound36.Parent = Part32
Sound36.SoundId = "http://www.roblox.com/Asset/?ID= 101164100"
Sound36.Volume = 1
Sound37.Name = "OverheadSound"
Sound37.Parent = Part32
Sound37.SoundId = "http://www.roblox.com/Asset/?ID= 101164100"
Sound37.Volume = 1
Sound38.Name = "UnsheathSound"
Sound38.Parent = Part32
Sound38.SoundId = "rbxassetid://240784215"
Sound38.Volume = 1
Sound39.Name = "SlashSound"
Sound39.Parent = Part32
Sound39.SoundId = "http://www.roblox.com/Asset/?ID= 101164100"
Sound39.Volume = 1
Part40.Parent = Tool29
Part40.BrickColor = BrickColor.new("Really black")
Part40.Reflectance = 0.20000000298023
Part40.Rotation = Vector3.new(0, 0, 165)
Part40.FormFactor = Enum.FormFactor.Custom
Part40.Size = Vector3.new(0.300000012, 1, 0.300000012)
Part40.CFrame = CFrame.new(13.5757141, 4.45773554, 3.16909885, -0.965937853, -0.258758843, 1.57992508e-05, 0.258758843, -0.965937853, 5.89849187e-05, -1.91499905e-09, 6.10641073e-05, 1)
Part40.BottomSurface = Enum.SurfaceType.Weld
Part40.TopSurface = Enum.SurfaceType.Weld
Part40.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
Part40.Position = Vector3.new(13.5757141, 4.45773554, 3.16909885)
Part40.Orientation = Vector3.new(0, 0, 165)
Part40.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
CylinderMesh41.Parent = Part40
CylinderMesh41.Scale = Vector3.new(0.300000012, 1, 0.300000012)
CylinderMesh41.Scale = Vector3.new(0.300000012, 1, 0.300000012)
Weld42.Parent = Part40
Weld42.C0 = CFrame.new(-457.987274, 27.7081051, -446.912628, -1, -3.05171125e-05, 3.05180438e-05, 3.05180438e-05, -1, 3.05171125e-05, 3.05171125e-05, 3.05180438e-05, 1)
Weld42.C1 = CFrame.new(-457.993866, 26.698473, -446.906464, -1, -3.05171125e-05, 3.05180438e-05, 3.05180438e-05, -1, 3.05171125e-05, 3.05171125e-05, 3.05180438e-05, 1)
Weld42.Part0 = Part40
Weld42.Part1 = Part44
Script43.Parent = Part40
table.insert(cors,sandbox(Script43,function()
function onTouched(hit)
h = hit.Parent:findFirstChild("Humanoid")
if h ~= nil then
h.Sit = true
h.Health = h.Health - 0
end
end
script.Parent.Touched:connect(onTouched)

end))
Part44.Parent = Tool29
Part44.BrickColor = BrickColor.new("Really black")
Part44.Reflectance = 0.20000000298023
Part44.Rotation = Vector3.new(0, 0, 165)
Part44.FormFactor = Enum.FormFactor.Custom
Part44.Size = Vector3.new(0.300000012, 1, 0.300000012)
Part44.CFrame = CFrame.new(13.3080959, 3.48419905, 3.16299605, -0.965937853, -0.258758843, 1.57992508e-05, 0.258758843, -0.965937853, 5.89849187e-05, -1.91499905e-09, 6.10641073e-05, 1)
Part44.BottomSurface = Enum.SurfaceType.Weld
Part44.TopSurface = Enum.SurfaceType.Weld
Part44.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
Part44.Position = Vector3.new(13.3080959, 3.48419905, 3.16299605)
Part44.Orientation = Vector3.new(0, 0, 165)
Part44.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
CylinderMesh45.Parent = Part44
CylinderMesh45.Scale = Vector3.new(0.5, 1, 0.5)
CylinderMesh45.Scale = Vector3.new(0.5, 1, 0.5)
Weld46.Parent = Part44
Weld46.C0 = CFrame.new(-457.993866, 26.698473, -446.906464, -1, -3.05171125e-05, 3.05180438e-05, 3.05180438e-05, -1, 3.05171125e-05, 3.05171125e-05, 3.05180438e-05, 1)
Weld46.C1 = CFrame.new(-457.993408, 28.2644634, -446.909058, -1, -3.05161811e-05, 3.05189751e-05, 3.05189751e-05, -1, 9.15522687e-05, 3.05161811e-05, 9.15532e-05, 1)
Weld46.Part0 = Part44
Weld46.Part1 = Part48
Script47.Parent = Part44
table.insert(cors,sandbox(Script47,function()
function onTouched(hit)
h = hit.Parent:findFirstChild("Humanoid")
if h ~= nil then
h.Sit = true
h.Health = h.Health - 0
end
end
script.Parent.Touched:connect(onTouched)

end))
Part48.Parent = Tool29
Part48.BrickColor = BrickColor.new("Really black")
Part48.Reflectance = 0.20000000298023
Part48.Rotation = Vector3.new(-0.00999999978, 0, 165)
Part48.FormFactor = Enum.FormFactor.Custom
Part48.Size = Vector3.new(0.300000012, 0.200000003, 0.300000012)
Part48.CFrame = CFrame.new(13.7208099, 5.02307796, 3.16375327, -0.965937853, -0.258758843, 3.15935395e-05, 0.258758843, -0.965937853, 0.000117940843, -9.83733317e-10, 0.000122099271, 1)
Part48.BottomSurface = Enum.SurfaceType.Smooth
Part48.TopSurface = Enum.SurfaceType.Weld
Part48.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
Part48.Position = Vector3.new(13.7208099, 5.02307796, 3.16375327)
Part48.Orientation = Vector3.new(-0.00999999978, 0, 165)
Part48.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
CylinderMesh49.Parent = Part48
CylinderMesh49.Offset = Vector3.new(0, 0.150000006, 0)
CylinderMesh49.Scale = Vector3.new(0.5, 0.5, 0.5)
CylinderMesh49.Scale = Vector3.new(0.5, 0.5, 0.5)
Script50.Parent = Part48
table.insert(cors,sandbox(Script50,function()
function onTouched(hit)
h = hit.Parent:findFirstChild("Humanoid")
if h ~= nil then
h.Sit = true
h.Health = h.Health - 0
end
end
script.Parent.Touched:connect(onTouched)

end))
BoolValue51.Name = "PlayOverhead"
BoolValue51.Parent = Tool29
BoolValue52.Name = "PlaySlash"
BoolValue52.Parent = Tool29
BoolValue53.Name = "PlayThrust"
BoolValue53.Parent = Tool29
Script54.Name = "SwordScript"
Script54.Parent = Tool29
table.insert(cors,sandbox(Script54,function()
r = game:service("RunService")

local damage = 0

sword = script.Parent.Handle
Tool = script.Parent

local damages,values,sounds = {15,17,20},{Tool.PlaySlash,Tool.PlayThrust,Tool.PlayOverhead},{Tool.Handle.SlashSound,Tool.Handle.OverheadSound,Tool.Handle.LungeSound}
local enabledToDamage = true

function blow(hit)
	if enabledToDamage == false then return end
	enabledToDamage = false
	if (hit.Parent == nil) then enabledToDamage = true return end -- happens when bullet hits sword
	local humanoid = hit.Parent:findFirstChild("Humanoid")
	local vCharacter = Tool.Parent
	local vPlayer = game.Players:playerFromCharacter(vCharacter)
	local hum = vCharacter:findFirstChild("Humanoid") -- non-nil if tool held by a character
	if humanoid~=nil and humanoid ~= hum and hum ~= nil then
		-- final check, make sure sword is in-hand
		local right_arm = vCharacter:FindFirstChild("Right Arm")
		if (right_arm ~= nil) then
			local joint = right_arm:FindFirstChild("RightGrip")
			if (joint ~= nil and (joint.Part0 == sword or joint.Part1 == sword)) then
				tagHumanoid(humanoid, vPlayer)
				humanoid:TakeDamage(damage)
				delay(1, function()
				untagHumanoid(humanoid)
				end)
			else
				enabledToDamage = true
			end
		else
			enabledToDamage = true
		end
	else
		enabledToDamage = true
	end
end


function tagHumanoid(humanoid, player)
	local creator_tag = Instance.new("ObjectValue")
	creator_tag.Value = player
	creator_tag.Name = "creator"
	creator_tag.Parent = humanoid
end

function untagHumanoid(humanoid)
	if humanoid ~= nil then
		local tag = humanoid:findFirstChild("creator")
		if tag ~= nil then
			tag.Parent = nil
		end
	end
end


function attack()
	damage = slash_damage
	script.Parent.Handle.SlashSound:Play()
	script.Parent.PlaySlash.Value = not script.Parent.PlaySlash.Value 
end

function lunge()
	damage = lunge_damage
	script.Parent.Handle.LungeSound:Play()
	script.Parent.PlayOverhead.Value = not script.Parent.PlayOverhead.Value 
	force = Instance.new("BodyVelocity")
	force.velocity = Vector3.new(0,10,0) --Tool.Parent.Torso.CFrame.lookVector * 80
	force.Parent = Tool.Parent.Torso
	wait(.5)
	force.Parent = nil
	wait(.5)
	damage = slash_damage
end


Tool.Enabled = true
local last_attack = 0
local status = 0

function onActivated()
	if not Tool.Enabled then
		return
	end
	Tool.Enabled = false
	local character = Tool.Parent;
	local humanoid = character.Humanoid
	if humanoid == nil then
		print("Humanoid not found")
		return 
	end
	t = r.Stepped:wait()
	--if (t - last_attack < 1.5) then
		if status == 3 then
			status = 0
			damage = 0
		else
			status = status + 1
			values[status].Value = not values[status].Value
			damage = damages[status]
			sounds[status]:Play()
			enabledToDamage = true
			wait(0.5)
			enabledToDamage = false
		end
	--else
		--status = 0
		--damage = 0
	--end
	last_attack = t
	Tool.Enabled = true
end

function onEquipped()
	wait(1/3)
	Tool.Handle.UnsheathSound:Play()
end

Tool.Equipped:connect(onEquipped)
script.Parent.Activated:connect(onActivated)
connection = sword.Touched:connect(blow) 
end))
LocalScript55.Name = "AnimationScript"
LocalScript55.Parent = Tool29
table.insert(cors,sandbox(LocalScript55,function()
-- Waits for the child of the specified parent
local function WaitForChild(parent, childName)
	while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
	return parent[childName]
end

local Tool = script.Parent

local Animations = {}
local MyHumanoid
local MyCharacter


local function PlayAnimation(animationName)
	if Animations[animationName] then
		Animations[animationName]:Play()
	end
end

local function StopAnimation(animationName)
	if Animations[animationName] then
		Animations[animationName]:Stop()
	end
end


function OnEquipped(mouse)
	MyCharacter = Tool.Parent
	MyHumanoid = WaitForChild(MyCharacter, 'Humanoid')
	if MyHumanoid then
		Animations['EquipAnim'] = MyHumanoid:LoadAnimation(WaitForChild(Tool, 'EquipAnim5'))
		Animations['IdleAnim'] = MyHumanoid:LoadAnimation(WaitForChild(Tool, 'IdleAnim3'))
		Animations['OverheadAnim'] = MyHumanoid:LoadAnimation(WaitForChild(Tool, 'OverheadAnim2'))
		Animations['SlashAnim'] = MyHumanoid:LoadAnimation(WaitForChild(Tool, 'SlashAnim2'))
		Animations['ThrustAnim'] = MyHumanoid:LoadAnimation(WaitForChild(Tool, 'ThrustAnim2'))
		Animations['UnequipAnim'] = MyHumanoid:LoadAnimation(WaitForChild(Tool, 'UnequipAnim2'))
	end
	PlayAnimation('EquipAnim')
	PlayAnimation('IdleAnim')
end

function OnUnequipped()
	for animName, _ in pairs(Animations) do
		StopAnimation(animName)
	end
end

Tool.Equipped:connect(OnEquipped)
Tool.Unequipped:connect(OnUnequipped)

WaitForChild(Tool, 'PlaySlash').Changed:connect(
	function (value)
		--if value then
			PlayAnimation('SlashAnim')
		--else
		--	StopAnimation('SlashAnim')
		--end
	end)

WaitForChild(Tool, 'PlayThrust').Changed:connect(
	function (value)
		--if value then
			PlayAnimation('ThrustAnim')
		--else
		--	StopAnimation('ThrustAnim')
		--end
	end)

WaitForChild(Tool, 'PlayOverhead').Changed:connect(
	function (value)
		--if value then
			PlayAnimation('OverheadAnim')
		--else
		--	StopAnimation('OverheadAnim')
		--end
	end)

end))
Animation56.Name = "IdleAnim3"
Animation56.Parent = Tool29
Animation56.AnimationId = "http://www.roblox.com/Asset?ID=94108418"
Animation57.Name = "OverheadAnim2"
Animation57.Parent = Tool29
Animation57.AnimationId = "rbxassetid://186934753"
Animation58.Name = "UnequipAnim2"
Animation58.Parent = Tool29
Animation58.AnimationId = "http://www.roblox.com/Asset?ID=94095929"
Animation59.Name = "EquipAnim5"
Animation59.Parent = Tool29
Animation59.AnimationId = "http://www.roblox.com/Asset?ID=94160581"
Animation60.Name = "ThrustAnim2"
Animation60.Parent = Tool29
Animation60.AnimationId = "rbxassetid://186934753"
Animation61.Name = "SlashAnim2"
Animation61.Parent = Tool29
Animation61.AnimationId = "rbxassetid://186934753"
Tool62.Name = "RPG-7"
Tool62.Parent = mas
Tool62.GripPos = Vector3.new(0.0500000007, -0.600000024, -1)
Tool62.ToolTip = "RPG-7"
Tool62.CanBeDropped = false
Part63.Name = "Handle"
Part63.Parent = Tool62
Part63.Transparency = 1
Part63.Rotation = Vector3.new(92.1199951, 62, -91.8699951)
Part63.FormFactor = Enum.FormFactor.Custom
Part63.Size = Vector3.new(0.839999974, 1.14999998, 3.55000019)
Part63.CFrame = CFrame.new(-70.7470474, 13.1006594, 24.1488132, -0.0153169353, 0.469224393, 0.882945836, 0.00813866127, 0.883078873, -0.469153851, -0.999849558, 0, -0.0173449218)
Part63.BottomSurface = Enum.SurfaceType.Smooth
Part63.TopSurface = Enum.SurfaceType.Smooth
Part63.Position = Vector3.new(-70.7470474, 13.1006594, 24.1488132)
Part63.Orientation = Vector3.new(27.9799995, 91.1299973, 0.529999971)
SpecialMesh64.Parent = Part63
SpecialMesh64.MeshId = "http://www.roblox.com/asset/?id=94690054"
SpecialMesh64.TextureId = "http://www.roblox.com/asset/?id=94689966"
SpecialMesh64.MeshType = Enum.MeshType.FileMesh
Sound65.Name = "ReloadSound"
Sound65.Parent = Part63
Sound65.Pitch = 1.1000000238419
Sound65.SoundId = "http://www.roblox.com/Asset?ID=132456167"
Sound65.Volume = 1
Sound66.Name = "FireSound"
Sound66.Parent = Part63
Sound66.SoundId = "http://www.roblox.com/Asset?ID=132456187"
Sound66.Volume = 1
LocalScript67.Name = "MouseIcon"
LocalScript67.Parent = Tool62
table.insert(cors,sandbox(LocalScript67,function()
local MOUSE_ICON = 'rbxasset://textures/GunCursor.png'
local RELOADING_ICON = 'rbxasset://textures/GunWaitCursor.png'

local Tool = script.Parent

local Mouse = nil

local function UpdateIcon()
	Mouse.Icon = Tool.Enabled and MOUSE_ICON or RELOADING_ICON
end

local function OnEquipped(mouse)
	Mouse = mouse
	UpdateIcon()
end

local function OnChanged(property)
	if property == 'Enabled' then
		UpdateIcon()
	end
end

Tool.Equipped:connect(OnEquipped)
Tool.Changed:connect(OnChanged)

end))
Script68.Name = "Launcher"
Script68.Parent = Tool62
table.insert(cors,sandbox(Script68,function()
-----------------
--| Constants |--
-----------------

local COOLDOWN = 4 -- Seconds until tool can be used again

-- RocketPropulsion Fields
local TARGET_RADIUS = 5
local MAX_SPEED = 95
local MAX_TORQUE = Vector3.new(4e6, 4e6, 0)
local MAX_THRUST = 50000
local THRUST_P = 500
local THRUST_D = 50000

local TARGET_OVERSHOOT_DISTANCE = 10000000

local ROCKET_MESH_ID = 'http://www.roblox.com/asset/?id=94690081'
local ROCKET_MESH_SCALE = Vector3.new(2.5, 2.5, 2)
local ROCKET_PART_SIZE = Vector3.new(1, 1, 4)

--------------------
--| WaitForChild |--
--------------------

-- Waits for parent.child to exist, then returns it
local function WaitForChild(parent, childName)
	assert(parent, "ERROR: WaitForChild: parent is nil")
	while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
	return parent[childName]
end

-----------------
--| Variables |--
-----------------

local DebrisService = Game:GetService('Debris')
local PlayersService = Game:GetService('Players')

local Tool = script.Parent
local ToolHandle = Tool.Handle

local RocketScript = WaitForChild(script, 'Rocket')

local SwooshSound = WaitForChild(script, 'Swoosh')
local BoomSound = WaitForChild(script, 'Boom')
local ReloadSound = WaitForChild(ToolHandle, 'ReloadSound')
local FireSound = WaitForChild(ToolHandle, 'FireSound')

local MyModel = nil
local MyPlayer = nil

local BaseRocket = nil
local RocketClone = nil

-----------------
--| Functions |--
-----------------

local function MakeBaseRocket()
	-- Set up the rocket part
	local rocket = Instance.new('Part')
	rocket.Name = 'Rocket'
	rocket.FormFactor = Enum.FormFactor.Custom --NOTE: This must be done before changing Size
	rocket.Size = ROCKET_PART_SIZE
	rocket.CanCollide = false
	rocket.BottomSurface = Enum.SurfaceType.Smooth
	rocket.TopSurface = Enum.SurfaceType.Smooth

	-- Add the mesh
	local mesh = Instance.new('SpecialMesh', rocket)
	mesh.MeshId = ROCKET_MESH_ID
	mesh.Scale = ROCKET_MESH_SCALE
	mesh.TextureId = ToolHandle.Mesh.TextureId

	-- Add fire
	local fire = Instance.new('Fire', rocket)
	fire.Heat = 3
	fire.Size = 2

	-- Add the propulsion
	local rocketPropulsion = Instance.new('RocketPropulsion', rocket)
	rocketPropulsion.CartoonFactor = 1
	rocketPropulsion.TargetRadius = TARGET_RADIUS
	rocketPropulsion.MaxSpeed = MAX_SPEED
	rocketPropulsion.MaxTorque = MAX_TORQUE
	rocketPropulsion.MaxThrust = MAX_THRUST
	rocketPropulsion.ThrustP = THRUST_P
	rocketPropulsion.ThrustD = THRUST_D

	-- Clone the sounds
	local swooshSoundClone = SwooshSound:Clone()
	swooshSoundClone.Parent = rocket
	local boomSoundClone = BoomSound:Clone()
	boomSoundClone.Parent = rocket

	-- Attach creator tags
	local creatorTag = Instance.new('ObjectValue', rocket)
	creatorTag.Name = 'creator' --NOTE: Must be called 'creator' for website stats
	creatorTag.Value = MyPlayer
	local iconTag = Instance.new('StringValue', creatorTag)
	iconTag.Name = 'icon'
	iconTag.Value = Tool.TextureId

	-- Finally, clone the rocket script and enable it
	local rocketScriptClone = RocketScript:Clone()
	rocketScriptClone.Parent = rocket
	rocketScriptClone.Disabled = false

	return rocket
end

local function OnEquipped()
	MyModel = Tool.Parent
	MyPlayer = PlayersService:GetPlayerFromCharacter(MyModel)
	BaseRocket = MakeBaseRocket()
	RocketClone = BaseRocket:Clone()
end

local function OnActivated(byFireButton)
	if Tool.Enabled and MyModel and MyModel:FindFirstChild('Humanoid') and MyModel.Humanoid.Health > 0 then
		Tool.Enabled = false

		-- Get the target position
		local targetPosition = MyModel.Humanoid.TargetPoint
		if byFireButton then -- Using Fire Button, shoot forwards
			targetPosition = MyModel.Humanoid.Torso.CFrame.lookVector * 1000
		end

		-- Position the rocket clone
		local spawnPosition = ToolHandle.Position + (ToolHandle.CFrame.lookVector * (ToolHandle.Size.z / 2))
		RocketClone.CFrame = CFrame.new(spawnPosition, targetPosition) --NOTE: This must be done before assigning Parent
		DebrisService:AddItem(RocketClone, 30)
		RocketClone.Parent = Workspace

		-- Assign target and launch!
		FireSound:Play()
		local rocketPropulsion = RocketClone:FindFirstChild('RocketPropulsion')
		if rocketPropulsion then
			local direction = (targetPosition - RocketClone.Position).unit
			rocketPropulsion.TargetOffset = RocketClone.Position + (direction * TARGET_OVERSHOOT_DISTANCE)
			rocketPropulsion:Fire()
		end
		
		RocketClone.Touched:connect(function(hit)
				--print("oof")
				
				-----------------
--| Constants |--
-----------------

local BLAST_RADIUS = 6
local BLAST_PRESSURE = 750000

-- Rocket will fly through things named these
local ROCKET_IGNORE_LIST = {rocket = 1, handle = 1, effect = 1, water = 1} --NOTE: Keys must be lowercase, values must evaluate to true

--------------------
--| WaitForChild |--
--------------------

-- Waits for parent.child to exist, then returns it
local function WaitForChild(parent, childName)
	assert(parent, "ERROR: WaitForChild: parent is nil")
	while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
	return parent[childName]
end

-----------------
--| Variables |--
-----------------

local DebrisService = Game:GetService('Debris')

local Rocket = RocketClone
local CreatorTag = WaitForChild(Rocket, 'creator')

local Connection = nil

-----------------
--| Functions |--
-----------------

-- Returns the ancestor that contains a Humanoid, if it exists
local function FindCharacterAncestor(subject)
	if subject and subject ~= Workspace then
		local humanoid = subject:FindFirstChild('Humanoid')
		if humanoid then
			return subject, humanoid
		else
			return FindCharacterAncestor(subject.Parent)
		end
	end
	return nil
end

local function OnExplosionHit(hitPart)
	if hitPart then
		local _, humanoid = FindCharacterAncestor(hitPart.Parent)
		if humanoid then
			humanoid.Parent:BreakJoints()
			local hitBindable = humanoid:FindFirstChild('Hit')
			if hitBindable then
				hitBindable:Invoke(0, CreatorTag)
			else
				print("Could not find BindableFunction 'Hit'")
			end
		end
	end
end

local function OnTouched(otherPart)
	if Rocket and otherPart and not Rocket:FindFirstChild("IsDone") then
		-- Fly through anything in the ignore list
		if ROCKET_IGNORE_LIST[string.lower(otherPart.Name)] then
			return
		end

		-- Fly through the creator
		local myPlayer = CreatorTag.Value
		if myPlayer and myPlayer.Character and myPlayer.Character:IsAncestorOf(otherPart) then
			return
		end

		-- Create the explosion
		local explosion = Instance.new('Explosion')
		explosion.BlastPressure = BLAST_PRESSURE
		explosion.BlastRadius = BLAST_RADIUS
		explosion.Position = Rocket.Position
		explosion.Hit:connect(OnExplosionHit)
		explosion.Parent = Workspace

			tag = Instance.new("BoolValue", Rocket)
			tag.Name = "IsDone"

		-- Start playing the boom sound
		local boomSound = Rocket:FindFirstChild('Boom')
		if boomSound then
			boomSound:Play()
		end

		-- NOTE:
		-- If we just destroyed the rocket at this point, the boom sound would be destroyed too,
		-- so instead we will hide the rocket, keep it in the same spot, and schedule it for deletion

		-- Stop playing the swoosh sound
		local swooshSound = Rocket:FindFirstChild('Swoosh')
		if swooshSound then
			swooshSound:Stop()
		end

		-- Put out the fire
		local fire = Rocket:FindFirstChild('Fire')
		if fire then
			fire:Destroy()
		end

		Rocket.Transparency = 1
		Rocket.CanCollide = false
		Rocket.Anchored = true
		DebrisService:AddItem(Rocket, 3)

		-- Destroy the connection so this method won't be called again
		Connection:disconnect()
	end
end

--------------------
--| Script Logic |--
--------------------

-- Arm the rocket and save the touch connection so we can disconnect it later
Connection = Rocket.Touched:connect(OnTouched)

		end)

		wait(0) --TODO: Remove when sounds realize they can be played as soon as they enter the Workspace

		-- Swoosh!
		local swooshSound = RocketClone:FindFirstChild('Swoosh')
		if swooshSound then
			swooshSound:Play()
		end

		-- Prepare the next rocket to be fired
		RocketClone = BaseRocket:Clone()

		ReloadSound:Play()

		wait(COOLDOWN)

		-- Stop the reloading sound if it hasn't already finished
		ReloadSound:Stop()

		Tool.Enabled = true
	end
end

local function OnUnequipped()
	ReloadSound:Stop() --TODO: This does not work online
end

-- Also activate when the Fire Button is down
local function OnChildAdded(child)
	if child.Name == 'FireButtonDown' then
		child.Changed:connect(function(newValue)
			if newValue == true then
				OnActivated(true)
			end
		end)
	end
end

--------------------
--| Script Logic |--
--------------------

Tool.Equipped:connect(OnEquipped)
Tool.Activated:connect(OnActivated)
Tool.Unequipped:connect(OnUnequipped)
Tool.ChildAdded:connect(OnChildAdded) --NOTE: Added for Fire Button

end))
Sound69.Name = "Boom"
Sound69.Parent = Script68
Sound69.SoundId = "http://www.roblox.com/Asset?ID=133680244"
Sound69.Volume = 1
Sound70.Name = "Swoosh"
Sound70.Parent = Script68
Sound70.Pitch = 1.2999999523163
Sound70.SoundId = "rbxasset://sounds/Rocket whoosh 01.wav"
Sound70.Volume = 0.69999998807907
Sound70.Looped = true
Script71.Name = "Rocket"
Script71.Parent = Script68
Script71.Disabled = true
table.insert(cors,sandbox(Script71,function()
-----------------
--| Constants |--
-----------------

local BLAST_RADIUS = 6
local BLAST_PRESSURE = 750000

-- Rocket will fly through things named these
local ROCKET_IGNORE_LIST = {rocket = 1, handle = 1, effect = 1, water = 1} --NOTE: Keys must be lowercase, values must evaluate to true

--------------------
--| WaitForChild |--
--------------------

-- Waits for parent.child to exist, then returns it
local function WaitForChild(parent, childName)
	assert(parent, "ERROR: WaitForChild: parent is nil")
	while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
	return parent[childName]
end

-----------------
--| Variables |--
-----------------

local DebrisService = Game:GetService('Debris')

local Rocket = script.Parent
local CreatorTag = WaitForChild(Rocket, 'creator')

local Connection = nil

-----------------
--| Functions |--
-----------------

-- Returns the ancestor that contains a Humanoid, if it exists
local function FindCharacterAncestor(subject)
	if subject and subject ~= Workspace then
		local humanoid = subject:FindFirstChild('Humanoid')
		if humanoid then
			return subject, humanoid
		else
			return FindCharacterAncestor(subject.Parent)
		end
	end
	return nil
end

local function OnExplosionHit(hitPart)
	if hitPart then
		local _, humanoid = FindCharacterAncestor(hitPart.Parent)
		if humanoid then
			humanoid.Parent:BreakJoints()
			local hitBindable = humanoid:FindFirstChild('Hit')
			if hitBindable then
				hitBindable:Invoke(0, CreatorTag)
			else
				print("Could not find BindableFunction 'Hit'")
			end
		end
	end
end

local function OnTouched(otherPart)
	if Rocket and otherPart then
		-- Fly through anything in the ignore list
		if ROCKET_IGNORE_LIST[string.lower(otherPart.Name)] then
			return
		end

		-- Fly through the creator
		local myPlayer = CreatorTag.Value
		if myPlayer and myPlayer.Character and myPlayer.Character:IsAncestorOf(otherPart) then
			return
		end

		-- Create the explosion
		local explosion = Instance.new('Explosion')
		explosion.BlastPressure = BLAST_PRESSURE
		explosion.BlastRadius = BLAST_RADIUS
		explosion.Position = Rocket.Position
		explosion.Hit:connect(OnExplosionHit)
		explosion.Parent = Workspace

		-- Start playing the boom sound
		local boomSound = Rocket:FindFirstChild('Boom')
		if boomSound then
			boomSound:Play()
		end

		-- NOTE:
		-- If we just destroyed the rocket at this point, the boom sound would be destroyed too,
		-- so instead we will hide the rocket, keep it in the same spot, and schedule it for deletion

		-- Stop playing the swoosh sound
		local swooshSound = Rocket:FindFirstChild('Swoosh')
		if swooshSound then
			swooshSound:Stop()
		end

		-- Put out the fire
		local fire = Rocket:FindFirstChild('Fire')
		if fire then
			fire:Destroy()
		end

		Rocket.Transparency = 1
		Rocket.CanCollide = false
		Rocket.Anchored = true
		DebrisService:AddItem(Rocket, 3)

		-- Destroy the connection so this method won't be called again
		Connection:disconnect()
	end
end

--------------------
--| Script Logic |--
--------------------

-- Arm the rocket and save the touch connection so we can disconnect it later
Connection = Rocket.Touched:connect(OnTouched)

end))
LocalScript72.Name = "Animation"
LocalScript72.Parent = Tool62
table.insert(cors,sandbox(LocalScript72,function()
--------------------
--| WaitForChild |--
--------------------

-- Waits for parent.child to exist, then returns it
local function WaitForChild(parent, childName)
	assert(parent, "ERROR: WaitForChild: parent is nil")
	while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
	return parent[childName]
end

-----------------
--| Variables |--
-----------------

local Tool = script.Parent

local FireAndReloadAnimation = WaitForChild(script, 'FireAndReload')

local FireAndReloadTrack = nil

-----------------
--| Functions |--
-----------------

local function OnEquipped()
	local myModel = Tool.Parent
	local humanoid = myModel:FindFirstChild('Humanoid')
	if humanoid then -- Preload animations
		FireAndReloadTrack = humanoid:LoadAnimation(FireAndReloadAnimation)
	end
end

local function OnChanged(property)
	if property == 'Enabled' and Tool.Enabled == false then
		-- Play fire and reload animation
		if FireAndReloadTrack then
			FireAndReloadTrack:Play()
		end
	end
end

local function OnUnequipped()
	-- Stop animations
	if FireAndReloadTrack then FireAndReloadTrack:Stop() end
end

--------------------
--| Script Logic |--
--------------------

Tool.Equipped:connect(OnEquipped)
Tool.Changed:connect(OnChanged)
Tool.Unequipped:connect(OnUnequipped)

end))
Animation73.Name = "FireAndReload"
Animation73.Parent = LocalScript72
Animation73.AnimationId = "http://www.roblox.com/Asset?ID=94771598"
LocalScript74.Name = "VisualizeReload"
LocalScript74.Parent = Tool62
table.insert(cors,sandbox(LocalScript74,function()
-----------------
--| Constants |--
-----------------

local ROCKET_MESH_ID = ''
local ROCKET_MESH_SCALE = Vector3.new(1, 1, 1)

local ANIM_TOTAL_TIME = 3.4 -- Total length of FireAndReload animation
local ROCKET_SHOW_TIME = 1.5 -- Seconds after animation begins to show the rocket
local ROCKET_HIDE_TIME = 2.2 -- Seconds after animation begins to hide the rocket

-----------------
--| Variables |--
-----------------

local Tool = script.Parent
local ToolHandle = Tool.Handle

local MyModel = nil
local ReloadRocket = nil

local StillEquipped = false

-----------------
--| Functions |--
-----------------

local function MakeReloadRocket()
	local reloadRocket = Instance.new('Part')
	reloadRocket.Name = "Ammo"
	reloadRocket.Transparency = 1
	reloadRocket.FormFactor = Enum.FormFactor.Custom --NOTE: This must be done before changing Size
	reloadRocket.Size = Vector3.new() -- As small as possible

	local mesh = Instance.new('SpecialMesh', reloadRocket)
	mesh.MeshId = ROCKET_MESH_ID
	mesh.Scale = ROCKET_MESH_SCALE
	mesh.TextureId = ToolHandle.Mesh.TextureId

	return reloadRocket
end

local function OnEquipped()
	MyModel = Tool.Parent
	ReloadRocket = MakeReloadRocket()
end

local function OnChanged(property)
	if property == 'Enabled' and Tool.Enabled == false then
		-- Show the next rocket going into the launcher
		StillEquipped = true
		wait(ROCKET_SHOW_TIME)
		if StillEquipped then
			local leftArm = MyModel:FindFirstChild('Left Arm')
			if leftArm then
				local weld = ReloadRocket:FindFirstChild('Weld')
				if not weld then
					weld = Instance.new('Weld')
					weld.Part0 = leftArm
					weld.Part1 = ReloadRocket
					weld.C1 = CFrame.new(Vector3.new(0, 1, 0))
					weld.Parent = ReloadRocket
				end
				ReloadRocket.Parent = MyModel
			end
			wait(ROCKET_HIDE_TIME - ROCKET_SHOW_TIME)
			if StillEquipped and ReloadRocket.Parent == MyModel then
				ReloadRocket.Parent = nil
			end
		end
	end
end

local function OnUnequipped()
	StillEquipped = false
	ReloadRocket:Destroy()
	ReloadRocket = nil
end

--------------------
--| Script Logic |--
--------------------

Tool.Equipped:connect(OnEquipped)
Tool.Changed:connect(OnChanged)
Tool.Unequipped:connect(OnUnequipped)

end))
Part75.Name = "RPG-7"
Part75.Parent = Tool62
Part75.Rotation = Vector3.new(92.1199951, 62, -91.8699951)
Part75.CanCollide = false
Part75.FormFactor = Enum.FormFactor.Symmetric
Part75.Size = Vector3.new(1, 1, 4)
Part75.CFrame = CFrame.new(-71.2503738, 13.141613, 24.1718769, -0.0153171355, 0.469224393, 0.882945538, 0.00813870504, 0.883078873, -0.469153672, -0.99984926, -5.7471425e-08, -0.0173451193)
Part75.BottomSurface = Enum.SurfaceType.Smooth
Part75.TopSurface = Enum.SurfaceType.Smooth
Part75.Position = Vector3.new(-71.2503738, 13.141613, 24.1718769)
Part75.Orientation = Vector3.new(27.9799995, 91.1299973, 0.529999971)
SpecialMesh76.Parent = Part75
SpecialMesh76.MeshId = "http://www.roblox.com/asset/?id=88742477"
SpecialMesh76.Scale = Vector3.new(2.5, 2.5, 2.5)
SpecialMesh76.TextureId = "http://www.roblox.com/asset/?id=88745396"
SpecialMesh76.MeshType = Enum.MeshType.FileMesh
SpecialMesh76.Scale = Vector3.new(2.5, 2.5, 2.5)
Script77.Name = "UltimateWeld"
Script77.Parent = Tool62
table.insert(cors,sandbox(Script77,function()
--DO NOT USE BOTH WELDING SCRIPTS PROVIDED BY THIS MODEL
--The regular script is recommended



--[[
Prevents welds from breaking/transforming when player uses the tool
This recreates the EXACT weld every time
This also prevents lag build up by clearing old welds, the tradition weld script just keeps making new 
ones, which can lead to weapons have crazy amounts of welds that dont work (I saw 6000 in a weapon once)
]]

--[[Usage
1. Remove Old welding script (optional, only if updating a weapon and that weapon does not rely on that script)
2. Anchor all parts of tool and put inside of a tool object
3. Place this script in that tool (make sure you do this AFTER step 2, otherwise it may fail)
4. Treat like normal tool, nothing special has to be done with it
]]

--[[The local script included in this model can only be used if
1. The weapon is being placed in the players backpack first (i.e. the weapon is in starterpack and moves to player backpack)
OR
2. The weapon is previously welded (weapon can be placed in workspace and picked up then)
]] 
repeat wait() until script.Parent:FindFirstChild("Handle")
local welds={}
function ClearOldWelds(tbl)
	for _,v in pairs(tbl) do
		if v:IsA('Weld') then
			v:Destroy()
		end
	end
end

function Equipped()
	local handle=script.Parent:FindFirstChild('Handle')
	if not handle then return end
	local tble=handle:GetChildren()
	for _,v in pairs(script.Parent:GetChildren()) do
		if v:IsA('BasePart') and v~=handle then
			local c1
			for _1,v1 in pairs(welds) do
				if _1==v then
					c1=v1
					break
				end
			end
			if not c1 then
				welds[v]=v.CFrame:inverse()*handle.CFrame
				v.Anchored=false
				c1=welds[v]
			end
			local weld=Instance.new('Weld')
					weld.Part0=handle
					weld.Part1=v
					weld.C0=CFrame.new()
					weld.C1=c1
					weld.Parent=handle
		end
	end
	ClearOldWelds(tble)
	handle.Anchored=false
end
Equipped()
script.Parent.Equipped:connect(Equipped)

--Made by DonnyTheDemented

end))
Script78.Name = "Welding"
Script78.Parent = Tool62
table.insert(cors,sandbox(Script78,function()
function Weld(x,y)
	local W = Instance.new("Weld")
	W.Part0 = x
	W.Part1 = y
	local CJ = CFrame.new(x.Position)
	local C0 = x.CFrame:inverse()*CJ
	local C1 = y.CFrame:inverse()*CJ
	W.C0 = C0
	W.C1 = C1
	W.Parent = x
end

function Get(A)
	if A.className == "Part" then
		Weld(script.Parent.Handle, A)
		A.Anchored = false
	else
		local C = A:GetChildren()
		for i=1, #C do
		Get(C[i])
		end
	end
end

function Finale()
	Get(script.Parent)
end

script.Parent.Equipped:connect(Finale)
script.Parent.Unequipped:connect(Finale)
Finale()
end))
LocalScript79.Name = "BackupWeld"
LocalScript79.Parent = Tool62
table.insert(cors,sandbox(LocalScript79,function()
function Weld(x,y)
	local W = Instance.new("Weld")
	W.Part0 = x
	W.Part1 = y
	local CJ = CFrame.new(x.Position)
	local C0 = x.CFrame:inverse()*CJ
	local C1 = y.CFrame:inverse()*CJ
	W.C0 = C0
	W.C1 = C1
	W.Parent = x
end

function Get(A)
	if A.className == "Part" then
		Weld(script.Parent.Handle, A)
		A.Anchored = false
	else
		local C = A:GetChildren()
		for i=1, #C do
		Get(C[i])
		end
	end
end

function Finale()
	Get(script.Parent)
end

script.Parent.Equipped:connect(Finale)
script.Parent.Unequipped:connect(Finale)
Finale()
end))
LocalScript80.Name = "CameraMoveDev"
LocalScript80.Parent = Tool62
table.insert(cors,sandbox(LocalScript80,function()
local RunService = game:GetService('RunService')
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
repeat wait() until player.Character
repeat wait() until player.Character:FindFirstChild("Humanoid")
repeat wait() until player.Character:FindFirstChild("Torso")
local character = player.Character
local humanoid = character:WaitForChild("Humanoid")
torso = character.Torso
keyhold = false
--player.CameraMinZoomDistance = 0.5
lighting = true
haslight = false

mouse.TargetFilter = nil

--humanoid.JumpPower = 0

maxcount = 100
runcount = maxcount

function populateparts(mdl)
	if mdl:IsA("BasePart") then
		table.insert(parts,mdl)
	end
	for i2,mdl2 in ipairs(mdl:GetChildren()) do
		populateparts(mdl2)
	end
end

function weldBetween(a, b)
	--Make a new Weld and Parent it to a.
	weld = Instance.new("ManualWeld", a)
	--Get the CFrame of b relative to a.
	weld.C0 = a.CFrame:inverse() * b.CFrame
	--Set the Part0 and Part1 properties respectively
	weld.Part0 = a
	weld.Part1 = b
	--Return the reference to the weld so that you can change it later.
	return weld
end

humanoid.Died:connect(function()
	if armgroup then
		armgroup:Destroy()
		if cl then
			cl:Destroy()
		end
		if cl2 then
			cl2:Destroy()
		end
	end
end)

LocalObjects = {}
function SetLocalTransparency(Table)
	for i, v in pairs(LocalObjects) do
		if v.Object == Table.Object then
			Table.Object.LocalTransparencyModifier = Table.OriginalTransparency
			table.remove(LocalObjects, i)
		end
	end
	if not Table.Transparency then
		return
	end
	Table.OriginalTransparency = Table.Object.LocalTransparencyModifier
	table.insert(LocalObjects, Table)
	if ModifyTransparency then
		ModifyTransparency:disconnect()
	end
	ModifyTransparency = RunService.RenderStepped:connect(function()
		for i, v in pairs(LocalObjects) do
			if v.Object and v.Object.Parent then
				local CurrentTransparency = v.Object.LocalTransparencyModifier
				if ((not v.AutoUpdate and (CurrentTransparency == 1 or CurrentTransparency == 0)) or v.AutoUpdate) then
					v.Object.LocalTransparencyModifier = v.Transparency
				end
			else
				table.remove(LocalObjects, i)
			end
		end
	end)
end

local function SetupJoints()
	if character.Humanoid.RigType == Enum.HumanoidRigType.R15 then
		return -- TODO: Make tracking compatible with R15
	end
	torso = character:FindFirstChild("Torso")
	
	Neck = torso.Neck
	OldNeckC0 = Neck.C0
	OldNeckC1 = Neck.C1
	Shoulder = torso['Right Shoulder']
	Shoulder2 = torso['Left Shoulder']
	OldShoulderC0 = Shoulder.C0
	OldShoulderC1 = Shoulder.C1
	OldShoulder2C0 = Shoulder2.C0
	OldShoulder2C1 = Shoulder2.C1
end

local function visual()
	if Tool then
	if Tool:FindFirstChild("GetKill") and not game.Workspace.CurrentCamera:FindFirstChild("KillColor") then
		Color = Instance.new("ColorCorrectionEffect")
		Color.Name = "KillColor"
		Color.Saturation = -0.5
		Color.Parent = game.Workspace.CurrentCamera
		game.Debris:AddItem(Color, 0.22)
		Blur = Instance.new("BlurEffect")
		Blur.Name = "KillBlur"
		Blur.Size = 8
		Blur.Parent = game.Workspace.CurrentCamera
		game.Debris:AddItem(Blur, 0.22)
		Tool.GetKill:Destroy()
	end
	
	if Tool:FindFirstChild("GetHeadKill") and not game.Workspace.CurrentCamera:FindFirstChild("KillColor") then
		Color = Instance.new("ColorCorrectionEffect")
		Color.Name = "KillColor"
		Color.Saturation = -0.75
		Color.TintColor = Color3.new(1, 0.9, 0.9)
		Color.Parent = game.Workspace.CurrentCamera
		game.Debris:AddItem(Color, 0.22)
		Blur = Instance.new("BlurEffect")
		Blur.Name = "KillBlur"
		Blur.Size = 8
		Blur.Parent = game.Workspace.CurrentCamera
		game.Debris:AddItem(Blur, 0.22)
		Tool.GetHeadKill:Destroy()
	end
	end
	
	--player.CameraMode = Enum.CameraMode.LockFirstPerson
	
end

SetupJoints()

game:GetService("RunService").RenderStepped:connect(function()
	if character and humanoid.Health > 0 and script.Parent.Parent == character then
	if character:FindFirstChildOfClass("Tool") and character:FindFirstChildOfClass("Tool") == script.Parent then
		Tool = character:FindFirstChildOfClass("Tool")
		visual()
	else
		Tool = nil
		end
		if Tool then
		character.Humanoid.AutoRotate = false
		
			mouse.TargetFilter = game.Workspace
			--if (game.Workspace.CurrentCamera.CoordinateFrame.p - game.Workspace.CurrentCamera.Focus.p).magnitude < 1 then
			--game.Workspace.CurrentCamera.CameraSubject = character.Head
			game.Workspace.CurrentCamera.Focus = character.Head.CFrame
			--end
		
			character['Torso'].Neck.C0 = OldNeckC0
		character['Torso'].Neck.C1 = OldNeckC1
		character['Torso']['Right Shoulder'].C0 = OldShoulderC0
		character['Torso']['Right Shoulder'].C1 = OldShoulderC1
		character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
		character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
		
			local toMouse = (mouse.Hit.p - character.Head.Position).unit
			local angle = math.acos(toMouse:Dot(Vector3.new(0,1,0)))
			local neckAngle = angle
			if math.deg(neckAngle) > 110 then
		neckAngle = math.rad(110)
			end
			
			Neck.C0 = CFrame.new(0,1,0) * CFrame.Angles(math.pi - neckAngle,math.pi,0)
			
			character.Torso["Right Shoulder"].C0 = CFrame.new(1,0.5,0) * CFrame.Angles(math.pi/2 - angle,math.pi/2,0)	
	character.Torso["Left Shoulder"].C0 = CFrame.new(-1,0.5,0) * CFrame.Angles(math.pi/2 - angle,math.pi/-2,0)	
	
	if character.Humanoid:GetState() ~= Enum.HumanoidStateType.Seated then
		character['Torso'].CFrame = CFrame.new(character['Torso'].Position, character['Torso'].Position + (Vector3.new(
			mouse.Hit.x, character['Torso'].Position.Y, mouse.Hit.z)-character['Torso'].Position).unit)
	end	
		else
	if armgroup then
				armgroup:Destroy()
				armgroup = nil
			end
	if character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
		character['Torso'].Neck.C0 = OldNeckC0
		character['Torso'].Neck.C1 = OldNeckC1
		character['Torso']['Right Shoulder'].C0 = OldShoulderC0
		character['Torso']['Right Shoulder'].C1 = OldShoulderC1
		character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
		character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
		
		character.Humanoid.AutoRotate = true
		mouse.TargetFilter = nil
		
		game.Workspace.CurrentCamera.CameraSubject = character.Humanoid
	for i, v in pairs(character:GetChildren()) do
		if v:IsA("BasePart") then
			SetLocalTransparency({Object = v, Transparency = nil, AutoUpdate = true})
		end
		if v:IsA("Accessory") then
			SetLocalTransparency({Object = v.Handle, Transparency = nil, AutoUpdate = true})
		end
	end
	end
			end
	end
end)

script.Parent.Unequipped:connect(function()
	if armgroup then
				armgroup:Destroy()
				armgroup = nil
			end
	if character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
		character['Torso'].Neck.C0 = OldNeckC0
		character['Torso'].Neck.C1 = OldNeckC1
		character['Torso']['Right Shoulder'].C0 = OldShoulderC0
		character['Torso']['Right Shoulder'].C1 = OldShoulderC1
		character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
		character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
		
		character.Humanoid.AutoRotate = true
		mouse.TargetFilter = nil
		
		game.Workspace.CurrentCamera.CameraSubject = character.Humanoid
	for i, v in pairs(character:GetChildren()) do
		if v:IsA("BasePart") then
			SetLocalTransparency({Object = v, Transparency = nil, AutoUpdate = true})
		end
		if v:IsA("Accessory") then
			SetLocalTransparency({Object = v.Handle, Transparency = nil, AutoUpdate = true})
		end
	end
	end
end)
end))
Tool81.Name = "Shield"
Tool81.Parent = mas
Tool81.GripPos = Vector3.new(-0.300000012, 0, -0.5)
Part82.Parent = Tool81
Part82.Material = Enum.Material.Metal
Part82.BrickColor = BrickColor.new("Black")
Part82.Rotation = Vector3.new(0, 0, -180)
Part82.FormFactor = Enum.FormFactor.Custom
Part82.Size = Vector3.new(0.5, 0.850000024, 0.200000003)
Part82.CFrame = CFrame.new(14.1200104, 4.75788403, 0.600117028, -1, 0, 0, 0, -1, 0, 0, 0, 1)
Part82.BottomSurface = Enum.SurfaceType.Smooth
Part82.TopSurface = Enum.SurfaceType.Smooth
Part82.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part82.Position = Vector3.new(14.1200104, 4.75788403, 0.600117028)
Part82.Orientation = Vector3.new(0, 0, 180)
Part82.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh83.Parent = Part82
BlockMesh83.Scale = Vector3.new(1, 1, 0.5)
BlockMesh83.Scale = Vector3.new(1, 1, 0.5)
Part84.Name = "GlassPart"
Part84.Parent = Tool81
Part84.Material = Enum.Material.Glass
Part84.BrickColor = BrickColor.new("Institutional white")
Part84.Transparency = 0.5
Part84.Rotation = Vector3.new(0, -28.3899994, 0)
Part84.FormFactor = Enum.FormFactor.Custom
Part84.Size = Vector3.new(0.5, 2.20000005, 0.200000003)
Part84.CFrame = CFrame.new(11.761734, 3.24806309, -0.0815239996, 0.879726708, 3.70690686e-05, -0.475472778, -2.21015525e-05, 1, 3.70690686e-05, 0.475472778, -2.21015525e-05, 0.879726708)
Part84.BottomSurface = Enum.SurfaceType.Smooth
Part84.TopSurface = Enum.SurfaceType.Smooth
Part84.Color = Color3.new(0.972549, 0.972549, 0.972549)
Part84.Position = Vector3.new(11.761734, 3.24806309, -0.0815239996)
Part84.Orientation = Vector3.new(0, -28.3899994, 0)
Part84.Color = Color3.new(0.972549, 0.972549, 0.972549)
BlockMesh85.Parent = Part84
BlockMesh85.Offset = Vector3.new(0, 0, 0.0494999997)
BlockMesh85.Scale = Vector3.new(1, 1, 0)
BlockMesh85.Scale = Vector3.new(1, 1, 0)
Script86.Name = "Weld"
Script86.Parent = Tool81
table.insert(cors,sandbox(Script86,function()
local all,last = {}
function scan(p)
	for _,v in pairs(p:GetChildren()) do
		if (v:IsA("BasePart")) then
			if (last) then
				local w = Instance.new("Weld")
				w.Part0,w.Part1 = last,v
				w.C0 = v.CFrame:toObjectSpace(last.CFrame):inverse()
				w.Parent = last
			end
			table.insert(all,v)
			last = v
		end
		scan(v)
	end
end
scan(script.Parent)
for _,v in pairs(all) do v.Anchored = false end 
end))
LocalScript87.Name = "Local Gui"
LocalScript87.Parent = Tool81
table.insert(cors,sandbox(LocalScript87,function()
-------------------------------------
ToolName="Riot Shield"
ClipSize=1
ReloadTime=0.1
Firerate=.1
MinSpread=0
MaxSpread=0
SpreadRate=0.0001
BaseDamage=75
automatic=false
burst=false
shot=false			
automacy = 0
run = 0
gaurd = 0
knife = 0
a = false
cam = nil
BarrlePos=Vector3.new(0,0,0)
Cursors={""}
ReloadCursor=""
-------------------------------------
equiped=false
sp=script.Parent
RayLength=2
enabled=true
reloading=false
down=false
r=game:service("RunService")
last=0
last2=0
last3=0
last4=0
last5=0
last6=0

Bullet=Instance.new("Part")
Bullet.Name="Bullet"
Bullet.BrickColor=BrickColor.new("New Yeller")
Bullet.Anchored=true
Bullet.CanCollide=false
Bullet.Locked=true
Bullet.Size=Vector3.new(1,1,1)
Bullet.Transparency=1
Bullet.formFactor=0
Bullet.TopSurface=0
Bullet.BottomSurface=0
mesh=Instance.new("SpecialMesh")
mesh.Parent=Bullet
mesh.MeshType="Brick"
mesh.Name="Mesh"
mesh.Scale=Vector3.new(.15,.15,1)

function check()
	sp.Name=ToolName
end

function computeDirection(vec)
	local lenSquared = vec.magnitude * vec.magnitude
	local invSqrt = 1 / math.sqrt(lenSquared)
	return Vector3.new(vec.x * invSqrt, vec.y * invSqrt, vec.z * invSqrt)
end

Tool = script.Parent;
local arms = nil
local torso = nil
local welds = {}

function Equip(mouse)
wait(0.01)
char = Tool.Parent

human = char:WaitForChild("Humanoid")
oldhealth = human.Health
healthloop = human.HealthChanged:connect(function(health)
	if health < oldhealth then
human.Health = oldhealth
end
end)

standloop = game:GetService("RunService").RenderStepped:connect(function()
	if human and human.Health > 0 then
		human.WalkSpeed = 12
		human.AutoRotate = true
		human.PlatformStand = false
		if char.Parent ~= workspace then
			char.Parent = workspace
		end
	end
end)

arms = {Tool.Parent:FindFirstChild("Left Arm"), Tool.Parent:FindFirstChild("Right Arm")}
torso = Tool.Parent:FindFirstChild("Torso")
if arms ~= nil and torso ~= nil then
local sh = {torso:FindFirstChild("Left Shoulder"), torso:FindFirstChild("Right Shoulder")}
if sh ~= nil then
local yes = true
if yes then
yes = false
sh[2].Part1 = nil
weld2 = Instance.new("Weld")
weld2.Part0 = torso
weld2.Parent = torso
weld2.Part1 = arms[2]
weld2.C1 = CFrame.new(-1, -0.5, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-90), 0)   --(forwards/backwards, 
welds[2] = weld2
end
else
print("sh")
end
else
print("arms")
end
end

function Unequip(mouse)
	if standloop then
		human.WalkSpeed = 16
		standloop:disconnect()
	end
	if healthloop then
		healthloop:disconnect()
	end
if arms ~= nil and torso ~= nil then
local sh = {torso:FindFirstChild("Left Shoulder"), torso:FindFirstChild("Right Shoulder")}
if sh ~= nil then
local yes = true
if yes then
yes = false
sh[2].Part1 = arms[2]
welds[2].Parent = nil
end
else
print("sh")
end
else
print("arms")
end
end
Tool.Equipped:connect(Equip)
Tool.Unequipped:connect(Unequip)


------------------------------------------------------------------------------------Raycasting functions
function cross(vector1, vector2)
	return Vector3.new(vector1.y * vector2.z - vector2.y * vector1.z, vector1.z * vector2.x - vector1.x * vector2.z, vector1.x * vector2.y - vector2.x * vector1.y)
end
function dot(vector1, vector2)
	return (vector1.x * vector2.x + vector1.y * vector2.y + vector1.z * vector2.z)
end
function getLineSphereCollide(linePoint1, lineVector, sphereCenter, radius)
	local a = lineVector.x * lineVector.x + lineVector.y * lineVector.y + lineVector.z * lineVector.z
	local b = lineVector.x * (linePoint1.x - sphereCenter.x) + lineVector.y * (linePoint1.y - sphereCenter.y) + lineVector.z * (linePoint1.z - sphereCenter.z)
	local c = (linePoint1.x - sphereCenter.x) * (linePoint1.x - sphereCenter.x) + (linePoint1.y - sphereCenter.y) * (linePoint1.y - sphereCenter.y) + (linePoint1.z - sphereCenter.z) * (linePoint1.z - sphereCenter.z) - radius * radius
	if (a > 0) and (b * b >= a * c) then
		local diff = math.sqrt(b * b - a * c)
		return ((-b - diff) / a), ((diff - b) / a)
	else
		return -1, -1
	end
end
--Returns hit, position, normal, time
function raycast(model, start, vector, brickFunction)
	local hit, normal, time = raycastRecursive(model, start, vector, brickFunction, vector.unit, dot(start, vector.unit))
	if (dot(normal, vector) > 0) then
		normal = -normal
	end
	return hit, start + time * vector, normal.unit, time
end
function raycastRecursive(model, start, vector, brickFunction, unitVec, startDist)
	if (model.className == "Part") or (model.className == "Seat") or (model.className =="SpawnLocation") then
		local range = model.Size.magnitude / 2
		local dist = dot(model.Position, unitVec) - startDist
		if (dist + range > 0) and (dist - range < vector.magnitude) and ((dist * unitVec + start - model.Position).magnitude < range) and brickFunction(model) then
			local halfSize = model.Size / 2
			if (model.Shape == Enum.PartType.Ball) then
				local time, timeMax = getLineSphereCollide(start, vector, model.Position, halfSize.x)
				if (time < 1) and (time >= 0) then
					return model, (time * vector + start - model.Position), time
				else
					return nil, Vector3.new(0, 0, 0), 1
				end
			elseif (model.Shape == Enum.PartType.Block) then
				local time = 1
				local cf = model.CFrame - model.Position
				local xvec = cf * Vector3.new(1, 0, 0)
				local yvec = cf * Vector3.new(0, 1, 0)
				local zvec = cf * Vector3.new(0, 0, 1)
				local xspd = -dot(xvec, vector)
				local yspd = -dot(yvec, vector)
				local zspd = -dot(zvec, vector)
				local xmin, xmax, ymin, ymax, zmin, zmax = -1
				local dotProd = dot(xvec, start - model.Position)
				if (xspd ~= 0) then
					xmin = (dotProd - halfSize.x) / xspd
					xmax = (dotProd + halfSize.x) / xspd
					if (xmax < xmin) then
						local swap = xmin
						xmin = xmax
						xmax = swap
					end
				else
					if (math.abs(dotProd) < halfSize.x) then
						xmax = 1
						xmin = 0
					else
						return nil, Vector3.new(0, 0, 0), 1
					end
				end
				local dotProd = dot(yvec, start - model.Position)
				if (yspd ~= 0) then
					ymin = (dotProd - halfSize.y) / yspd
					ymax = (dotProd + halfSize.y) / yspd
					if (ymax < ymin) then
						local swap = ymin
						ymin = ymax
						ymax = swap
					end
				else
					if (math.abs(dotProd) < halfSize.y) then
						ymax = 1
						ymin = 0
					else
						return nil, Vector3.new(0, 0, 0), 1
					end
				end
				local dotProd = dot(zvec, start - model.Position)
				if (zspd ~= 0) then
					zmin = (dotProd - halfSize.z) / zspd
					zmax = (dotProd + halfSize.z) / zspd
					if (zmax < zmin) then
						local swap = zmin
						zmin = zmax
						zmax = swap
					end
				else
					if (math.abs(dotProd) < halfSize.z) then
						zmax = 1
						zmin = 0
					else
						return nil, Vector3.new(0, 0, 0), 1
					end
				end
				if (xmin <= ymax) and (xmax >= ymin) and (xmin <= zmax) and (xmax >= zmin) and (zmin <= ymax) and (zmax >= ymin) then
					local normal = xvec
					local min = xmin
					if (ymin > min) then
						min = ymin
						normal = yvec
					end
					if (zmin > min) then
						min = zmin
						normal = zvec
					end
					if (min >= 0) and (min < 1) then
						time = min
					elseif (xmax > 0) and (ymax > 0) and (zmax > 0) and (min < 0) then
						time = 0
						normal = Vector3.new(0, 0, 0)
					end
					return model, normal, time
				else
					return nil, Vector3.new(0, 0, 0), 1
				end
			else	--	Cylinder
				local time = 1
				local cf = model.CFrame - model.Position
				local xvec = cf * Vector3.new(1, 0, 0)
				local xspd = -dot(xvec, vector)
				local xmin, xmax = -1
				local dotProd = dot(xvec, start - model.Position)
				if (xspd ~= 0) then
					xmin = (dotProd - halfSize.x) / xspd
					xmax = (dotProd + halfSize.x) / xspd
					if (xmax < xmin) then
						local swap = xmin
						xmin = xmax
						xmax = swap
					end
				else
					if (math.abs(dotProd) < halfSize.x) then
						xmax = 1
						xmin = 0
					else
						return nil, Vector3.new(0, 0, 0), 1
					end
				end

				local relVec = cf:pointToObjectSpace(vector) * Vector3.new(0, 1, 1)
				local relPos = model.CFrame:pointToObjectSpace(start) * Vector3.new(0, 1, 1)
				local rmin, rmax = getLineSphereCollide(relPos, relVec, Vector3.new(0, 0, 0), halfSize.y)
				if (xmin <= rmax) and (xmax >= rmin) and (rmax > 0) then
					local normal = xvec
					local min = xmin
					if (rmin > min) then
						min = rmin
						normal = cf * (relPos + relVec * min)
					end
					if (min >= 0) and (min < 1) then
						time = min
					elseif (xmax > 0) and (rmax > 0) and (min < 0) then
						time = 0
						normal = Vector3.new(0, 0, 0)
					end
					return model, normal, time
				else
					return nil, Vector3.new(0, 0, 0), 1
				end
				return nil, Vector3.new(0, 0, 0), 1
			end
		end
		return nil, Vector3.new(0, 0, 0), 1
	elseif (model.className=="Model") or (model.className=="Workspace") or (model.className=="Hat") or (model.className == "Tool") then
		local children=model:GetChildren()
		local time=1
		local normal=Vector3.new(0, 0, 0)
		local hit=nil
		for n = 1, #children do
			if children[n]~= nil then
				local newHit, newNormal, newTime = raycastRecursive(children[n], start, vector, brickFunction, unitVec, startDist)
				if (newTime < time) then
					time = newTime
					hit = newHit
					normal = newNormal
				end
			end
		end
		return hit, normal, time
	else
		return nil, Vector3.new(0, 0, 0), 1
	end
end
-------------------------------------------------------------------------------






function tagHumanoid(humanoid)
	local plr=game.Players:playerFromCharacter(sp.Parent)
	if plr~=nil then
		local tag=Instance.new("ObjectValue")
		tag.Value=plr
		tag.Name="creator"
		tag.Parent=humanoid
		delay(2,function()
			if tag~=nil then
				tag.Parent=nil
			end
		end)
	end
end


function reload(mouse)
	reloading=true
	while sp.Ammo.Value<ClipSize and sp.TotalAmmo.Value>0 and reloading and enabled do
		wait(ReloadTime/ClipSize)
		if reloading then
			check()
		else
			break
		end
	end
	check()
	mouse.Icon=Cursors[1]
	reloading=false
end

function onKeyDown(key,mouse)
	key=key:lower()
	if key=="r" and not reloading and (sp.Ammo.Value < ClipSize) and run == 0 then
		reload(mouse)
	end
	if (key=="f") then
	if run == 0 and not reloading then
	enabled = false
	sp.Parent.Humanoid.WalkSpeed = 18
	weld2.C1 = CFrame.new(-1, -0.4, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-70), 0)
	wait(0.05)
	weld2.C1 = CFrame.new(-1, -0.25, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-50), 0)
	wait(0.05)
	weld2.C1 = CFrame.new(-1, -0.1, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-30), 0)
	wait(0.05)
	weld2.C1 = CFrame.new(-1, 0, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-10), 0)   --(forwards/backwards, 
	run = 1
	elseif run == 1 then
	enabled = true
	sp.Parent.Humanoid.WalkSpeed = 16
	weld2.C1 = CFrame.new(-1, -0.1, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-30), 0)
	wait(0.05)
	weld2.C1 = CFrame.new(-1, -0.25, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-50), 0)
	wait(0.05)
	weld2.C1 = CFrame.new(-1, -0.4, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-70), 0)
	wait(0.05)
	weld2.C1 = CFrame.new(-1, -0.5, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-90), 0)   --(forwards/backwards, 
	run = 0
	end
	end
	end

function movecframe(p,pos)
	p.Parent=game.Lighting
	p.Position=pos
	p.Parent=game.Workspace
end


function fire(aim)
	weld2.C1 = CFrame.new(-1, -0.5, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-80), -0.02)   --(forwards/backwards,
	wait(0.05)
	weld2.C1 = CFrame.new(-1.3, -0.5, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-75), -0.04)   --(forwards/backwards, 
	wait(0.05)
	weld2.C1 = CFrame.new(-1.6, -0.5, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-70), -0.06)   --(forwards/backwards, 
	wait(0.05)
	sp.Handle.Fire:Play()
	weld2.C1 = CFrame.new(-1.9, -0.5, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-65), -0.08)   --(forwards/backwards, 
	t=r.Stepped:wait()
	last6=last5
	last5=last4
	last4=last3
	last3=last2
	last2=last
	last=t
	local bullet=Bullet:clone()
	local bt2=game.Lighting.BulletTexture:clone()
	bt2.BrickColor=BrickColor.new("Bright red")
	bt2.Mesh.Scale=Vector3.new(.5,.5,2)
	local totalDist=0
	Lengthdist=-RayLength/.5
	local startpoint=sp.Barrel.CFrame*BarrlePos
	local dir=(aim)-startpoint
	dir=computeDirection(dir)
	local cfrm=CFrame.new(startpoint, dir+startpoint)
	local hit,pos,normal,time=raycast(game.Workspace, startpoint, cfrm*Vector3.new(0,0,Lengthdist)-startpoint, function(brick)
		if brick.Name=="Glass" then
			return true
		elseif brick.Name=="Bullet" or brick.Name=="BulletTexture" then
			return false
		elseif brick.ClassName=="Hat" then
			return false
		elseif brick.Parent.ClassName=="Hat" then
			return false
		elseif brick:IsDescendantOf(sp.Parent) then
			return false
		elseif brick.Name=="Handle" then
			if brick.Parent:IsDescendantOf(sp.Parent) then
				return false
			else
				return true
			end
		end
		return true
	end)
	bullet.Parent=game.Workspace
	bt2.Parent=game.Workspace
	if hit~=nil then
		local humanoid=hit.Parent:FindFirstChild("Humanoid")
		if humanoid~=nil then
			local damage=math.random(BaseDamage-(BaseDamage*.25),BaseDamage+(BaseDamage*.25))
			if hit.Name=="Head" then
				damage=damage*1.25
			elseif hit.Name=="Torso" then
			else
				damage=damage*.75
			end
			if humanoid.Health>0 then
				local eplr=game.Players:playerFromCharacter(humanoid.Parent)
				local plr=game.Players:playerFromCharacter(sp.Parent)
				if eplr~=nil and plr~=nil then
				--	if eplr.TeamColor~=plr.TeamColor or eplr.Neutral or plr.Neutral then
						tagHumanoid(humanoid)
						humanoid:TakeDamage(damage)
						sp.Neutral.Texture = "http://www.roblox.com/asset/?id=53455287"
						sp.Friendly.Texture = "http://www.roblox.com/asset/?id=53455282"
						sp.Enemy.Texture = "http://www.roblox.com/asset/?id=53455310"
						wait(0.01)
						sp.Neutral.Texture = "http://www.roblox.com/asset/?id=51962380"
						sp.Friendly.Texture = "http://www.roblox.com/asset/?id=51962541"
						sp.Enemy.Texture = "http://www.roblox.com/asset/?id=51962534"
						
				--	end
				else
					tagHumanoid(humanoid)
					humanoid:TakeDamage(damage)
					sp.Neutral.Texture = "http://www.roblox.com/asset/?id=53455287"
					sp.Friendly.Texture = "http://www.roblox.com/asset/?id=53455282"
					sp.Enemy.Texture = "http://www.roblox.com/asset/?id=53455310"
					wait(0.01)
					sp.Neutral.Texture = "http://www.roblox.com/asset/?id=51962380"
					sp.Friendly.Texture = "http://www.roblox.com/asset/?id=51962541"
					sp.Enemy.Texture = "http://www.roblox.com/asset/?id=51962534"
				end
			end
		end

		if (hit.Name == "Ice") or (hit.Name == "Glass") then
			rand = math.random(1,5)
			if rand == 3 then
				workspace.GlassSound:play()
				hit:breakJoints()
			end
		end
		if (hit.Parent:findFirstChild("Hit")) then
			hit.Parent.Health.Value = hit.Parent.Health.Value - BaseDamage/20
		end
		distance=(startpoint-pos).magnitude
		bullet.CFrame=cfrm*CFrame.new(0,0,-distance/2)
		bullet.Mesh.Scale=Vector3.new(.15,.15,distance)
	else
		bullet.CFrame=cfrm*CFrame.new(0,0,-RayLength/2) 
		bullet.Mesh.Scale=Vector3.new(.15,.15,RayLength)
	end
	if pos~=nil then
		bt2.CFrame=bullet.CFrame
		movecframe(bt2,pos)
	end
	local deb=game:FindFirstChild("Debris")
	if deb==nil then
		local debris=Instance.new("Debris")
		debris.Parent=game
	end
	check()
	game.Debris:AddItem(bullet,.05)
	game.Debris:AddItem(bt2,.5)
end

function onButton1Up(mouse)
	down=false
end

function onButton1Down(mouse)
	h=sp.Parent:FindFirstChild("Humanoid")
	if not enabled or reloading or down or h==nil then
		return
	end
	if sp.Ammo.Value>0 and h.Health>0 then
		--[[if sp.Ammo.Value<=0 then
			if not reloading then
				reload(mouse)
			end
			return
		end]]
		down=true
		enabled=false
		while down do
			if sp.Ammo.Value<=0 then
				break
			end
			if burst then
				local startpoint=sp.Barrel.CFrame*BarrlePos
				local mag=(mouse.Hit.p-startpoint).magnitude
				local rndm=Vector3.new(math.random(-(script.Parent.Spread.Value/10)*mag,(script.Parent.Spread.Value/10)*mag),math.random(-(script.Parent.Spread.Value/10)*mag,(script.Parent.Spread.Value/10)*mag),math.random(-(script.Parent.Spread.Value/10)*mag,(script.Parent.Spread.Value/10)*mag))
				fire(mouse.Hit.p+rndm)
				sp.Ammo.Value=sp.Ammo.Value-1
				if sp.Ammo.Value<=0 then
					break
				end
				wait(.05)
				local startpoint=sp.Barrel.CFrame*BarrlePos
				local mag2=((mouse.Hit.p+rndm)-startpoint).magnitude
				local rndm2=Vector3.new(math.random(-(.1/10)*mag2,(.1/10)*mag2),math.random(-(.1/10)*mag2,(.1/10)*mag2),math.random(-(.1/10)*mag2,(.1/10)*mag2))
				fire(mouse.Hit.p+rndm+rndm2)
				sp.Ammo.Value=sp.Ammo.Value-1
				if sp.Ammo.Value<=0 then
					break
				end
				wait(.05)
				fire(mouse.Hit.p+rndm+rndm2+rndm2)
				sp.Ammo.Value=sp.Ammo.Value-1
			elseif shot then
				sp.Ammo.Value=sp.Ammo.Value-1
				local startpoint=sp.Barrel.CFrame*BarrlePos
				local mag=(mouse.Hit.p-startpoint).magnitude
				local rndm=Vector3.new(math.random(-(script.Parent.Spread.Value/10)*mag,(script.Parent.Spread.Value/10)*mag),math.random(-(script.Parent.Spread.Value/10)*mag,(script.Parent.Spread.Value/10)*mag),math.random(-(script.Parent.Spread.Value/10)*mag,(script.Parent.Spread.Value/10)*mag))
				fire(mouse.Hit.p+rndm)
				local mag2=((mouse.Hit.p+rndm)-startpoint).magnitude
				local rndm2=Vector3.new(math.random(-(.2/10)*mag2,(.2/10)*mag2),math.random(-(.2/10)*mag2,(.2/10)*mag2),math.random(-(.2/10)*mag2,(.2/10)*mag2))
				fire(mouse.Hit.p+rndm+rndm2)
				local rndm3=Vector3.new(math.random(-(.2/10)*mag2,(.2/10)*mag2),math.random(-(.2/10)*mag2,(.2/10)*mag2),math.random(-(.2/10)*mag2,(.2/10)*mag2))
				fire(mouse.Hit.p+rndm+rndm3)
				local rndm4=Vector3.new(math.random(-(.2/10)*mag2,(.2/10)*mag2),math.random(-(.2/10)*mag2,(.2/10)*mag2),math.random(-(.2/10)*mag2,(.2/10)*mag2))
				fire(mouse.Hit.p+rndm+rndm4)
			else
				local startpoint=sp.Barrel.CFrame*BarrlePos
				local mag=(mouse.Hit.p-startpoint).magnitude
				local rndm=Vector3.new(math.random(-(script.Parent.Spread.Value/10)*mag,(script.Parent.Spread.Value/10)*mag),math.random(-(script.Parent.Spread.Value/10)*mag,(script.Parent.Spread.Value/10)*mag),math.random(-(script.Parent.Spread.Value/10)*mag,(script.Parent.Spread.Value/10)*mag))
				fire(mouse.Hit.p+rndm)
				weld2.C1 = CFrame.new(-1.6, -0.5, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-70), -0.06)   --(forwards/backwards, 
				wait(0.05)
				weld2.C1 = CFrame.new(-1.3, -0.5, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-75), -0.04)   --(forwards/backwards, 
				wait(0.05)
				weld2.C1 = CFrame.new(-1, -0.5, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-90), 0)   --(forwards/backwards, 
			end
			wait(Firerate)
			if not automatic then
				break
			end
		end	
		enabled=true
	else
		sp.Handle.Trigger:Play()
		sp.GripForward = Vector3.new(-0.243, -0.1, -0.97)
		wait(0.1)
		sp.GripForward = Vector3.new(-0.243, 0, -0.97)
	end
end

function onEquippedLocal(mouse)
	if mouse==nil then
		print("Mouse not found")
		return 
	end
	mouse.Icon=Cursors[1]
	mouse.KeyDown:connect(function(key) onKeyDown(key,mouse) end)
	mouse.Button1Down:connect(function() onButton1Down(mouse) end)
	mouse.Button1Up:connect(function() onButton1Up(mouse) end)
	check()
	equiped=true
	if #Cursors>1 then
		while equiped do
			t=r.Stepped:wait()
			local action=sp.Parent:FindFirstChild("Pose")
			if action~=nil then
				if sp.Parent.Pose.Value=="Standing" then
					Spread=MinSpread
				else
					Spread=MinSpread+((4/10)*(MaxSpread-MinSpread))
				end
			else
				Spread=MinSpread
			end
			if t-last<SpreadRate then
				Spread=Spread+.1*(MaxSpread-MinSpread)
			end
			if t-last2<SpreadRate then
				Spread=Spread+.1*(MaxSpread-MinSpread)
			end
			if t-last3<SpreadRate then
				Spread=Spread+.1*(MaxSpread-MinSpread)
			end
			if t-last4<SpreadRate then
				Spread=Spread+.1*(MaxSpread-MinSpread)
			end
			if t-last5<SpreadRate then
				Spread=Spread+.1*(MaxSpread-MinSpread)
			end
			if t-last6<SpreadRate then
				Spread=Spread+.1*(MaxSpread-MinSpread)
			end
			if not reloading then
				local percent=(Spread-MinSpread)/(MaxSpread-MinSpread)
				for i=0,#Cursors-1 do
					if percent>(i/(#Cursors-1))-((1/(#Cursors-1))/2) and percent<(i/(#Cursors-1))+((1/(#Cursors-1))/2) then
						mouse.Icon=Cursors[i+1]
					end
				end
			end
			wait(Firerate*.9)
		end
	end
end
function onUnequippedLocal(mouse)
	equiped=false
	reloading=false
	sp.Neutral.Texture = "http://www.roblox.com/asset/?id=51962380"
	sp.Friendly.Texture = "http://www.roblox.com/asset/?id=51962541"
	sp.Enemy.Texture = "http://www.roblox.com/asset/?id=51962534"
	sp.Spread = 0
	sp.Parent.Humanoid.WalkSpeed = 16
	ADS = 0
	run = 0
end
sp.Equipped:connect(onEquippedLocal)
sp.Unequipped:connect(onUnequippedLocal)
check()
end))
Part88.Parent = Tool81
Part88.Material = Enum.Material.Metal
Part88.BrickColor = BrickColor.new("Black")
Part88.Rotation = Vector3.new(-90, 0, 71.0699997)
Part88.FormFactor = Enum.FormFactor.Custom
Part88.Size = Vector3.new(0.25, 0.200000003, 0.25)
Part88.CFrame = CFrame.new(13.3802023, 4.75810814, 0.172626004, 0.324368834, -0.94593066, -2.31046888e-05, 1.00436482e-05, -2.09812824e-05, 1, -0.94593066, -0.324368864, 2.69492193e-06)
Part88.BottomSurface = Enum.SurfaceType.Smooth
Part88.TopSurface = Enum.SurfaceType.Smooth
Part88.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part88.Position = Vector3.new(13.3802023, 4.75810814, 0.172626004)
Part88.Orientation = Vector3.new(-90, 71.0699997, 0)
Part88.Color = Color3.new(0.105882, 0.164706, 0.207843)
CylinderMesh89.Parent = Part88
CylinderMesh89.Scale = Vector3.new(3, 0.75, 3)
CylinderMesh89.Scale = Vector3.new(3, 0.75, 3)
Part90.Name = "GlassPart"
Part90.Parent = Tool81
Part90.Material = Enum.Material.Glass
Part90.BrickColor = BrickColor.new("Institutional white")
Part90.Transparency = 0.5
Part90.Rotation = Vector3.new(0, -37.8499985, 0)
Part90.FormFactor = Enum.FormFactor.Custom
Part90.Size = Vector3.new(0.400000006, 2, 0.200000003)
Part90.CFrame = CFrame.new(11.3907623, 3.37725711, -0.318569005, 0.789619446, 3.87650289e-05, -0.61358273, -1.89694674e-05, 1, 3.87650289e-05, 0.61358273, -1.89694674e-05, 0.789619446)
Part90.BottomSurface = Enum.SurfaceType.Smooth
Part90.TopSurface = Enum.SurfaceType.Smooth
Part90.Color = Color3.new(0.972549, 0.972549, 0.972549)
Part90.Position = Vector3.new(11.3907623, 3.37725711, -0.318569005)
Part90.Orientation = Vector3.new(0, -37.8499985, 0)
Part90.Color = Color3.new(0.972549, 0.972549, 0.972549)
BlockMesh91.Parent = Part90
BlockMesh91.Offset = Vector3.new(0, 0, 0.0494999997)
BlockMesh91.Scale = Vector3.new(1, 1, 0)
BlockMesh91.Scale = Vector3.new(1, 1, 0)
Part92.Name = "GlassPart"
Part92.Parent = Tool81
Part92.Material = Enum.Material.Glass
Part92.BrickColor = BrickColor.new("Institutional white")
Part92.Transparency = 0.5
Part92.Rotation = Vector3.new(-180, -90, 0)
Part92.FormFactor = Enum.FormFactor.Custom
Part92.Size = Vector3.new(0.200000003, 0.200000003, 0.200000003)
Part92.CFrame = CFrame.new(14.1699362, 2.27702403, 0.649676979, -0.000118972122, -4.31590597e-05, -1, 2.79581602e-09, -1, 4.31590597e-05, -0.99999994, 2.33890907e-09, 0.00011897213)
Part92.BottomSurface = Enum.SurfaceType.Smooth
Part92.TopSurface = Enum.SurfaceType.Smooth
Part92.Color = Color3.new(0.972549, 0.972549, 0.972549)
Part92.Position = Vector3.new(14.1699362, 2.27702403, 0.649676979)
Part92.Orientation = Vector3.new(0, -89.9899979, 180)
Part92.Color = Color3.new(0.972549, 0.972549, 0.972549)
SpecialMesh93.Parent = Part92
SpecialMesh93.Scale = Vector3.new(0, 1, 1)
SpecialMesh93.MeshType = Enum.MeshType.Wedge
SpecialMesh93.Scale = Vector3.new(0, 1, 1)
Part94.Parent = Tool81
Part94.Material = Enum.Material.Metal
Part94.BrickColor = BrickColor.new("Black")
Part94.Rotation = Vector3.new(0, -28.3899994, 0)
Part94.FormFactor = Enum.FormFactor.Custom
Part94.Size = Vector3.new(0.5, 0.200000003, 0.200000003)
Part94.CFrame = CFrame.new(11.9849997, 6.51584816, 0.0920599997, 0.879726708, 3.70690686e-05, -0.475472778, -2.21015525e-05, 1, 3.70690686e-05, 0.475472778, -2.21015525e-05, 0.879726708)
Part94.BottomSurface = Enum.SurfaceType.Smooth
Part94.TopSurface = Enum.SurfaceType.Smooth
Part94.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part94.Position = Vector3.new(11.9849997, 6.51584816, 0.0920599997)
Part94.Orientation = Vector3.new(0, -28.3899994, 0)
Part94.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh95.Parent = Part94
BlockMesh95.Scale = Vector3.new(1, 0.5, 0.5)
BlockMesh95.Scale = Vector3.new(1, 0.5, 0.5)
Part96.Parent = Tool81
Part96.Material = Enum.Material.Metal
Part96.BrickColor = BrickColor.new("Black")
Part96.Rotation = Vector3.new(0, -37.8400002, 135)
Part96.FormFactor = Enum.FormFactor.Custom
Part96.Size = Vector3.new(0.200000003, 0.400000006, 0.200000003)
Part96.CFrame = CFrame.new(11.2934103, 6.38909388, -0.394008994, -0.558394432, -0.558437765, -0.613467932, 0.707113028, -0.707100511, 3.85237654e-05, -0.433805048, -0.433769733, 0.789719641)
Part96.BottomSurface = Enum.SurfaceType.Smooth
Part96.TopSurface = Enum.SurfaceType.Smooth
Part96.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part96.Position = Vector3.new(11.2934103, 6.38909388, -0.394008994)
Part96.Orientation = Vector3.new(0, -37.8400002, 135)
Part96.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh97.Parent = Part96
BlockMesh97.Scale = Vector3.new(0.5, 1, 0.5)
BlockMesh97.Scale = Vector3.new(0.5, 1, 0.5)
Part98.Parent = Tool81
Part98.Material = Enum.Material.Metal
Part98.BrickColor = BrickColor.new("Black")
Part98.Rotation = Vector3.new(0, -37.8499985, 0)
Part98.FormFactor = Enum.FormFactor.Custom
Part98.Size = Vector3.new(0.5, 0.200000003, 0.200000003)
Part98.CFrame = CFrame.new(11.5745382, 6.51584816, -0.175518006, 0.789619446, 3.87650289e-05, -0.61358273, -1.89694674e-05, 1, 3.87650289e-05, 0.61358273, -1.89694674e-05, 0.789619446)
Part98.BottomSurface = Enum.SurfaceType.Smooth
Part98.TopSurface = Enum.SurfaceType.Smooth
Part98.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part98.Position = Vector3.new(11.5745382, 6.51584816, -0.175518006)
Part98.Orientation = Vector3.new(0, -37.8499985, 0)
Part98.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh99.Parent = Part98
BlockMesh99.Scale = Vector3.new(1, 0.5, 0.5)
BlockMesh99.Scale = Vector3.new(1, 0.5, 0.5)
Part100.Name = "GlassPart"
Part100.Parent = Tool81
Part100.Material = Enum.Material.Glass
Part100.BrickColor = BrickColor.new("Institutional white")
Part100.Transparency = 0.5
Part100.Rotation = Vector3.new(0, -37.8499985, 0)
Part100.FormFactor = Enum.FormFactor.Custom
Part100.Size = Vector3.new(0.200000003, 0.223500013, 0.200000003)
Part100.CFrame = CFrame.new(11.4696798, 6.3552742, -0.257061005, 0.789619446, 3.87650289e-05, -0.61358273, -1.89694674e-05, 1, 3.87650289e-05, 0.61358273, -1.89694674e-05, 0.789619446)
Part100.BottomSurface = Enum.SurfaceType.Smooth
Part100.TopSurface = Enum.SurfaceType.Smooth
Part100.Color = Color3.new(0.972549, 0.972549, 0.972549)
Part100.Position = Vector3.new(11.4696798, 6.3552742, -0.257061005)
Part100.Orientation = Vector3.new(0, -37.8499985, 0)
Part100.Color = Color3.new(0.972549, 0.972549, 0.972549)
BlockMesh101.Parent = Part100
BlockMesh101.Offset = Vector3.new(0, 0, 0.0494999997)
BlockMesh101.Scale = Vector3.new(1, 1, 0)
BlockMesh101.Scale = Vector3.new(1, 1, 0)
Part102.Name = "GlassPart"
Part102.Parent = Tool81
Part102.Material = Enum.Material.Glass
Part102.BrickColor = BrickColor.new("Institutional white")
Part102.Transparency = 0.5
Part102.Rotation = Vector3.new(90, 0.00999999978, 127.839996)
Part102.FormFactor = Enum.FormFactor.Custom
Part102.Size = Vector3.new(0.200000003, 0.200000003, 0.200000003)
Part102.CFrame = CFrame.new(11.2810202, 6.34355021, -0.340312988, -0.613507092, -0.789689183, 0.000104060433, -8.34418415e-07, -0.000131125649, -1, 0.789689183, -0.613507152, 7.97875909e-05)
Part102.BottomSurface = Enum.SurfaceType.Smooth
Part102.TopSurface = Enum.SurfaceType.Smooth
Part102.Color = Color3.new(0.972549, 0.972549, 0.972549)
Part102.Position = Vector3.new(11.2810202, 6.34355021, -0.340312988)
Part102.Orientation = Vector3.new(90, -127.839996, 0)
Part102.Color = Color3.new(0.972549, 0.972549, 0.972549)
SpecialMesh103.Parent = Part102
SpecialMesh103.Scale = Vector3.new(0, 1, 1)
SpecialMesh103.MeshType = Enum.MeshType.Wedge
SpecialMesh103.Scale = Vector3.new(0, 1, 1)
Part104.Name = "GlassPart"
Part104.Parent = Tool81
Part104.Material = Enum.Material.Glass
Part104.BrickColor = BrickColor.new("Institutional white")
Part104.Transparency = 0.5
Part104.Rotation = Vector3.new(0, -37.8499985, 0)
Part104.FormFactor = Enum.FormFactor.Custom
Part104.Size = Vector3.new(0.400000006, 1.06050003, 0.200000003)
Part104.CFrame = CFrame.new(11.3907003, 5.71331215, -0.318569005, 0.789619446, 3.87650289e-05, -0.61358273, -1.89694674e-05, 1, 3.87650289e-05, 0.61358273, -1.89694674e-05, 0.789619446)
Part104.BottomSurface = Enum.SurfaceType.Smooth
Part104.TopSurface = Enum.SurfaceType.Smooth
Part104.Color = Color3.new(0.972549, 0.972549, 0.972549)
Part104.Position = Vector3.new(11.3907003, 5.71331215, -0.318569005)
Part104.Orientation = Vector3.new(0, -37.8499985, 0)
Part104.Color = Color3.new(0.972549, 0.972549, 0.972549)
BlockMesh105.Parent = Part104
BlockMesh105.Offset = Vector3.new(0, 0, 0.0494999997)
BlockMesh105.Scale = Vector3.new(1, 1, 0)
BlockMesh105.Scale = Vector3.new(1, 1, 0)
Part106.Name = "GlassPart"
Part106.Parent = Tool81
Part106.Material = Enum.Material.Glass
Part106.BrickColor = BrickColor.new("Institutional white")
Part106.Transparency = 0.5
Part106.Rotation = Vector3.new(0, -28.3899994, 0)
Part106.FormFactor = Enum.FormFactor.Custom
Part106.Size = Vector3.new(0.5, 1.29999995, 0.200000003)
Part106.CFrame = CFrame.new(11.761672, 5.8180418, -0.0815239996, 0.879726708, 3.70690686e-05, -0.475472778, -2.21015525e-05, 1, 3.70690686e-05, 0.475472778, -2.21015525e-05, 0.879726708)
Part106.BottomSurface = Enum.SurfaceType.Smooth
Part106.TopSurface = Enum.SurfaceType.Smooth
Part106.Color = Color3.new(0.972549, 0.972549, 0.972549)
Part106.Position = Vector3.new(11.761672, 5.8180418, -0.0815239996)
Part106.Orientation = Vector3.new(0, -28.3899994, 0)
Part106.Color = Color3.new(0.972549, 0.972549, 0.972549)
BlockMesh107.Parent = Part106
BlockMesh107.Offset = Vector3.new(0, 0, 0.0494999997)
BlockMesh107.Scale = Vector3.new(1, 1, 0)
BlockMesh107.Scale = Vector3.new(1, 1, 0)
Part108.Parent = Tool81
Part108.Material = Enum.Material.Metal
Part108.BrickColor = BrickColor.new("Black")
Part108.Rotation = Vector3.new(0, -9.46000004, 0)
Part108.FormFactor = Enum.FormFactor.Custom
Part108.Size = Vector3.new(0.5, 0.200000003, 0.200000003)
Part108.CFrame = CFrame.new(13.3487082, 6.51590919, 0.559585989, 0.986395717, 3.29302056e-05, -0.164386213, -2.78963325e-05, 1, 3.29302056e-05, 0.164386213, -2.78963325e-05, 0.986395717)
Part108.BottomSurface = Enum.SurfaceType.Smooth
Part108.TopSurface = Enum.SurfaceType.Smooth
Part108.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part108.Position = Vector3.new(13.3487082, 6.51590919, 0.559585989)
Part108.Orientation = Vector3.new(0, -9.46000004, 0)
Part108.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh109.Parent = Part108
BlockMesh109.Scale = Vector3.new(1, 0.5, 0.5)
BlockMesh109.Scale = Vector3.new(1, 0.5, 0.5)
Part110.Parent = Tool81
Part110.Material = Enum.Material.Metal
Part110.BrickColor = BrickColor.new("Black")
Part110.FormFactor = Enum.FormFactor.Custom
Part110.Size = Vector3.new(0.5, 0.200000003, 0.200000003)
Part110.CFrame = CFrame.new(13.8371124, 6.51590919, 0.600117028, 1, 3.05171125e-05, -3.05161811e-05, -3.05161811e-05, 1, 3.05171125e-05, 3.05171125e-05, -3.05161811e-05, 1)
Part110.BottomSurface = Enum.SurfaceType.Smooth
Part110.TopSurface = Enum.SurfaceType.Smooth
Part110.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part110.Position = Vector3.new(13.8371124, 6.51590919, 0.600117028)
Part110.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh111.Parent = Part110
BlockMesh111.Scale = Vector3.new(1, 0.5, 0.5)
BlockMesh111.Scale = Vector3.new(1, 0.5, 0.5)
Part112.Parent = Tool81
Part112.Material = Enum.Material.Metal
Part112.BrickColor = BrickColor.new("Black")
Part112.Rotation = Vector3.new(0, -37.8499985, 0)
Part112.FormFactor = Enum.FormFactor.Custom
Part112.Size = Vector3.new(0.200000003, 1.10000002, 0.200000003)
Part112.CFrame = CFrame.new(11.1933136, 5.73304176, -0.471935004, 0.789619446, 3.87650289e-05, -0.61358273, -1.89694674e-05, 1, 3.87650289e-05, 0.61358273, -1.89694674e-05, 0.789619446)
Part112.BottomSurface = Enum.SurfaceType.Smooth
Part112.TopSurface = Enum.SurfaceType.Smooth
Part112.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part112.Position = Vector3.new(11.1933136, 5.73304176, -0.471935004)
Part112.Orientation = Vector3.new(0, -37.8499985, 0)
Part112.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh113.Parent = Part112
BlockMesh113.Scale = Vector3.new(0.5, 1, 0.5)
BlockMesh113.Scale = Vector3.new(0.5, 1, 0.5)
Part114.Parent = Tool81
Part114.Material = Enum.Material.Metal
Part114.BrickColor = BrickColor.new("Black")
Part114.Rotation = Vector3.new(0, -18.9300003, 0)
Part114.FormFactor = Enum.FormFactor.Custom
Part114.Size = Vector3.new(0.966000438, 0.200000003, 0.200000003)
Part114.CFrame = CFrame.new(12.6531525, 6.51590919, 0.364033014, 0.945934772, 3.51197777e-05, -0.324356169, -2.50846242e-05, 1, 3.51197777e-05, 0.324356169, -2.50846242e-05, 0.945934772)
Part114.BottomSurface = Enum.SurfaceType.Smooth
Part114.TopSurface = Enum.SurfaceType.Smooth
Part114.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part114.Position = Vector3.new(12.6531525, 6.51590919, 0.364033014)
Part114.Orientation = Vector3.new(0, -18.9300003, 0)
Part114.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh115.Parent = Part114
BlockMesh115.Scale = Vector3.new(1, 0.5, 0.5)
BlockMesh115.Scale = Vector3.new(1, 0.5, 0.5)
Part116.Name = "GlassPart"
Part116.Parent = Tool81
Part116.Material = Enum.Material.Glass
Part116.BrickColor = BrickColor.new("Institutional white")
Part116.Transparency = 0.5
Part116.Rotation = Vector3.new(0, -90, 0)
Part116.FormFactor = Enum.FormFactor.Custom
Part116.Size = Vector3.new(0.200000003, 0.200000003, 0.200000003)
Part116.CFrame = CFrame.new(14.1699362, 6.34361982, 0.64991802, -3.26636837e-05, 4.31581502e-05, -1, 9.29513244e-10, 1, 4.31581502e-05, 0.99999994, 4.80190998e-10, -3.26636873e-05)
Part116.BottomSurface = Enum.SurfaceType.Smooth
Part116.TopSurface = Enum.SurfaceType.Smooth
Part116.Color = Color3.new(0.972549, 0.972549, 0.972549)
Part116.Position = Vector3.new(14.1699362, 6.34361982, 0.64991802)
Part116.Orientation = Vector3.new(0, -90, 0)
Part116.Color = Color3.new(0.972549, 0.972549, 0.972549)
SpecialMesh117.Parent = Part116
SpecialMesh117.Scale = Vector3.new(0, 1, 1)
SpecialMesh117.MeshType = Enum.MeshType.Wedge
SpecialMesh117.Scale = Vector3.new(0, 1, 1)
Part118.Name = "GlassPart"
Part118.Parent = Tool81
Part118.Material = Enum.Material.Glass
Part118.BrickColor = BrickColor.new("Institutional white")
Part118.Transparency = 0.5
Part118.Rotation = Vector3.new(0, -18.9200001, 0)
Part118.FormFactor = Enum.FormFactor.Custom
Part118.Size = Vector3.new(1.5, 1.29999995, 0.200000003)
Part118.CFrame = CFrame.new(12.6835442, 5.81983423, 0.277363002, 0.945954859, -3.51188464e-05, -0.324295938, 2.50855555e-05, 1, -3.51188464e-05, 0.324295938, 2.50855555e-05, 0.945954859)
Part118.BottomSurface = Enum.SurfaceType.Smooth
Part118.TopSurface = Enum.SurfaceType.Smooth
Part118.Color = Color3.new(0.972549, 0.972549, 0.972549)
Part118.Position = Vector3.new(12.6835442, 5.81983423, 0.277363002)
Part118.Orientation = Vector3.new(0, -18.9200001, 0)
Part118.Color = Color3.new(0.972549, 0.972549, 0.972549)
BlockMesh119.Parent = Part118
BlockMesh119.Offset = Vector3.new(0, 0, 0.0494999997)
BlockMesh119.Scale = Vector3.new(1, 1, 0)
BlockMesh119.Scale = Vector3.new(1, 1, 0)
Part120.Parent = Tool81
Part120.Material = Enum.Material.Metal
Part120.BrickColor = BrickColor.new("Black")
Part120.Rotation = Vector3.new(0, 0, -135)
Part120.FormFactor = Enum.FormFactor.Custom
Part120.Size = Vector3.new(0.200000003, 0.400000006, 0.200000003)
Part120.CFrame = CFrame.new(14.1931915, 6.38920021, 0.600117028, -0.707149565, 0.707063973, 7.29076783e-05, -0.707063973, -0.707149565, 6.32290612e-05, 9.62636259e-05, -6.83798817e-06, 1)
Part120.BottomSurface = Enum.SurfaceType.Smooth
Part120.TopSurface = Enum.SurfaceType.Smooth
Part120.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part120.Position = Vector3.new(14.1931915, 6.38920021, 0.600117028)
Part120.Orientation = Vector3.new(0, 0, -135)
Part120.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh121.Parent = Part120
BlockMesh121.Scale = Vector3.new(0.5, 1, 0.5)
BlockMesh121.Scale = Vector3.new(0.5, 1, 0.5)
Part122.Name = "GlassPart"
Part122.Parent = Tool81
Part122.Material = Enum.Material.Glass
Part122.BrickColor = BrickColor.new("Institutional white")
Part122.Transparency = 0.5
Part122.FormFactor = Enum.FormFactor.Custom
Part122.Size = Vector3.new(0.200000003, 0.223500013, 0.200000003)
Part122.CFrame = CFrame.new(13.969986, 6.35533524, 0.600117028, 1, 3.05171125e-05, -3.05161811e-05, -3.05161811e-05, 1, 3.05171125e-05, 3.05171125e-05, -3.05161811e-05, 1)
Part122.BottomSurface = Enum.SurfaceType.Smooth
Part122.TopSurface = Enum.SurfaceType.Smooth
Part122.Color = Color3.new(0.972549, 0.972549, 0.972549)
Part122.Position = Vector3.new(13.969986, 6.35533524, 0.600117028)
Part122.Color = Color3.new(0.972549, 0.972549, 0.972549)
BlockMesh123.Parent = Part122
BlockMesh123.Offset = Vector3.new(0, 0, 0.0494999997)
BlockMesh123.Scale = Vector3.new(1, 1, 0)
BlockMesh123.Scale = Vector3.new(1, 1, 0)
Part124.Name = "GlassPart"
Part124.Parent = Tool81
Part124.Material = Enum.Material.Glass
Part124.BrickColor = BrickColor.new("Institutional white")
Part124.Transparency = 0.5
Part124.FormFactor = Enum.FormFactor.Custom
Part124.Size = Vector3.new(0.400000006, 1.06050014, 0.200000003)
Part124.CFrame = CFrame.new(14.0699615, 5.71336222, 0.600117028, 1, 3.05171125e-05, -3.05161811e-05, -3.05161811e-05, 1, 3.05171125e-05, 3.05171125e-05, -3.05161811e-05, 1)
Part124.BottomSurface = Enum.SurfaceType.Smooth
Part124.TopSurface = Enum.SurfaceType.Smooth
Part124.Color = Color3.new(0.972549, 0.972549, 0.972549)
Part124.Position = Vector3.new(14.0699615, 5.71336222, 0.600117028)
Part124.Color = Color3.new(0.972549, 0.972549, 0.972549)
BlockMesh125.Parent = Part124
BlockMesh125.Offset = Vector3.new(0, 0, 0.0494999997)
BlockMesh125.Scale = Vector3.new(1, 1, 0)
BlockMesh125.Scale = Vector3.new(1, 1, 0)
Part126.Name = "Barrel"
Part126.Parent = Tool81
Part126.Material = Enum.Material.Metal
Part126.BrickColor = BrickColor.new("Black")
Part126.Rotation = Vector3.new(0, -18.9200001, 0)
Part126.FormFactor = Enum.FormFactor.Custom
Part126.Size = Vector3.new(1.5, 0.850000024, 0.200000003)
Part126.CFrame = CFrame.new(12.6835442, 4.75803518, 0.277363002, 0.945954859, -3.51188464e-05, -0.324295938, 2.50855555e-05, 1, -3.51188464e-05, 0.324295938, 2.50855555e-05, 0.945954859)
Part126.BottomSurface = Enum.SurfaceType.Smooth
Part126.TopSurface = Enum.SurfaceType.Smooth
Part126.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part126.Position = Vector3.new(12.6835442, 4.75803518, 0.277363002)
Part126.Orientation = Vector3.new(0, -18.9200001, 0)
Part126.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh127.Parent = Part126
BlockMesh127.Scale = Vector3.new(1, 1, 0.5)
BlockMesh127.Scale = Vector3.new(1, 1, 0.5)
Decal128.Parent = Part126
Decal128.Texture = "http://www.roblox.com/asset/?id=156639788"
Decal128.Face = Enum.NormalId.Back
Part129.Parent = Tool81
Part129.Material = Enum.Material.Metal
Part129.BrickColor = BrickColor.new("Black")
Part129.Rotation = Vector3.new(0, -28.3899994, 0)
Part129.FormFactor = Enum.FormFactor.Custom
Part129.Size = Vector3.new(0.5, 0.850000024, 0.200000003)
Part129.CFrame = CFrame.new(11.761734, 4.75803518, -0.0815239996, 0.879726708, 3.70690686e-05, -0.475472778, -2.21015525e-05, 1, 3.70690686e-05, 0.475472778, -2.21015525e-05, 0.879726708)
Part129.BottomSurface = Enum.SurfaceType.Smooth
Part129.TopSurface = Enum.SurfaceType.Smooth
Part129.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part129.Position = Vector3.new(11.761734, 4.75803518, -0.0815239996)
Part129.Orientation = Vector3.new(0, -28.3899994, 0)
Part129.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh130.Parent = Part129
BlockMesh130.Scale = Vector3.new(1, 1, 0.5)
BlockMesh130.Scale = Vector3.new(1, 1, 0.5)
Part131.Parent = Tool81
Part131.Material = Enum.Material.Metal
Part131.BrickColor = BrickColor.new("Black")
Part131.Rotation = Vector3.new(-90, 0, 71.0699997)
Part131.FormFactor = Enum.FormFactor.Custom
Part131.Size = Vector3.new(0.25, 0.200000003, 0.25)
Part131.CFrame = CFrame.new(12.1975861, 4.75803518, -0.232890993, 0.324368834, -0.94593066, -2.31046888e-05, 1.00436482e-05, -2.09812824e-05, 1, -0.94593066, -0.324368864, 2.69492193e-06)
Part131.BottomSurface = Enum.SurfaceType.Smooth
Part131.TopSurface = Enum.SurfaceType.Smooth
Part131.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part131.Position = Vector3.new(12.1975861, 4.75803518, -0.232890993)
Part131.Orientation = Vector3.new(-90, 71.0699997, 0)
Part131.Color = Color3.new(0.105882, 0.164706, 0.207843)
CylinderMesh132.Parent = Part131
CylinderMesh132.Scale = Vector3.new(3, 0.75, 3)
CylinderMesh132.Scale = Vector3.new(3, 0.75, 3)
Part133.Parent = Tool81
Part133.Material = Enum.Material.Metal
Part133.BrickColor = BrickColor.new("Black")
Part133.Rotation = Vector3.new(0, -37.8499985, 0)
Part133.FormFactor = Enum.FormFactor.Custom
Part133.Size = Vector3.new(0.5, 0.850000024, 0.200000003)
Part133.CFrame = CFrame.new(11.3512716, 4.75803518, -0.34910199, 0.789619446, 3.87650289e-05, -0.61358273, -1.89694674e-05, 1, 3.87650289e-05, 0.61358273, -1.89694674e-05, 0.789619446)
Part133.BottomSurface = Enum.SurfaceType.Smooth
Part133.TopSurface = Enum.SurfaceType.Smooth
Part133.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part133.Position = Vector3.new(11.3512716, 4.75803518, -0.34910199)
Part133.Orientation = Vector3.new(0, -37.8499985, 0)
Part133.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh134.Parent = Part133
BlockMesh134.Scale = Vector3.new(1, 1, 0.5)
BlockMesh134.Scale = Vector3.new(1, 1, 0.5)
Part135.Name = "GlassPart"
Part135.Parent = Tool81
Part135.Material = Enum.Material.Glass
Part135.BrickColor = BrickColor.new("Institutional white")
Part135.Transparency = 0.5
Part135.Rotation = Vector3.new(0, -9.46000004, 0)
Part135.FormFactor = Enum.FormFactor.Custom
Part135.Size = Vector3.new(0.5, 1.29999995, 0.200000003)
Part135.CFrame = CFrame.new(13.6316061, 5.81809902, 0.559585989, 0.986395717, 3.29302056e-05, -0.164386213, -2.78963325e-05, 1, 3.29302056e-05, 0.164386213, -2.78963325e-05, 0.986395717)
Part135.BottomSurface = Enum.SurfaceType.Smooth
Part135.TopSurface = Enum.SurfaceType.Smooth
Part135.Color = Color3.new(0.972549, 0.972549, 0.972549)
Part135.Position = Vector3.new(13.6316061, 5.81809902, 0.559585989)
Part135.Orientation = Vector3.new(0, -9.46000004, 0)
Part135.Color = Color3.new(0.972549, 0.972549, 0.972549)
BlockMesh136.Parent = Part135
BlockMesh136.Offset = Vector3.new(0, 0, 0.0494999997)
BlockMesh136.Scale = Vector3.new(1, 1, 0)
BlockMesh136.Scale = Vector3.new(1, 1, 0)
Part137.Parent = Tool81
Part137.Material = Enum.Material.Metal
Part137.BrickColor = BrickColor.new("Black")
Part137.FormFactor = Enum.FormFactor.Custom
Part137.Size = Vector3.new(0.200000003, 1.10000002, 0.200000003)
Part137.CFrame = CFrame.new(14.3199615, 5.73314905, 0.600117028, 1, 3.05171125e-05, -3.05161811e-05, -3.05161811e-05, 1, 3.05171125e-05, 3.05171125e-05, -3.05161811e-05, 1)
Part137.BottomSurface = Enum.SurfaceType.Smooth
Part137.TopSurface = Enum.SurfaceType.Smooth
Part137.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part137.Position = Vector3.new(14.3199615, 5.73314905, 0.600117028)
Part137.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh138.Parent = Part137
BlockMesh138.Scale = Vector3.new(0.5, 1, 0.5)
BlockMesh138.Scale = Vector3.new(0.5, 1, 0.5)
Part139.Parent = Tool81
Part139.Material = Enum.Material.Metal
Part139.BrickColor = BrickColor.new("Black")
Part139.Rotation = Vector3.new(0, -9.46000004, 0)
Part139.FormFactor = Enum.FormFactor.Custom
Part139.Size = Vector3.new(0.5, 0.850000024, 0.200000003)
Part139.CFrame = CFrame.new(13.6316061, 4.75810814, 0.559585989, 0.986395717, 3.29302056e-05, -0.164386213, -2.78963325e-05, 1, 3.29302056e-05, 0.164386213, -2.78963325e-05, 0.986395717)
Part139.BottomSurface = Enum.SurfaceType.Smooth
Part139.TopSurface = Enum.SurfaceType.Smooth
Part139.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part139.Position = Vector3.new(13.6316061, 4.75810814, 0.559585989)
Part139.Orientation = Vector3.new(0, -9.46000004, 0)
Part139.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh140.Parent = Part139
BlockMesh140.Scale = Vector3.new(1, 1, 0.5)
BlockMesh140.Scale = Vector3.new(1, 1, 0.5)
Part141.Parent = Tool81
Part141.Material = Enum.Material.Metal
Part141.BrickColor = BrickColor.new("Black")
Part141.Rotation = Vector3.new(0, -37.8499985, 0)
Part141.FormFactor = Enum.FormFactor.Custom
Part141.Size = Vector3.new(0.200000003, 2, 0.200000003)
Part141.CFrame = CFrame.new(11.1933403, 3.3330729, -0.471935004, 0.789619446, 3.87650289e-05, -0.61358273, -1.89694674e-05, 1, 3.87650289e-05, 0.61358273, -1.89694674e-05, 0.789619446)
Part141.BottomSurface = Enum.SurfaceType.Smooth
Part141.TopSurface = Enum.SurfaceType.Smooth
Part141.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part141.Position = Vector3.new(11.1933403, 3.3330729, -0.471935004)
Part141.Orientation = Vector3.new(0, -37.8499985, 0)
Part141.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh142.Parent = Part141
BlockMesh142.Scale = Vector3.new(0.5, 1, 0.5)
BlockMesh142.Scale = Vector3.new(0.5, 1, 0.5)
Part143.Name = "GlassPart"
Part143.Parent = Tool81
Part143.Material = Enum.Material.Glass
Part143.BrickColor = BrickColor.new("Institutional white")
Part143.Transparency = 0.5
Part143.FormFactor = Enum.FormFactor.Custom
Part143.Size = Vector3.new(0.200000003, 0.223500013, 0.200000003)
Part143.CFrame = CFrame.new(13.9701042, 2.26522803, 0.599873006, 1, 3.05171125e-05, -3.05161811e-05, -3.05161811e-05, 1, 3.05171125e-05, 3.05171125e-05, -3.05161811e-05, 1)
Part143.BottomSurface = Enum.SurfaceType.Smooth
Part143.TopSurface = Enum.SurfaceType.Smooth
Part143.Color = Color3.new(0.972549, 0.972549, 0.972549)
Part143.Position = Vector3.new(13.9701042, 2.26522803, 0.599873006)
Part143.Color = Color3.new(0.972549, 0.972549, 0.972549)
BlockMesh144.Parent = Part143
BlockMesh144.Offset = Vector3.new(0, 0, 0.0494999997)
BlockMesh144.Scale = Vector3.new(1, 1, 0)
BlockMesh144.Scale = Vector3.new(1, 1, 0)
Part145.Parent = Tool81
Part145.Material = Enum.Material.Metal
Part145.BrickColor = BrickColor.new("Black")
Part145.Rotation = Vector3.new(90.0099945, -45.0099983, 90)
Part145.FormFactor = Enum.FormFactor.Custom
Part145.Size = Vector3.new(0.200000003, 0.200000003, 0.400000006)
Part145.CFrame = CFrame.new(14.1933136, 2.22689891, 0.599873006, -1.09672546e-05, -0.707021356, -0.707198203, -9.6231699e-05, 0.707193971, -0.707021356, 1.00000417, 6.32703304e-05, -7.7009201e-05)
Part145.BottomSurface = Enum.SurfaceType.Smooth
Part145.TopSurface = Enum.SurfaceType.Smooth
Part145.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part145.Position = Vector3.new(14.1933136, 2.22689891, 0.599873006)
Part145.Orientation = Vector3.new(44.9899979, -90.0099945, -0.00999999978)
Part145.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh146.Parent = Part145
BlockMesh146.Scale = Vector3.new(0.5, 0.5, 1)
BlockMesh146.Scale = Vector3.new(0.5, 0.5, 1)
Part147.Parent = Tool81
Part147.Material = Enum.Material.Metal
Part147.BrickColor = BrickColor.new("Black")
Part147.FormFactor = Enum.FormFactor.Custom
Part147.Size = Vector3.new(0.5, 0.200000003, 0.200000003)
Part147.CFrame = CFrame.new(13.8372335, 2.10008693, 0.599873006, 1, 3.05171125e-05, -3.05161811e-05, -3.05161811e-05, 1, 3.05171125e-05, 3.05171125e-05, -3.05161811e-05, 1)
Part147.BottomSurface = Enum.SurfaceType.Smooth
Part147.TopSurface = Enum.SurfaceType.Smooth
Part147.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part147.Position = Vector3.new(13.8372335, 2.10008693, 0.599873006)
Part147.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh148.Parent = Part147
BlockMesh148.Scale = Vector3.new(1, 0.5, 0.5)
BlockMesh148.Scale = Vector3.new(1, 0.5, 0.5)
Part149.Parent = Tool81
Part149.Material = Enum.Material.Metal
Part149.BrickColor = BrickColor.new("Black")
Part149.Rotation = Vector3.new(0, -18.9300003, 0)
Part149.FormFactor = Enum.FormFactor.Custom
Part149.Size = Vector3.new(0.965000272, 0.200000003, 0.200000003)
Part149.CFrame = CFrame.new(12.6539459, 2.10004497, 0.364033014, 0.945934772, 3.51197777e-05, -0.324356169, -2.50846242e-05, 1, 3.51197777e-05, 0.324356169, -2.50846242e-05, 0.945934772)
Part149.BottomSurface = Enum.SurfaceType.Smooth
Part149.TopSurface = Enum.SurfaceType.Smooth
Part149.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part149.Position = Vector3.new(12.6539459, 2.10004497, 0.364033014)
Part149.Orientation = Vector3.new(0, -18.9300003, 0)
Part149.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh150.Parent = Part149
BlockMesh150.Scale = Vector3.new(1, 0.5, 0.5)
BlockMesh150.Scale = Vector3.new(1, 0.5, 0.5)
Part151.Name = "GlassPart"
Part151.Parent = Tool81
Part151.Material = Enum.Material.Glass
Part151.BrickColor = BrickColor.new("Institutional white")
Part151.Transparency = 0.5
Part151.Rotation = Vector3.new(0, -9.46000004, 0)
Part151.FormFactor = Enum.FormFactor.Custom
Part151.Size = Vector3.new(0.5, 2.20000005, 0.200000003)
Part151.CFrame = CFrame.new(13.6316643, 3.24810004, 0.559585989, 0.986395717, 3.29302056e-05, -0.164386213, -2.78963325e-05, 1, 3.29302056e-05, 0.164386213, -2.78963325e-05, 0.986395717)
Part151.BottomSurface = Enum.SurfaceType.Smooth
Part151.TopSurface = Enum.SurfaceType.Smooth
Part151.Color = Color3.new(0.972549, 0.972549, 0.972549)
Part151.Position = Vector3.new(13.6316643, 3.24810004, 0.559585989)
Part151.Orientation = Vector3.new(0, -9.46000004, 0)
Part151.Color = Color3.new(0.972549, 0.972549, 0.972549)
BlockMesh152.Parent = Part151
BlockMesh152.Offset = Vector3.new(0, 0, 0.0494999997)
BlockMesh152.Scale = Vector3.new(1, 1, 0)
BlockMesh152.Scale = Vector3.new(1, 1, 0)
Part153.Name = "GlassPart"
Part153.Parent = Tool81
Part153.Material = Enum.Material.Glass
Part153.BrickColor = BrickColor.new("Institutional white")
Part153.Transparency = 0.5
Part153.Rotation = Vector3.new(0, -37.8499985, 0)
Part153.FormFactor = Enum.FormFactor.Custom
Part153.Size = Vector3.new(0.200000003, 0.223500013, 0.200000003)
Part153.CFrame = CFrame.new(11.4698019, 2.26519895, -0.257304996, 0.789619446, 3.87650289e-05, -0.61358273, -1.89694674e-05, 1, 3.87650289e-05, 0.61358273, -1.89694674e-05, 0.789619446)
Part153.BottomSurface = Enum.SurfaceType.Smooth
Part153.TopSurface = Enum.SurfaceType.Smooth
Part153.Color = Color3.new(0.972549, 0.972549, 0.972549)
Part153.Position = Vector3.new(11.4698019, 2.26519895, -0.257304996)
Part153.Orientation = Vector3.new(0, -37.8499985, 0)
Part153.Color = Color3.new(0.972549, 0.972549, 0.972549)
BlockMesh154.Parent = Part153
BlockMesh154.Offset = Vector3.new(0, 0, 0.0494999997)
BlockMesh154.Scale = Vector3.new(1, 1, 0)
BlockMesh154.Scale = Vector3.new(1, 1, 0)
Part155.Parent = Tool81
Part155.Material = Enum.Material.Metal
Part155.BrickColor = BrickColor.new("Black")
Part155.Rotation = Vector3.new(0, -37.8499985, 0)
Part155.FormFactor = Enum.FormFactor.Custom
Part155.Size = Vector3.new(0.5, 0.200000003, 0.200000003)
Part155.CFrame = CFrame.new(11.5747223, 2.10004497, -0.175761998, 0.789619446, 3.87650289e-05, -0.61358273, -1.89694674e-05, 1, 3.87650289e-05, 0.61358273, -1.89694674e-05, 0.789619446)
Part155.BottomSurface = Enum.SurfaceType.Smooth
Part155.TopSurface = Enum.SurfaceType.Smooth
Part155.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part155.Position = Vector3.new(11.5747223, 2.10004497, -0.175761998)
Part155.Orientation = Vector3.new(0, -37.8499985, 0)
Part155.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh156.Parent = Part155
BlockMesh156.Scale = Vector3.new(1, 0.5, 0.5)
BlockMesh156.Scale = Vector3.new(1, 0.5, 0.5)
Part157.Name = "GlassPart"
Part157.Parent = Tool81
Part157.Material = Enum.Material.Glass
Part157.BrickColor = BrickColor.new("Institutional white")
Part157.Transparency = 0.5
Part157.Rotation = Vector3.new(0, -18.9200001, 0)
Part157.FormFactor = Enum.FormFactor.Custom
Part157.Size = Vector3.new(1.5, 2.20000005, 0.200000003)
Part157.CFrame = CFrame.new(12.6836081, 3.24583912, 0.277363002, 0.945954859, -3.51188464e-05, -0.324295938, 2.50855555e-05, 1, -3.51188464e-05, 0.324295938, 2.50855555e-05, 0.945954859)
Part157.BottomSurface = Enum.SurfaceType.Smooth
Part157.TopSurface = Enum.SurfaceType.Smooth
Part157.Color = Color3.new(0.972549, 0.972549, 0.972549)
Part157.Position = Vector3.new(12.6836081, 3.24583912, 0.277363002)
Part157.Orientation = Vector3.new(0, -18.9200001, 0)
Part157.Color = Color3.new(0.972549, 0.972549, 0.972549)
BlockMesh158.Parent = Part157
BlockMesh158.Offset = Vector3.new(0, 0, 0.0494999997)
BlockMesh158.Scale = Vector3.new(1, 1, 0)
BlockMesh158.Scale = Vector3.new(1, 1, 0)
Part159.Name = "GlassPart"
Part159.Parent = Tool81
Part159.Material = Enum.Material.Glass
Part159.BrickColor = BrickColor.new("Institutional white")
Part159.Transparency = 0.5
Part159.Rotation = Vector3.new(0, 52.1499977, 180)
Part159.FormFactor = Enum.FormFactor.Custom
Part159.Size = Vector3.new(0.200000003, 0.200000003, 0.200000003)
Part159.CFrame = CFrame.new(11.2812042, 2.27716804, -0.340557009, -0.613584697, -1.39968042e-05, 0.789628863, 4.08246196e-05, -1, 1.39971562e-05, 0.789628863, 4.08247397e-05, 0.613584757)
Part159.BottomSurface = Enum.SurfaceType.Smooth
Part159.TopSurface = Enum.SurfaceType.Smooth
Part159.Color = Color3.new(0.972549, 0.972549, 0.972549)
Part159.Position = Vector3.new(11.2812042, 2.27716804, -0.340557009)
Part159.Orientation = Vector3.new(0, 52.1499977, 180)
Part159.Color = Color3.new(0.972549, 0.972549, 0.972549)
SpecialMesh160.Parent = Part159
SpecialMesh160.Scale = Vector3.new(0, 1, 1)
SpecialMesh160.MeshType = Enum.MeshType.Wedge
SpecialMesh160.Scale = Vector3.new(0, 1, 1)
Part161.Parent = Tool81
Part161.Material = Enum.Material.Metal
Part161.BrickColor = BrickColor.new("Black")
Part161.Rotation = Vector3.new(0, -9.46000004, 0)
Part161.FormFactor = Enum.FormFactor.Custom
Part161.Size = Vector3.new(0.5, 0.200000003, 0.200000003)
Part161.CFrame = CFrame.new(13.3488922, 2.10008693, 0.559585989, 0.986395717, 3.29302056e-05, -0.164386213, -2.78963325e-05, 1, 3.29302056e-05, 0.164386213, -2.78963325e-05, 0.986395717)
Part161.BottomSurface = Enum.SurfaceType.Smooth
Part161.TopSurface = Enum.SurfaceType.Smooth
Part161.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part161.Position = Vector3.new(13.3488922, 2.10008693, 0.559585989)
Part161.Orientation = Vector3.new(0, -9.46000004, 0)
Part161.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh162.Parent = Part161
BlockMesh162.Scale = Vector3.new(1, 0.5, 0.5)
BlockMesh162.Scale = Vector3.new(1, 0.5, 0.5)
Part163.Parent = Tool81
Part163.Material = Enum.Material.Metal
Part163.BrickColor = BrickColor.new("Black")
Part163.Rotation = Vector3.new(-121.529999, -33.9399986, -137.699997)
Part163.FormFactor = Enum.FormFactor.Custom
Part163.Size = Vector3.new(0.200000003, 0.200000003, 0.400000006)
Part163.CFrame = CFrame.new(11.2935324, 2.22686911, -0.394268006, -0.613650262, 0.558344007, -0.558287859, -3.65348205e-05, 0.707051158, 0.70716244, 0.789577901, 0.433970869, -0.433861732)
Part163.BottomSurface = Enum.SurfaceType.Smooth
Part163.TopSurface = Enum.SurfaceType.Smooth
Part163.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part163.Position = Vector3.new(11.2935324, 2.22686911, -0.394268006)
Part163.Orientation = Vector3.new(-45, -127.849998, 0)
Part163.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh164.Parent = Part163
BlockMesh164.Scale = Vector3.new(0.5, 0.5, 1)
BlockMesh164.Scale = Vector3.new(0.5, 0.5, 1)
Part165.Name = "GlassPart"
Part165.Parent = Tool81
Part165.Material = Enum.Material.Glass
Part165.BrickColor = BrickColor.new("Institutional white")
Part165.Transparency = 0.5
Part165.FormFactor = Enum.FormFactor.Custom
Part165.Size = Vector3.new(0.400000006, 2, 0.200000003)
Part165.CFrame = CFrame.new(14.0699615, 3.37708712, 0.599873006, 1, 3.05171125e-05, -3.05161811e-05, -3.05161811e-05, 1, 3.05171125e-05, 3.05171125e-05, -3.05161811e-05, 1)
Part165.BottomSurface = Enum.SurfaceType.Smooth
Part165.TopSurface = Enum.SurfaceType.Smooth
Part165.Color = Color3.new(0.972549, 0.972549, 0.972549)
Part165.Position = Vector3.new(14.0699615, 3.37708712, 0.599873006)
Part165.Color = Color3.new(0.972549, 0.972549, 0.972549)
BlockMesh166.Parent = Part165
BlockMesh166.Offset = Vector3.new(0, 0, 0.0494999997)
BlockMesh166.Scale = Vector3.new(1, 1, 0)
BlockMesh166.Scale = Vector3.new(1, 1, 0)
Part167.Parent = Tool81
Part167.Material = Enum.Material.Metal
Part167.BrickColor = BrickColor.new("Black")
Part167.FormFactor = Enum.FormFactor.Custom
Part167.Size = Vector3.new(0.200000003, 2, 0.200000003)
Part167.CFrame = CFrame.new(14.3200836, 3.3331151, 0.599873006, 1, 3.05171125e-05, -3.05161811e-05, -3.05161811e-05, 1, 3.05171125e-05, 3.05171125e-05, -3.05161811e-05, 1)
Part167.BottomSurface = Enum.SurfaceType.Smooth
Part167.TopSurface = Enum.SurfaceType.Smooth
Part167.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part167.Position = Vector3.new(14.3200836, 3.3331151, 0.599873006)
Part167.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh168.Parent = Part167
BlockMesh168.Scale = Vector3.new(0.5, 1, 0.5)
BlockMesh168.Scale = Vector3.new(0.5, 1, 0.5)
Part169.Parent = Tool81
Part169.Material = Enum.Material.Metal
Part169.BrickColor = BrickColor.new("Black")
Part169.Rotation = Vector3.new(0, -28.3899994, 0)
Part169.FormFactor = Enum.FormFactor.Custom
Part169.Size = Vector3.new(0.5, 0.200000003, 0.200000003)
Part169.CFrame = CFrame.new(11.9851217, 2.10004497, 0.0920599997, 0.879726708, 3.70690686e-05, -0.475472778, -2.21015525e-05, 1, 3.70690686e-05, 0.475472778, -2.21015525e-05, 0.879726708)
Part169.BottomSurface = Enum.SurfaceType.Smooth
Part169.TopSurface = Enum.SurfaceType.Smooth
Part169.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part169.Position = Vector3.new(11.9851217, 2.10004497, 0.0920599997)
Part169.Orientation = Vector3.new(0, -28.3899994, 0)
Part169.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh170.Parent = Part169
BlockMesh170.Scale = Vector3.new(1, 0.5, 0.5)
BlockMesh170.Scale = Vector3.new(1, 0.5, 0.5)
Part171.Name = "Handle"
Part171.Parent = Tool81
Part171.Material = Enum.Material.Metal
Part171.BrickColor = BrickColor.new("Black")
Part171.Transparency = 1
Part171.Rotation = Vector3.new(-179.979996, -71.0699997, -179.98999)
Part171.FormFactor = Enum.FormFactor.Custom
Part171.Size = Vector3.new(0.25, 0.25, 1.10000002)
Part171.CFrame = CFrame.new(12.7889557, 4.75803518, -0.0302540008, -0.324365765, 7.80466871e-05, -0.945931733, -2.83790778e-05, 1, 9.22390973e-05, 0.945931733, 5.67638745e-05, -0.324365765)
Part171.BottomSurface = Enum.SurfaceType.Smooth
Part171.TopSurface = Enum.SurfaceType.Smooth
Part171.Color = Color3.new(0.105882, 0.164706, 0.207843)
Part171.Position = Vector3.new(12.7889557, 4.75803518, -0.0302540008)
Part171.Orientation = Vector3.new(-0.00999999978, -108.93, 0)
Part171.Color = Color3.new(0.105882, 0.164706, 0.207843)
BlockMesh172.Parent = Part171
Sound173.Name = "Reload"
Sound173.Parent = Part171
Sound173.Pitch = 1.2999999523163
Sound173.SoundId = "http://www.roblox.com/asset/?version=1&id=2691591"
Sound173.Volume = 0.60000002384186
Sound174.Name = "Trigger"
Sound174.Parent = Part171
Sound174.Pitch = 2
Sound174.SoundId = "rbxasset://sounds//switch.wav"
Sound174.Volume = 1
Sound175.Name = "Fire"
Sound175.Parent = Part171
Sound175.Pitch = 3
Sound175.SoundId = "http://www.roblox.com/asset/?id=10730819"
Sound175.Volume = 1
Sound175.PlayOnRemove = true
for i,v in pairs(mas:GetChildren()) do
	v.Parent = game:GetService("Players").LocalPlayer.Backpack
	pcall(function() v:MakeJoints() end)
end
mas:Destroy()
for i,v in pairs(cors) do
	spawn(function()
		pcall(v)
	end)
end

--Converted with ttyyuu12345's model to script plugin v4
function sandbox(var,func)
	local env = getfenv(func)
	local newenv = setmetatable({},{
		__index = function(self,k)
			if k=="script" then
				return var
			else
				return env[k]
			end
		end,
	})
	setfenv(func,newenv)
	return func
end
cors = {}
mas = Instance.new("Model",game:GetService("Lighting"))
Tool0 = Instance.new("Tool")
IntValue1 = Instance.new("IntValue")
Animation2 = Instance.new("Animation")
Part3 = Instance.new("Part")
Sound4 = Instance.new("Sound")
Sound5 = Instance.new("Sound")
Sound6 = Instance.new("Sound")
SpecialMesh7 = Instance.new("SpecialMesh")
Part8 = Instance.new("Part")
CylinderMesh9 = Instance.new("CylinderMesh")
PointLight10 = Instance.new("PointLight")
BillboardGui11 = Instance.new("BillboardGui")
ImageLabel12 = Instance.new("ImageLabel")
Part13 = Instance.new("Part")
SpecialMesh14 = Instance.new("SpecialMesh")
PointLight15 = Instance.new("PointLight")
BillboardGui16 = Instance.new("BillboardGui")
ImageLabel17 = Instance.new("ImageLabel")
Part18 = Instance.new("Part")
SpecialMesh19 = Instance.new("SpecialMesh")
PointLight20 = Instance.new("PointLight")
BillboardGui21 = Instance.new("BillboardGui")
ImageLabel22 = Instance.new("ImageLabel")
Part23 = Instance.new("Part")
SpecialMesh24 = Instance.new("SpecialMesh")
BillboardGui25 = Instance.new("BillboardGui")
ImageLabel26 = Instance.new("ImageLabel")
SurfaceLight27 = Instance.new("SurfaceLight")
Script28 = Instance.new("Script")
Script29 = Instance.new("Script")
LocalScript30 = Instance.new("LocalScript")
ScreenGui31 = Instance.new("ScreenGui")
TextLabel32 = Instance.new("TextLabel")
TextLabel33 = Instance.new("TextLabel")
Tool0.Name = "Bike"
Tool0.Parent = mas
Tool0.GripForward = Vector3.new(-0, 3.9340253e-07, -1)
Tool0.GripPos = Vector3.new(1.5, 1.10000002, -0.800000012)
Tool0.GripUp = Vector3.new(0, 1, 3.9340253e-07)
Tool0.CanBeDropped = false
IntValue1.Name = "IsReady"
IntValue1.Parent = Tool0
Animation2.Name = "holdAni"
Animation2.Parent = Tool0
Animation2.AnimationId = "http://www.roblox.com/Asset?ID=104506550"
Part3.Name = "Handle"
Part3.Parent = Tool0
Part3.Material = Enum.Material.Fabric
Part3.Elasticity = 0
Part3.FormFactor = Enum.FormFactor.Custom
Part3.Friction = 0
Part3.Size = Vector3.new(0.200000003, 5, 7.91000128)
Part3.CFrame = CFrame.new(82.3563538, 4.50000477, 70.8921051, 1, 0, 0, 0, 1, 0, 0, 0, 1)
Part3.BottomSurface = Enum.SurfaceType.Smooth
Part3.TopSurface = Enum.SurfaceType.Smooth
Part3.Position = Vector3.new(82.3563538, 4.50000477, 70.8921051)
Sound4.Name = "Running"
Sound4.Parent = Part3
Sound4.SoundId = "rbxassetid://288319082"
Sound4.Volume = 0.30000001192093
Sound4.Looped = true
Sound5.Name = "Siren"
Sound5.Parent = Part3
Sound5.SoundId = "rbxassetid://295410986"
Sound5.Volume = 10
Sound5.Looped = true
Sound6.Name = "Siren1"
Sound6.Parent = Part3
Sound6.SoundId = "rbxassetid://295410932"
Sound6.Volume = 10
Sound6.Looped = true
SpecialMesh7.Parent = Part3
SpecialMesh7.MeshId = "rbxassetid://575950615"
SpecialMesh7.Offset = Vector3.new(0, 0, 0.300000012)
SpecialMesh7.Scale = Vector3.new(0.0700000003, 0.0700000003, 0.0700000003)
SpecialMesh7.TextureId = "rbxassetid://72012761"
SpecialMesh7.MeshType = Enum.MeshType.FileMesh
SpecialMesh7.Scale = Vector3.new(0.0700000003, 0.0700000003, 0.0700000003)
Part8.Name = "BackLight"
Part8.Parent = Tool0
Part8.Material = Enum.Material.SmoothPlastic
Part8.BrickColor = BrickColor.new("Deep blue")
Part8.Reflectance = 0.10000000149012
Part8.Transparency = 1
Part8.Rotation = Vector3.new(0, -90, 0)
Part8.CanCollide = false
Part8.FormFactor = Enum.FormFactor.Custom
Part8.Size = Vector3.new(0.400000006, 0.200000003, 0.300000012)
Part8.CFrame = CFrame.new(83.0562744, 6.18976879, 74.8003235, 0, 0, -1, 0, 1, 0, 1, 0, 0)
Part8.BottomSurface = Enum.SurfaceType.Smooth
Part8.TopSurface = Enum.SurfaceType.Smooth
Part8.Color = Color3.new(0.129412, 0.329412, 0.72549)
Part8.Position = Vector3.new(83.0562744, 6.18976879, 74.8003235)
Part8.Orientation = Vector3.new(0, -90, 0)
Part8.Color = Color3.new(0.129412, 0.329412, 0.72549)
CylinderMesh9.Parent = Part8
CylinderMesh9.Offset = Vector3.new(0, -0.0500000007, 0)
CylinderMesh9.Scale = Vector3.new(0.400000006, 0.5, 1)
CylinderMesh9.Scale = Vector3.new(0.400000006, 0.5, 1)
PointLight10.Name = "Light2"
PointLight10.Parent = Part8
PointLight10.Color = Color3.new(0, 0.666667, 1)
PointLight10.Enabled = false
PointLight10.Brightness = 5
PointLight10.Color = Color3.new(0, 0.666667, 1)
BillboardGui11.Name = "Light"
BillboardGui11.Parent = Part8
BillboardGui11.Size = UDim2.new(3, 0, 3, 0)
BillboardGui11.Enabled = false
BillboardGui11.ExtentsOffset = Vector3.new(0, 0, 1)
ImageLabel12.Name = "Light"
ImageLabel12.Parent = BillboardGui11
ImageLabel12.Transparency = 1
ImageLabel12.Size = UDim2.new(1, 0, 1, 0)
ImageLabel12.BackgroundTransparency = 1
ImageLabel12.Image = "http://www.roblox.com/asset/?id=134532208"
Part13.Name = "LeftLight"
Part13.Parent = Tool0
Part13.Material = Enum.Material.SmoothPlastic
Part13.BrickColor = BrickColor.new("Deep blue")
Part13.Reflectance = 0.10000000149012
Part13.Transparency = 1
Part13.Rotation = Vector3.new(0, 0, -180)
Part13.CanCollide = false
Part13.FormFactor = Enum.FormFactor.Custom
Part13.Size = Vector3.new(0.400000006, 0.200000003, 0.200000003)
Part13.CFrame = CFrame.new(80.9499664, 5.62722111, 68.2604904, -1, 1.25603208e-07, -1.30385143e-08, -1.43017303e-07, -1, -2.98068983e-08, 5.58794211e-09, -1.1389605e-07, 1)
Part13.BottomSurface = Enum.SurfaceType.Smooth
Part13.TopSurface = Enum.SurfaceType.Smooth
Part13.Color = Color3.new(0.129412, 0.329412, 0.72549)
Part13.Position = Vector3.new(80.9499664, 5.62722111, 68.2604904)
Part13.Orientation = Vector3.new(0, 0, -180)
Part13.Color = Color3.new(0.129412, 0.329412, 0.72549)
SpecialMesh14.Parent = Part13
SpecialMesh14.MeshType = Enum.MeshType.Sphere
PointLight15.Name = "Light2"
PointLight15.Parent = Part13
PointLight15.Color = Color3.new(0, 0.666667, 1)
PointLight15.Enabled = false
PointLight15.Brightness = 5
PointLight15.Color = Color3.new(0, 0.666667, 1)
BillboardGui16.Name = "Light"
BillboardGui16.Parent = Part13
BillboardGui16.Size = UDim2.new(3, 0, 3, 0)
BillboardGui16.Enabled = false
BillboardGui16.ExtentsOffset = Vector3.new(0, 0, 1)
ImageLabel17.Name = "Light"
ImageLabel17.Parent = BillboardGui16
ImageLabel17.Transparency = 1
ImageLabel17.Size = UDim2.new(1, 0, 1, 0)
ImageLabel17.BackgroundTransparency = 1
ImageLabel17.Image = "http://www.roblox.com/asset/?id=134532208"
Part18.Name = "RightLight"
Part18.Parent = Tool0
Part18.Material = Enum.Material.SmoothPlastic
Part18.BrickColor = BrickColor.new("Deep blue")
Part18.Reflectance = 0.10000000149012
Part18.Transparency = 1
Part18.Rotation = Vector3.new(0, 0, -180)
Part18.CanCollide = false
Part18.FormFactor = Enum.FormFactor.Custom
Part18.Size = Vector3.new(0.400000006, 0.200000003, 0.200000003)
Part18.CFrame = CFrame.new(83.6999817, 5.62722111, 68.2604904, -1, 1.25603208e-07, -1.30385143e-08, -1.43017303e-07, -1, -2.98068983e-08, 5.58794211e-09, -1.1389605e-07, 1)
Part18.BottomSurface = Enum.SurfaceType.Smooth
Part18.TopSurface = Enum.SurfaceType.Smooth
Part18.Color = Color3.new(0.129412, 0.329412, 0.72549)
Part18.Position = Vector3.new(83.6999817, 5.62722111, 68.2604904)
Part18.Orientation = Vector3.new(0, 0, -180)
Part18.Color = Color3.new(0.129412, 0.329412, 0.72549)
SpecialMesh19.Parent = Part18
SpecialMesh19.MeshType = Enum.MeshType.Sphere
PointLight20.Name = "Light2"
PointLight20.Parent = Part18
PointLight20.Color = Color3.new(0, 0.666667, 1)
PointLight20.Enabled = false
PointLight20.Brightness = 5
PointLight20.Color = Color3.new(0, 0.666667, 1)
BillboardGui21.Name = "Light"
BillboardGui21.Parent = Part18
BillboardGui21.Size = UDim2.new(3, 0, 3, 0)
BillboardGui21.Enabled = false
BillboardGui21.ExtentsOffset = Vector3.new(0, 0, 1)
ImageLabel22.Name = "Light"
ImageLabel22.Parent = BillboardGui21
ImageLabel22.Transparency = 1
ImageLabel22.Size = UDim2.new(1, 0, 1, 0)
ImageLabel22.BackgroundTransparency = 1
ImageLabel22.Image = "http://www.roblox.com/asset/?id=134532208"
Part23.Name = "FrontLight"
Part23.Parent = Tool0
Part23.Material = Enum.Material.SmoothPlastic
Part23.BrickColor = BrickColor.new("Deep blue")
Part23.Reflectance = 0.10000000149012
Part23.Transparency = 1
Part23.Rotation = Vector3.new(0, 0, -180)
Part23.CanCollide = false
Part23.FormFactor = Enum.FormFactor.Custom
Part23.Size = Vector3.new(0.5, 0.200000003, 0.200000003)
Part23.CFrame = CFrame.new(82.3499832, 4.52722788, 67.5604935, -1, 1.25603208e-07, -1.30385143e-08, -1.43017303e-07, -1, -2.98068983e-08, 5.58794211e-09, -1.1389605e-07, 1)
Part23.BottomSurface = Enum.SurfaceType.Smooth
Part23.TopSurface = Enum.SurfaceType.Smooth
Part23.Color = Color3.new(0.129412, 0.329412, 0.72549)
Part23.Position = Vector3.new(82.3499832, 4.52722788, 67.5604935)
Part23.Orientation = Vector3.new(0, 0, -180)
Part23.Color = Color3.new(0.129412, 0.329412, 0.72549)
SpecialMesh24.Parent = Part23
SpecialMesh24.MeshType = Enum.MeshType.Sphere
BillboardGui25.Name = "Light"
BillboardGui25.Parent = Part23
BillboardGui25.Size = UDim2.new(5, 0, 3, 0)
BillboardGui25.Enabled = false
BillboardGui25.ExtentsOffset = Vector3.new(0, 0, 1)
ImageLabel26.Name = "Light"
ImageLabel26.Parent = BillboardGui25
ImageLabel26.Transparency = 1
ImageLabel26.Size = UDim2.new(1, 0, 1, 0)
ImageLabel26.BackgroundTransparency = 1
ImageLabel26.Image = "http://www.roblox.com/asset/?id=23596922"
SurfaceLight27.Name = "Light2"
SurfaceLight27.Parent = Part23
SurfaceLight27.Range = 19.239078521729
SurfaceLight27.Angle = 57.401973724365
Script28.Parent = Part23
table.insert(cors,sandbox(Script28,function()
while true do 
	wait()
if script.Parent.Parent.BackLight.Light.Enabled == true then
	script.Parent.Light.Enabled = true
	script.Parent.Light2.Enabled = true
		else
	script.Parent.Light.Enabled = false
	script.Parent.Light2.Enabled = false
		end
end
end))
Script29.Name = "qPerfectionWeld"
Script29.Parent = Tool0
table.insert(cors,sandbox(Script29,function()
-- Created by Quenty (@Quenty, follow me on twitter).
-- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.
-- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.

--[[ INSTRUCTIONS
- Place in the model
- Make sure model is anchored
- That's it. It will weld the model and all children. 

THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 

This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes. 
]]

--[[ DOCUMENTATION
- Will work in tools. If ran more than once it will not create more than one weld.  This is especially useful for tools that are dropped and then picked up again.
- Will work in PBS servers
- Will work as long as it starts out with the part anchored
- Stores the relative CFrame as a CFrame value
- Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin
- Utilizes a recursive algorith to find all parts in the model
- Will reweld on script reparent if the script is initially parented to a tool.
- Welds as fast as possible
]]

-- qPerfectionWeld.lua
-- Created 10/6/2014
-- Author: Quenty
-- Version 1.0.3

-- Updated 10/14/2014 - Updated to 1.0.1
--- Bug fix with existing ROBLOX welds ? Repro by asimo3089

-- Updated 10/14/2014 - Updated to 1.0.2
--- Fixed bug fix. 

-- Updated 10/14/2014 - Updated to 1.0.3
--- Now handles joints semi-acceptably. May be rather hacky with some joints. :/

local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).


local function CallOnChildren(Instance, FunctionToCall)
	-- Calls a function on each of the children of a certain object, using recursion.  

	FunctionToCall(Instance)

	for _, Child in next, Instance:GetChildren() do
		CallOnChildren(Child, FunctionToCall)
	end
end

local function GetNearestParent(Instance, ClassName)
	-- Returns the nearest parent of a certain class, or returns nil

	local Ancestor = Instance
	repeat
		Ancestor = Ancestor.Parent
		if Ancestor == nil then
			return nil
		end
	until Ancestor:IsA(ClassName)

	return Ancestor
end

local function GetBricks(StartInstance)
	local List = {}

	-- if StartInstance:IsA("BasePart") then
	-- 	List[#List+1] = StartInstance
	-- end

	CallOnChildren(StartInstance, function(Item)
		if Item:IsA("BasePart") then
			List[#List+1] = Item;
		end
	end)

	return List
end

local function Modify(Instance, Values)
	-- Modifies an Instance by using a table.  

	assert(type(Values) == "table", "Values is not a table");

	for Index, Value in next, Values do
		if type(Index) == "number" then
			Value.Parent = Instance
		else
			Instance[Index] = Value
		end
	end
	return Instance
end

local function Make(ClassType, Properties)
	-- Using a syntax hack to create a nice way to Make new items.  

	return Modify(Instance.new(ClassType), Properties)
end

local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}

local function HasWheelJoint(Part)
	for _, SurfaceName in pairs(Surfaces) do
		for _, HingSurfaceName in pairs(HingSurfaces) do
			if Part[SurfaceName].Name == HingSurfaceName then
				return true
			end
		end
	end
	
	return false
end

local function ShouldBreakJoints(Part)
	--- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
	--  definitely some edge cases. 

	if NEVER_BREAK_JOINTS then
		return false
	end
	
	if HasWheelJoint(Part) then
		return false
	end
	
	local Connected = Part:GetConnectedParts()
	
	if #Connected == 1 then
		return false
	end
	
	for _, Item in pairs(Connected) do
		if HasWheelJoint(Item) then
			return false
		elseif not Item:IsDescendantOf(script.Parent) then
			return false
		end
	end
	
	return true
end

local function WeldTogether(Part0, Part1, JointType, WeldParent)
	--- Weld's 2 parts together
	-- @param Part0 The first part
	-- @param Part1 The second part (Dependent part most of the time).
	-- @param [JointType] The type of joint. Defaults to weld.
	-- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
	-- @return The weld created.

	JointType = JointType or "Weld"
	local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")
	
	local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
	Modify(NewWeld, {
		Name = "qCFrameWeldThingy";
		Part0  = Part0;
		Part1  = Part1;
		C0     = CFrame.new();--Part0.CFrame:inverse();
		C1     = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
		Parent = Part1;
	})

	if not RelativeValue then
		RelativeValue = Make("CFrameValue", {
			Parent     = Part1;
			Name       = "qRelativeCFrameWeldValue";
			Archivable = true;
			Value      = NewWeld.C1;
		})
	end

	return NewWeld
end

local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
	-- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
	-- @param MainPart The part to weld the model to (can be in the model).
	-- @param [JointType] The type of joint. Defaults to weld. 
	-- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.
	
	for _, Part in pairs(Parts) do
		if ShouldBreakJoints(Part) then
			Part:BreakJoints()
		end
	end
	
	for _, Part in pairs(Parts) do
		if Part ~= MainPart then
			WeldTogether(MainPart, Part, JointType, MainPart)
		end
	end

	if not DoNotUnanchor then
		for _, Part in pairs(Parts) do
			Part.Anchored = false
		end
		MainPart.Anchored = false
	end
end

local function PerfectionWeld()	
	local Tool = GetNearestParent(script, "Tool")

	local Parts = GetBricks(script.Parent)
	local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]

	if PrimaryPart then
		WeldParts(Parts, PrimaryPart, "Weld", false)
	else
		warn("qWeld - Unable to weld part")
	end
	
	return Tool
end

local Tool = PerfectionWeld()


if Tool and script.ClassName == "Script" then
	--- Don't bother with local scripts

	script.Parent.AncestryChanged:connect(function()
		PerfectionWeld()
	end)
end

-- Created by Quenty (@Quenty, follow me on twitter).

end))
LocalScript30.Name = "continuumScript"
LocalScript30.Parent = Tool0
table.insert(cors,sandbox(LocalScript30,function()
function WaitForChild(parent,child)
	return parent[child]
end

local int = WaitForChild(script.Parent,'IsReady')
local handle = WaitForChild(script.Parent,'Handle')
local BackLight = WaitForChild(script.Parent,'BackLight')
local LeftLight = WaitForChild(script.Parent,'LeftLight')
local RightLight = WaitForChild(script.Parent,'RightLight')
local EngineSound = WaitForChild(handle,'Running')
local gui2 = nil
local radio = false
local siren = false
local siren2 = false

local HoldAni = WaitForChild(script.Parent,'holdAni')

local lights = false
local left=false
local right=false
local up=false
local down=false
local mouse
local Character
local key_down_connect
local key_up_connect

local thrustForce
local thrustMagnitude
local thrustDirection
local RotationForce
local TurnGyro

local HoldAniTrack

local torsoWeld

local SmokePart = Instance.new('Part')
SmokePart.Transparency = 1
SmokePart.Size = Vector3.new(0,0,0)
local ExhaustSmoke = Instance.new('Smoke')
ExhaustSmoke.Parent = SmokePart
ExhaustSmoke.Size = .1
ExhaustSmoke.RiseVelocity = .01
ExhaustSmoke.Color = Color3.new(.5,.5,.5)
ExhaustSmoke.Enabled = false

local acceleration = 30
local deceleration = 25
local turnAlpha = .25
local alphaDampening = .15

local Equipped = false

local LastPosition = nil
local ActualVelocity = Vector3.new(0,0,0)

local FakeHandle = nil
local FrontWheel = Instance.new('Part')
FrontWheel.FormFactor = 'Custom'
FrontWheel.CanCollide = false
FrontWheel.Size = Vector3.new(0,0,0)

local WheelMesh = Instance.new('SpecialMesh')
WheelMesh.MeshId = "http://www.roblox.com/asset/?id=438123816"
WheelMesh.TextureId = "http://www.roblox.com/asset/?id=438106307"
WheelMesh.Scale = Vector3.new(0.007,0.007,0.007)
	
local Light = FrontWheel:Clone()
local LightWeld = nil

local FrontMotor = nil
local BackWheel = FrontWheel:Clone()
local BackMotor = nil

local CurrentSpeed=0
local turnSpeed=0
local turnSpeedAim=10

function ThrustUpdater()
coroutine.resume(coroutine.create(function()
	while Equipped do wait()
		if lights then
		BackLight.Light.Enabled = true
		LeftLight.Light.Enabled = true
		BackLight.Light2.Enabled = true
		LeftLight.Light2.Enabled = true
		wait(0.1)
		RightLight.Light.Enabled = true
		LeftLight.Light.Enabled = false
		RightLight.Light2.Enabled = true
		LeftLight.Light2.Enabled = false
		wait(0.1)
		RightLight.Light.Enabled = false
		BackLight.Light.Enabled = false
		RightLight.Light2.Enabled = false
		BackLight.Light2.Enabled = false
		wait(0.1)
		BackLight.Light.Enabled = false
		LeftLight.Light.Enabled = false
		RightLight.Light.Enabled = false
		BackLight.Light2.Enabled = false
		LeftLight.Light2.Enabled = false
		RightLight.Light2.Enabled = false wait(0.1)
		end
	end
lights = false
BackLight.Material = "SmoothPlastic"
LeftLight.Material = "SmoothPlastic"
RightLight.Material = "SmoothPlastic"
BackLight.Light2.Enabled = false
LeftLight.Light2.Enabled = false
RightLight.Light2.Enabled = false
end))
if not script:findFirstChild("Selected") then
Instance.new("IntValue",script).Name = "Selected"
game.Players[script.Parent.Parent.Name].Chatted:connect(function(MSG)
	if radio and game.Lighting:findFirstChild("OfficerRadioSystem") and game.Players[script.Parent.Parent.Name]:findFirstChild("PlayerGui") then
		if game.Players[script.Parent.Parent.Name].PlayerGui:findFirstChild("OfficerRadio") and Equipped then
		local Channel = game.Lighting["OfficerRadioSystem"]
		Channel.Line1.Value = Channel.Line2.Value
		Channel.Line2.Value = Channel.Line3.Value
		Channel.Line3.Value = Channel.Line4.Value
		Channel.Line4.Value = Channel.Line5.Value
		Channel.Line5.Value = Channel.Line6.Value
		Channel.Line6.Value = Channel.Line7.Value
		Channel.Line7.Value = script.Parent.Parent.Name..": "..MSG
		end
	end
end)
end
	while Equipped do
		local direction = Character:FindFirstChild("Torso").CFrame.lookVector
		direction = Vector3.new(direction.x,0,direction.z).unit
		thrustForce.velocity = direction*(CurrentSpeed)
		EngineSound.Pitch =	1+(math.abs(CurrentSpeed/50)*1)
		
		if FrontMotor then
			FrontMotor.DesiredAngle=(999999999)*	(-CurrentSpeed/math.abs(CurrentSpeed))
			FrontMotor.MaxVelocity = CurrentSpeed/250
			if BackMotor then 
				BackMotor.DesiredAngle = FrontMotor.DesiredAngle
				BackMotor.MaxVelocity = FrontMotor.MaxVelocity	
			end	
		end
		
		RotationForce.angularvelocity = Vector3.new(0, turnSpeed, 0)
		if math.abs(turnSpeed)>alphaDampening	 then
			turnSpeed= turnSpeed-((alphaDampening)*(math.abs(turnSpeed)/turnSpeed))
		else 
			turnSpeed = 0		
		end
		local leanAmount= -turnSpeed*(math.pi/6)/10 --FIND ME
		
		if not forwards or back then
			CurrentSpeed = CurrentSpeed*.99			
		end		
		
		local xzAngle = math.atan2(Character.Torso.CFrame.lookVector.z,0, Character.Torso.CFrame.lookVector.x)
		TurnGyro.cframe=CFrame.Angles(leanAmount*direction.x,0,leanAmount*direction.z)
		ExhaustSmoke.Opacity = (math.min(math.abs(CurrentSpeed),10)/10)*.5
		if LastPosition then
			local npos = Vector3.new(Character.Torso.CFrame.p.x,0,Character.Torso.CFrame.p.z)
			--(npos-LastPosition).magnitude
			local myspeed =Vector3.new(FakeHandle.Velocity.X,0,FakeHandle.Velocity.Z).magnitude
			local velocityDifference = math.abs((myspeed - (thrustForce.velocity.magnitude)))
			if myspeed>3 and thrustForce.velocity.magnitude>3 and velocityDifference> .7*thrustForce.velocity.magnitude then
				CurrentSpeed=CurrentSpeed*.9
			end
			
		end
		LastPosition = Vector3.new(Character.Torso.CFrame.p.x,0,Character.Torso.CFrame.p.z)
		wait(1/60)
	end
	
end


function onEquipped(nmouse)
	Spawn(function()
		if Equipped then
			return
		end
		--
		local gui = WaitForChild(game.Players[script.Parent.Parent.Name],"PlayerGui")
		gui2 = script.BikeGui:Clone()
		gui2.Parent = gui
			Character=script.Parent.Parent
			local myTorso = WaitForChild(Character,'Torso')
			if not FakeHandle then
				FakeHandle = handle:Clone()
				FakeHandle.Name = 'FakeHandle'
				FakeHandle.Size = Vector3.new(1, 7, 6)
				FakeHandle:WaitForChild('Mesh').MeshId = "http://www.roblox.com/asset/?id=575950615"
				
			end
			FakeHandle.Parent = script.Parent
			FakeHandle.CFrame = myTorso.CFrame
			handle.Transparency = 1

			Spawn(function()
				
				FrontWheel.Parent = FakeHandle
					FrontMotor = Instance.new('Motor6D')
					FrontMotor.C0 = CFrame.new(0, -2.4, -3.02) * CFrame.Angles(0, (math.pi / 2), 0)
					FrontMotor.C1 = CFrame.new() * CFrame.Angles(0, -(math.pi / 2), 0)
					FrontMotor.Part0 = FakeHandle
					FrontMotor.Part1 = FrontWheel
					FrontMotor.Parent =FakeHandle
				WheelMesh:Clone().Parent = FrontWheel
					
				BackWheel.Parent = FakeHandle
					BackMotor = Instance.new('Motor6D')
					BackMotor.C0 = CFrame.new(0, -2.4, 2.9) * CFrame.Angles(0, (math.pi / 2), 0)
					BackMotor.C1 = CFrame.new() * CFrame.Angles(0, -(math.pi / 2), 0)
					BackMotor.Part0 = FakeHandle
					BackMotor.Part1 = BackWheel
					BackMotor.Parent =FakeHandle
				WheelMesh:Clone().Parent = BackWheel
				
				Light.Parent = FakeHandle
					LightWeld = Instance.new('Weld')
					LightWeld.C0 = CFrame.new(0, 0, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
					LightWeld.C1 = CFrame.new(-0.140708923, -0.749996185, -0.9377985, -1.63912773e-007, -1.27675008e-008, -1.00000024, -2.05633661e-008, 0.99999994, 3.65663944e-009, 0.999999881, 5.65337004e-008, -7.4505806e-008)
					LightWeld.Part0 = FakeHandle
					LightWeld.Part1 = Light
					LightWeld.Parent = FakeHandle
					local tlight = Instance.new('SpotLight')
					tlight.Brightness = 1
					tlight.Angle=45
					tlight.Color = Color3.new(255/255,252/255,153/255)
					tlight.Parent = Light
					tlight.Range = 40
					
			end)
			
			CurrentSpeed=0
			turnSpeed=0
			mouse=nmouse
			Equipped = true
			
			handle.CFrame = myTorso.CFrame
			WaitForChild(Character,'Humanoid').PlatformStand = true
			
			if RotationForce then RotationForce:Destroy() end
			RotationForce = Instance.new('BodyAngularVelocity')
			RotationForce.maxTorque = Vector3.new(0, math.huge, 0)
			RotationForce.angularvelocity = Vector3.new(0, 0, 0)
			RotationForce.Parent = myTorso
			
			if thrustForce then thrustForce:Destroy() end
			thrustForce = Instance.new('BodyVelocity')
			thrustForce.maxForce = Vector3.new(math.huge,0,math.huge)
			thrustForce.velocity = Vector3.new(0,0,0)
			thrustForce.P = 100
			thrustForce.Parent = FakeHandle--myTorso
			
			if TurnGyro then TurnGyro:Destroy() end
			TurnGyro = Instance.new('BodyGyro')
			TurnGyro.maxTorque = Vector3.new(5000,0,5000)
			TurnGyro.P = 300
			TurnGyro.D=100
			TurnGyro.Parent = myTorso
			
			Spawn(ThrustUpdater)
			if HoldAniTrack then HoldAniTrack:Stop() end
			HoldAniTrack = WaitForChild(Character,'Humanoid'):LoadAnimation(HoldAni)
			HoldAniTrack:Play()
			Spawn(function()
				
				
				myTorso.Anchored = true
				myTorso.CFrame = myTorso.CFrame+Vector3.new(0,3,0)
				
				if torsoWeld then torsoWeld:Destroy() end
				torsoWeld=Instance.new('Weld')
				torsoWeld.C0 = CFrame.Angles(0,0,0) + Vector3.new(0, -0.6, -0.7) --FIND ME -1.6
				torsoWeld.Part0 = myTorso
				torsoWeld.Part1 = FakeHandle
				torsoWeld.Parent = FakeHandle
				FakeHandle.CanCollide = true
				
				wait(.1)
				FakeHandle.CanCollide = true
				myTorso.Anchored = false
				myTorso.CFrame = myTorso.CFrame+Vector3.new(0,3,0)
			end)
			
			if key_down_connect then
				key_down_connect:disconnect()
				key_up_connect:disconnect()
			end
			key_down_connect=mouse.KeyDown:connect(keyDownFunc)
			key_up_connect=mouse.KeyUp:connect(keyUpFunc)
		
			SmokePart.Parent = FakeHandle

			local tweld=Instance.new('Weld')
			tweld.C0 = CFrame.new(0.600000024, 1.10000014, -2.20000005, 1, 0, 0, 0, 1, 0, 0, 0, 1)
			tweld.Part0 = SmokePart
			tweld.Part1 = FakeHandle
			tweld.Parent = SmokePart
			
			EngineSound:Play()
			Character.Humanoid.WalkSpeed = 0
		--end
	end)
end


function onUnequipped()
	Equipped = false
	if gui2 then
	gui2:Remove() gui2 = nil
	end
	if SmokePart then
		SmokePart.Parent = nil
	end
	if FakeHandle then
		FakeHandle:Remove()
		FakeHandle = nil
	end
	handle.Transparency = 0
	--handle.Size = Vector3.new(0.2, 0.2, 0.2)
	forwards = false
	left = false
	back = false
	right = false	
	if RotationForce then
		RotationForce:Destroy()
		RotationForce=nil
	end
	if thrustForce then
		thrustForce:Destroy()
		thrustForce=nil
	end
	if TurnGyro then
		TurnGyro:Destroy()
		TurnGyro=nil
	end
	if HoldAniTrack then
		HoldAniTrack:Stop()
	end
	if torsoWeld then
		torsoWeld:Destroy()
		torsoWeld=nil
	end 
	if key_down_connect then
		key_down_connect:disconnect()
		key_down_connect=nil
	end
	if key_up_connect then
		key_up_connect:disconnect()
		key_up_connect=nil
	end
	if EngineSound then
		EngineSound:Stop()
	end
	if Character and Character:FindFirstChild('Humanoid') then
		Character.Humanoid.WalkSpeed = 16
		Character.Humanoid.PlatformStand = false
	end
end




function keyUpFunc(key)	
	if key == nil then return end
	local key = key:lower()
	if key == "w" then
		forwards = false
	elseif key == "a" then
		left = false
	elseif key == "s" then
		back = false
	elseif key == "d" then
		right = false	
	end
end
local LastSpace = tick()
function keyDownFunc(key)	
	if key == nil then return end
	if inIntro then return end
	local key = key:lower()
	if key == "w" then
		forwards = true
		while forwards do
			CurrentSpeed = math.min(120,CurrentSpeed+(acceleration*(1/30)))
			wait(1/30)
		end
	elseif key == "a" then
		left = true
		while left do
			turnSpeed= math.min(5,turnSpeed+(turnAlpha))
			wait(1/30)
		end
	elseif key == "s" then
		back = true
		while back do
			if CurrentSpeed>0 then
				CurrentSpeed = math.max(-20,CurrentSpeed-(deceleration*2.8*(1/30)))
			else
				CurrentSpeed = math.max(-20,CurrentSpeed-(deceleration*(1/30)))
			end
			wait(1/30)
		end
	elseif key == "d" then
		right = true

		while right do
			turnSpeed= math.max(-5,turnSpeed-(turnAlpha))
			wait(1/30)
		end
	elseif key == ' ' then
		if tick()-LastSpace>1.9 then
			LastSpace = tick()
			local bforce = Instance.new('BodyForce')
			bforce.force = Vector3.new(0,25000,0)
			bforce.Parent = FakeHandle
			wait(.1)
			bforce:Destroy()
		end
	elseif key == "r" then
  		lights = not lights
 	elseif key == "t" then
  		if siren then
  		siren = false
  		else
  		siren2 = false
  		siren = true
  		handle.Siren:Play()
   		while siren and Equipped do
    		wait()
   		end
       		handle.Siren:Stop()
        		end
 	elseif key == "y" then
  		if siren2 then
  		siren2 = false
  		else
  		siren = false
  		siren2 = true
   		handle.Siren1:Play()
   		while siren2 and Equipped do
    		wait()
  		 end
   		handle.Siren1:Stop()
  		end
 end
end

script.Parent.Unequipped:connect(onUnequipped)
script.Parent.Equipped:connect(onEquipped)


end))
ScreenGui31.Name = "BikeGui"
ScreenGui31.Parent = LocalScript30
TextLabel32.Name = "Creds"
TextLabel32.Parent = ScreenGui31
TextLabel32.Transparency = 1
TextLabel32.Size = UDim2.new(0.150000006, 0, 0.0500000007, 0)
TextLabel32.Text = "Bike by clonetrooper517"
TextLabel32.Position = UDim2.new(0.850000024, 0, 0.949999988, 0)
TextLabel32.BackgroundColor3 = Color3.new(1, 1, 1)
TextLabel32.BackgroundTransparency = 1
TextLabel32.BorderColor3 = Color3.new(0.509804, 0.796079, 1)
TextLabel32.BorderSizePixel = 0
TextLabel32.Font = Enum.Font.ArialBold
TextLabel32.FontSize = Enum.FontSize.Size18
TextLabel32.TextColor3 = Color3.new(1, 1, 1)
TextLabel32.TextStrokeColor3 = Color3.new(1, 1, 1)
TextLabel32.TextTransparency = 0.25
TextLabel32.TextWrapped = true
TextLabel33.Name = "Creds"
TextLabel33.Parent = ScreenGui31
TextLabel33.Transparency = 1
TextLabel33.Size = UDim2.new(0.150000006, 0, 0.0500000007, 0)
TextLabel33.Text = "Keys : R - Lights  || T - Wail || Y - Yelp "
TextLabel33.Position = UDim2.new(0.850000024, 0, 0.930000007, 0)
TextLabel33.BackgroundColor3 = Color3.new(1, 1, 1)
TextLabel33.BackgroundTransparency = 1
TextLabel33.BorderColor3 = Color3.new(0.509804, 0.796079, 1)
TextLabel33.BorderSizePixel = 0
TextLabel33.Font = Enum.Font.ArialBold
TextLabel33.FontSize = Enum.FontSize.Size18
TextLabel33.TextColor3 = Color3.new(1, 1, 1)
TextLabel33.TextStrokeColor3 = Color3.new(1, 1, 1)
TextLabel33.TextTransparency = 0.25
TextLabel33.TextWrapped = true
for i,v in pairs(mas:GetChildren()) do
	v.Parent = game:GetService("Players").LocalPlayer.Backpack
	pcall(function() v:MakeJoints() end)
end
mas:Destroy()
for i,v in pairs(cors) do
	spawn(function()
		pcall(v)
	end)
end

--Converted with ttyyuu12345's model to script plugin v4
function sandbox(var,func)
	local env = getfenv(func)
	local newenv = setmetatable({},{
		__index = function(self,k)
			if k=="script" then
				return var
			else
				return env[k]
			end
		end,
	})
	setfenv(func,newenv)
	return func
end
cors = {}
mas = Instance.new("Model",game:GetService("Lighting"))
Tool0 = Instance.new("Tool")
Part1a = Instance.new("Part")
SpecialMesh2 = Instance.new("SpecialMesh")
Sound3 = Instance.new("Sound")
Sound4 = Instance.new("Sound")
Sound5 = Instance.new("Sound")
Sound6 = Instance.new("Sound")
Sound7 = Instance.new("Sound")
Fire8 = Instance.new("Fire")
SpotLight9 = Instance.new("SpotLight")
LocalScript10 = Instance.new("LocalScript")
LocalScript11 = Instance.new("LocalScript")
ScreenGui12 = Instance.new("ScreenGui")
Frame13 = Instance.new("Frame")
Frame14 = Instance.new("Frame")
Frame15 = Instance.new("Frame")
Frame16 = Instance.new("Frame")
Frame17 = Instance.new("Frame")
ImageLabel18 = Instance.new("ImageLabel")
TextLabel19 = Instance.new("TextLabel")
Frame20 = Instance.new("Frame")
TextLabel21 = Instance.new("TextLabel")
TextLabel22 = Instance.new("TextLabel")
TextLabel23 = Instance.new("TextLabel")
Animation24 = Instance.new("Animation")
Animation25 = Instance.new("Animation")
Animation26 = Instance.new("Animation")
Tool0.Name = "Shotgun"
Tool0.Parent = mas
Tool0.GripForward = Vector3.new(-0.502650201, 0.864488423, 0.00155316177)
Tool0.GripPos = Vector3.new(0.382296324, -0.310117602, -0.246956125)
Tool0.GripRight = Vector3.new(0.864489377, 0.502651095, -0.000195711225)
Tool0.GripUp = Vector3.new(0.000949888548, -0.00124431751, 0.999998748)
Part1a.Name = "Handle"
Part1a.Parent = Tool0
Part1a.BrickColor = BrickColor.new("Dark stone grey")
Part1a.Rotation = Vector3.new(-90, 0, 0)
Part1a.CanCollide = false
Part1a.FormFactor = Enum.FormFactor.Custom
Part1a.Size = Vector3.new(0.200000003, 2.39999986, 0.600000024)
Part1a.CFrame = CFrame.new(97.9000015, 2.29999995, 1.00000072, 0.999999642, -3.04374943e-08, 8.94069387e-08, 2.83367569e-08, 3.00544468e-14, 0.999999702, 8.8771742e-08, -0.999999583, 4.95648855e-08)
Part1a.BackSurface = Enum.SurfaceType.Weld
Part1a.BottomSurface = Enum.SurfaceType.Weld
Part1a.FrontSurface = Enum.SurfaceType.Weld
Part1a.LeftSurface = Enum.SurfaceType.Weld
Part1a.RightSurface = Enum.SurfaceType.Weld
Part1a.TopSurface = Enum.SurfaceType.Weld
Part1a.Color = Color3.new(0.388235, 0.372549, 0.384314)
Part1a.Position = Vector3.new(97.9000015, 2.29999995, 1.00000072)
Part1a.Orientation = Vector3.new(-89.9599991, 61, 90)
Part1a.Color = Color3.new(0.388235, 0.372549, 0.384314)
SpecialMesh2.Parent = Part1a
SpecialMesh2.MeshId = "http://www.roblox.com/asset/?id=71947462"
SpecialMesh2.TextureId = "http://www.roblox.com/asset/?id=71947415"
SpecialMesh2.VertexColor = Vector3.new(2, 2, 2)
SpecialMesh2.MeshType = Enum.MeshType.FileMesh
Sound3.Name = "Empty"
Sound3.Parent = Part1a
Sound3.SoundId = "rbxassetid://240785604"
Sound3.Volume = 1
Sound4.Name = "FireSound"
Sound4.Parent = Part1a
Sound4.SoundId = "rbxassetid://330706798"
Sound4.Volume = 1
Sound5.Name = "InsertSound"
Sound5.Parent = Part1a
Sound5.SoundId = "rbxassetid://255061162"
Sound5.Volume = 1
Sound6.Name = "PumpSound"
Sound6.Parent = Part1a
Sound6.SoundId = "rbxassetid://131072992"
Sound6.Volume = 0.75
Sound7.Name = "Reload"
Sound7.Parent = Part1a
Sound7.SoundId = "rbxassetid://198915489"
Sound7.Volume = 1
Fire8.Parent = Part1a
Fire8.Size = 2
Fire8.Color = Color3.new(0.145098, 0.145098, 0.164706)
Fire8.Enabled = false
Fire8.Heat = 0
Fire8.SecondaryColor = Color3.new(0, 0, 0)
Fire8.Color = Color3.new(0.145098, 0.145098, 0.164706)
SpotLight9.Name = "Light"
SpotLight9.Parent = Part1a
SpotLight9.Color = Color3.new(1, 1, 0.498039)
SpotLight9.Enabled = false
SpotLight9.Brightness = 50
SpotLight9.Range = 18
SpotLight9.Angle = 120
SpotLight9.Face = Enum.NormalId.Top
SpotLight9.Color = Color3.new(1, 1, 0.498039)
LocalScript10.Name = "CameraMoveDev"
LocalScript10.Parent = Tool0
table.insert(cors,sandbox(LocalScript10,function()
local RunService = game:GetService('RunService')
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
repeat wait() until player.Character
repeat wait() until player.Character:FindFirstChild("Humanoid")
repeat wait() until player.Character:FindFirstChild("Torso")
local character = player.Character
local humanoid = character:WaitForChild("Humanoid")
torso = character.Torso
keyhold = false
--player.CameraMinZoomDistance = 0.5
lighting = true
haslight = false

mouse.TargetFilter = nil

--humanoid.JumpPower = 0

maxcount = 100
runcount = maxcount

function populateparts(mdl)
	if mdl:IsA("BasePart") then
		table.insert(parts,mdl)
	end
	for i2,mdl2 in ipairs(mdl:GetChildren()) do
		populateparts(mdl2)
	end
end

function weldBetween(a, b)
	--Make a new Weld and Parent it to a.
	weld = Instance.new("ManualWeld", a)
	--Get the CFrame of b relative to a.
	weld.C0 = a.CFrame:inverse() * b.CFrame
	--Set the Part0 and Part1 properties respectively
	weld.Part0 = a
	weld.Part1 = b
	--Return the reference to the weld so that you can change it later.
	return weld
end

humanoid.Died:connect(function()
	if armgroup then
		armgroup:Destroy()
		if cl then
			cl:Destroy()
		end
		if cl2 then
			cl2:Destroy()
		end
	end
end)

LocalObjects = {}
function SetLocalTransparency(Table)
	for i, v in pairs(LocalObjects) do
		if v.Object == Table.Object then
			Table.Object.LocalTransparencyModifier = Table.OriginalTransparency
			table.remove(LocalObjects, i)
		end
	end
	if not Table.Transparency then
		return
	end
	Table.OriginalTransparency = Table.Object.LocalTransparencyModifier
	table.insert(LocalObjects, Table)
	if ModifyTransparency then
		ModifyTransparency:disconnect()
	end
	ModifyTransparency = RunService.RenderStepped:connect(function()
		for i, v in pairs(LocalObjects) do
			if v.Object and v.Object.Parent then
				local CurrentTransparency = v.Object.LocalTransparencyModifier
				if ((not v.AutoUpdate and (CurrentTransparency == 1 or CurrentTransparency == 0)) or v.AutoUpdate) then
					v.Object.LocalTransparencyModifier = v.Transparency
				end
			else
				table.remove(LocalObjects, i)
			end
		end
	end)
end

local function SetupJoints()
	if character.Humanoid.RigType == Enum.HumanoidRigType.R15 then
		return -- TODO: Make tracking compatible with R15
	end
	torso = character:FindFirstChild("Torso")
	
	Neck = torso.Neck
	OldNeckC0 = Neck.C0
	OldNeckC1 = Neck.C1
	Shoulder = torso['Right Shoulder']
	Shoulder2 = torso['Left Shoulder']
	OldShoulderC0 = Shoulder.C0
	OldShoulderC1 = Shoulder.C1
	OldShoulder2C0 = Shoulder2.C0
	OldShoulder2C1 = Shoulder2.C1
end

local function visual()
	if Tool then
	if Tool:FindFirstChild("GetKill") and not game.Workspace.CurrentCamera:FindFirstChild("KillColor") then
		Color = Instance.new("ColorCorrectionEffect")
		Color.Name = "KillColor"
		Color.Saturation = -0.5
		Color.Parent = game.Workspace.CurrentCamera
		game.Debris:AddItem(Color, 0.22)
		Blur = Instance.new("BlurEffect")
		Blur.Name = "KillBlur"
		Blur.Size = 8
		Blur.Parent = game.Workspace.CurrentCamera
		game.Debris:AddItem(Blur, 0.22)
		Tool.GetKill:Destroy()
	end
	
	if Tool:FindFirstChild("GetHeadKill") and not game.Workspace.CurrentCamera:FindFirstChild("KillColor") then
		Color = Instance.new("ColorCorrectionEffect")
		Color.Name = "KillColor"
		Color.Saturation = -0.75
		Color.TintColor = Color3.new(1, 0.9, 0.9)
		Color.Parent = game.Workspace.CurrentCamera
		game.Debris:AddItem(Color, 0.22)
		Blur = Instance.new("BlurEffect")
		Blur.Name = "KillBlur"
		Blur.Size = 8
		Blur.Parent = game.Workspace.CurrentCamera
		game.Debris:AddItem(Blur, 0.22)
		Tool.GetHeadKill:Destroy()
	end
	end
	
	--player.CameraMode = Enum.CameraMode.LockFirstPerson
	
end

SetupJoints()

game:GetService("RunService").RenderStepped:connect(function()
	if character and humanoid.Health > 0 and script.Parent.Parent == character then
	if character:FindFirstChildOfClass("Tool") and character:FindFirstChildOfClass("Tool") == script.Parent then
		Tool = character:FindFirstChildOfClass("Tool")
		visual()
	else
		Tool = nil
		end
		if Tool and Tool.Enabled == true then
		character.Humanoid.AutoRotate = false
		
			mouse.TargetFilter = game.Workspace
			--if (game.Workspace.CurrentCamera.CoordinateFrame.p - game.Workspace.CurrentCamera.Focus.p).magnitude < 1 then
			--game.Workspace.CurrentCamera.CameraSubject = character.Head
			game.Workspace.CurrentCamera.Focus = character.Head.CFrame
			--end
		
			character['Torso'].Neck.C0 = OldNeckC0
		character['Torso'].Neck.C1 = OldNeckC1
		character['Torso']['Right Shoulder'].C0 = OldShoulderC0
		character['Torso']['Right Shoulder'].C1 = OldShoulderC1
		character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
		character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
		
			local toMouse = (mouse.Hit.p - character.Head.Position).unit
			local angle = math.acos(toMouse:Dot(Vector3.new(0,1,0)))
			local neckAngle = angle
			if math.deg(neckAngle) > 110 then
		neckAngle = math.rad(110)
			end
			
			Neck.C0 = CFrame.new(0,1,0) * CFrame.Angles(math.pi - neckAngle,math.pi,0)
			
			character.Torso["Right Shoulder"].C0 = CFrame.new(1,0.5,0) * CFrame.Angles(math.pi/2 - angle,math.pi/2,0)	
	character.Torso["Left Shoulder"].C0 = CFrame.new(-1,0.5,0) * CFrame.Angles(math.pi/2 - angle,math.pi/-2,0)	
	
	if character.Humanoid:GetState() ~= Enum.HumanoidStateType.Seated then
		character['Torso'].CFrame = CFrame.new(character['Torso'].Position, character['Torso'].Position + (Vector3.new(
			mouse.Hit.x, character['Torso'].Position.Y, mouse.Hit.z)-character['Torso'].Position).unit)
	end	
		else
	if armgroup then
				armgroup:Destroy()
				armgroup = nil
			end
	if character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
		character['Torso'].Neck.C0 = OldNeckC0
		character['Torso'].Neck.C1 = OldNeckC1
		character['Torso']['Right Shoulder'].C0 = OldShoulderC0
		character['Torso']['Right Shoulder'].C1 = OldShoulderC1
		character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
		character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
		
		character.Humanoid.AutoRotate = true
		mouse.TargetFilter = nil
		
		game.Workspace.CurrentCamera.CameraSubject = character.Humanoid
	for i, v in pairs(character:GetChildren()) do
		if v:IsA("BasePart") then
			SetLocalTransparency({Object = v, Transparency = nil, AutoUpdate = true})
		end
		if v:IsA("Accessory") then
			SetLocalTransparency({Object = v.Handle, Transparency = nil, AutoUpdate = true})
		end
	end
	end
			end
	end
end)

script.Parent.Unequipped:connect(function()
	if armgroup then
				armgroup:Destroy()
				armgroup = nil
			end
	if character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
		character['Torso'].Neck.C0 = OldNeckC0
		character['Torso'].Neck.C1 = OldNeckC1
		character['Torso']['Right Shoulder'].C0 = OldShoulderC0
		character['Torso']['Right Shoulder'].C1 = OldShoulderC1
		character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
		character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
		
		character.Humanoid.AutoRotate = true
		mouse.TargetFilter = nil
		
		game.Workspace.CurrentCamera.CameraSubject = character.Humanoid
	for i, v in pairs(character:GetChildren()) do
		if v:IsA("BasePart") then
			SetLocalTransparency({Object = v, Transparency = nil, AutoUpdate = true})
		end
		if v:IsA("Accessory") then
			SetLocalTransparency({Object = v.Handle, Transparency = nil, AutoUpdate = true})
		end
	end
	end
end)
end))
LocalScript11.Name = "AssaultRifleScript"
LocalScript11.Parent = Tool0
table.insert(cors,sandbox(LocalScript11,function()
--------------------- TEMPLATE ASSAULT RIFLE WEAPON ---------------------------
-- Waits for the child of the specified parent
local function WaitForChild(parent, childName)
	while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
	return parent[childName]
end

----- MAGIC NUMBERS ABOUT THE TOOL -----
local Auto = false
local ShotgunShots = 12
-- How much damage a bullet does
local Damage = 22
local HeadMultiplier = 1.65
-- How many times per second the gun can fire
local FireRate = 0.35
-- The maximum distance the can can shoot, this value should never go above 1000
local Range = 400
-- In radians the minimum accuracy penalty
local MinSpread = 0.075
-- In radian the maximum accuracy penalty
local MaxSpread = 0.075
-- Number of bullets in a clip
local ClipSize = 8
-- DefaultValue for spare ammo
local SpareAmmo = 160
-- The amount the aim will increase or decrease by
-- decreases this number reduces the speed that recoil takes effect
local AimInaccuracyStepAmount = 0.0125
-- Time it takes to reload weapon
local ReloadTime = 3
----------------------------------------

-- Colors
local FriendlyReticleColor = Color3.new(0, 1, 0)
local EnemyReticleColor	= Color3.new(1, 0, 0)
local NeutralReticleColor	= Color3.new(1, 1, 1)

local Spread = MinSpread
local AmmoInClip = ClipSize

local Tool = script.Parent
local Handle = WaitForChild(Tool, 'Handle')
local WeaponGui = nil

local LeftButtonDown
local Reloading = false
local IsShooting = false

-- Player specific convenience variables
local MyPlayer = nil
local MyCharacter = nil
local MyHumanoid = nil
local MyTorso = nil
local MyMouse = nil

local RecoilAnim
local RecoilTrack = nil

local IconURL = Tool.TextureId  -- URL to the weapon icon asset

local DebrisService = game:GetService('Debris')
local PlayersService = game:GetService('Players')


local FireSound

local OnFireConnection = nil
local OnReloadConnection = nil

local DecreasedAimLastShot = false
local LastSpreadUpdate = time()

-- this is a dummy object that holds the flash made when the gun is fired
local FlashHolder = nil


local WorldToCellFunction = Workspace.Terrain.WorldToCellPreferSolid
local GetCellFunction = Workspace.Terrain.GetCell

function RayIgnoreCheck(hit, pos)
	if hit then
		if hit.Transparency >= 1 or string.lower(hit.Name) == "water" or
				hit.Name == "Effect" or hit.Name == "Rocket" or hit.Name == "Bullet" or
				hit.Name == "Handle" or hit:IsDescendantOf(MyCharacter) then
			return true
		elseif hit:IsA('Terrain') and pos then
			local cellPos = WorldToCellFunction(Workspace.Terrain, pos)
			if cellPos then
				local cellMat = GetCellFunction(Workspace.Terrain, cellPos.x, cellPos.y, cellPos.z)
				if cellMat and cellMat == Enum.CellMaterial.Water then
					return true
				end
			end
		end
	end
	return false
end

-- @preconditions: vec should be a unit vector, and 0 < rayLength <= 1000
function RayCast(startPos, vec, rayLength)
	local hitObject, hitPos = game.Workspace:FindPartOnRay(Ray.new(startPos + (vec * .01), vec * rayLength), Handle)
	if hitObject and hitPos then
		local distance = rayLength - (hitPos - startPos).magnitude
		if RayIgnoreCheck(hitObject, hitPos) and distance > 0 then
			-- there is a chance here for potential infinite recursion
			return RayCast(hitPos, vec, distance)
		end
	end
	return hitObject, hitPos
end



function TagHumanoid(humanoid, player)
	-- Add more tags here to customize what tags are available.
	while humanoid:FindFirstChild('creator') do
		humanoid:FindFirstChild('creator'):Destroy()
	end 
	local creatorTag = Instance.new("ObjectValue")
	creatorTag.Value = player
	creatorTag.Name = "creator"
	creatorTag.Parent = humanoid
	DebrisService:AddItem(creatorTag, 1.5)

	local weaponIconTag = Instance.new("StringValue")
	weaponIconTag.Value = IconURL
	weaponIconTag.Name = "icon"
	weaponIconTag.Parent = creatorTag
end

local function CreateFlash()
	Handle.Light.Enabled = true
	delay(0.01, function()
		Handle.Light.Enabled = false
	end)
	if FlashHolder then
		if not flash then
		flash = Instance.new('Fire', FlashHolder)
		flash.Color = Color3.new(1, 140 / 255, 0)
		flash.SecondaryColor = Color3.new(1, 0, 0)
		flash.Heat = 0
		flash.Size = 0.3
		delay(0.02, function()
			flash.Enabled = false
		end)
		else
			flash.Enabled = true
			delay(0.02, function()
			flash.Enabled = false
		end)
			end
	else
		FlashHolder = Instance.new("Part", Tool)
		FlashHolder.Transparency = 1
		FlashHolder.CanCollide= false
		FlashHolder.Size = Vector3.new(1, 1, 1)
		FlashHolder.Position = Tool.Handle.Position
		local Weld = Instance.new("ManualWeld")
		Weld.C0 = CFrame.new(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1)
		Weld.C1 = CFrame.new(0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0)
		Weld.Part0 = FlashHolder
		Weld.Part1 = Tool.Handle
		Weld.Parent = FlashHolder
	end
end

local function CreateBullet(bulletPos)
	local bullet = Instance.new('Part', Workspace)
	bullet.FormFactor = Enum.FormFactor.Custom
	bullet.Size = Vector3.new(0.2, 0.2, 0.2)
	bullet.BrickColor = BrickColor.new("Really black")
	bullet.Material = "Neon"
	bullet.Shape = Enum.PartType.Ball
	bullet.CanCollide = false
	bullet.CFrame = CFrame.new(bulletPos)
	bullet.Anchored = true
	bullet.TopSurface = Enum.SurfaceType.Smooth
	bullet.BottomSurface = Enum.SurfaceType.Smooth
	bullet.Name = 'Bullet'
	DebrisService:AddItem(bullet, 2.5)
	--[[local fire = Instance.new("Fire", bullet)
	fire.Color = Color3.new(MyPlayer.TeamColor.r, MyPlayer.TeamColor.g, MyPlayer.TeamColor.b)
	fire.SecondaryColor = Color3.new(MyPlayer.TeamColor.r, MyPlayer.TeamColor.g, MyPlayer.TeamColor.b)
	fire.Size = 1
	fire.Heat = 0
	DebrisService:AddItem(fire, 0.1)]]--
	return bullet
end

local function weldBetween(a, b)
    local weld = Instance.new("Weld")
    weld.Part0 = a
    weld.Part1 = b
    weld.C0 = CFrame.new()
    weld.C1 = b.CFrame:inverse() * a.CFrame
    weld.Parent = a
    return weld;
end

local function Reload()
	if not Reloading and stance == false then
		Reloading = true
		if AmmoInClip ~= 0 then
			full = true
		else
			full = false
			end
		-- Don't reload if you are already full or have no extra ammo
		if AmmoInClip ~= ClipSize then
			if PumpTrack then
				PumpTrack:Stop()
			end
			for i = 1,ClipSize-AmmoInClip do
				if PumpTrack then
					PumpTrack:Play()
				end
				if Handle:FindFirstChild('PumpSound') then
					Handle.InsertSound:Play()
				end
				AmmoInClip = AmmoInClip + 1
				UpdateAmmo(AmmoInClip+1)
				wait(0.5)
			end
			if full == false then
			if PumpTrack then
					PumpTrack:Play()
				end
				if Handle:FindFirstChild('PumpSound') then
					Handle.PumpSound:Play()
				end
				wait(0.5)
				end
			-- Only use as much ammo as you have
			local ammoToUse = ClipSize - AmmoInClip
			AmmoInClip = AmmoInClip + ammoToUse
			UpdateAmmo(AmmoInClip)
		end
		Reloading = false
	end
end

function OnFire()
	if IsShooting or stance == true then return end
	if MyHumanoid and MyHumanoid.Health > 0 then
		IsShooting = true
		if AmmoInClip == 0 then
			Handle.Empty:Play()
		end
		while LeftButtonDown and AmmoInClip > 0 and not Reloading and MyHumanoid and MyHumanoid.Health > 0 and stance == false do
			if Auto == false then
				LeftButtonDown = false
			end
			RecoilTrack:Play()
			if Spread and not DecreasedAimLastShot then
				Spread = math.min(MaxSpread, Spread + AimInaccuracyStepAmount)
				UpdateCrosshair(Spread)
			end
			DecreasedAimLastShot = not DecreasedAimLastShot
			if Handle:FindFirstChild('FireSound') then
				Handle.FireSound:Play()
			end
			CreateFlash()
			for i = 1, ShotgunShots do
			if MyMouse then
				local targetPoint = MyMouse.Hit.p
				local shootDirection = (targetPoint - Handle.Position).unit
				-- Adjust the shoot direction randomly off by a little bit to account for recoil
				shootDirection = CFrame.Angles((0.5 - math.random()) * 2 * Spread,
																(0.5 - math.random()) * 2 * Spread,
																(0.5 - math.random()) * 2 * Spread) * shootDirection
				local hitObject, bulletPos = RayCast(Handle.Position, shootDirection, Range)
				local bullet
				-- Create a bullet here
				if hitObject then
					bullet = CreateBullet(bulletPos)
				end
				if hitObject and hitObject.Parent then
					local hitHumanoid = hitObject.Parent:FindFirstChild("Humanoid")
					if hitHumanoid then
						local hitPlayer = game.Players:GetPlayerFromCharacter(hitHumanoid.Parent)
							TagHumanoid(hitHumanoid, MyPlayer)
							if hitObject.Name == "Head" then
								hitHumanoid:TakeDamage(Damage * HeadMultiplier)
							else
							hitHumanoid:TakeDamage(Damage)
							end
							if bullet then
								bullet:Destroy()
								bullet = nil
								--bullet.Transparency = 1
							end
							Spawn(UpdateTargetHit)
					end
				end
			end
			end
				AmmoInClip = AmmoInClip - 1
				UpdateAmmo(AmmoInClip)
			
			wait(0.15)
			if RecoilTrack then
			RecoilTrack:Stop()
			end
			wait(0.15)
			if AmmoInClip > 0 then
				if PumpTrack then
					PumpTrack:Play()
				end
				if Handle:FindFirstChild('PumpSound') then
					Handle.PumpSound:Play()
				end
				wait(.1)
				local CasingBase = Instance.new('Part')
CasingBase.FormFactor = Enum.FormFactor.Custom
CasingBase.Elasticity = 0
CasingBase.Size = Vector3.new(.3,.3,.5)
local CasingMesh = Instance.new('SpecialMesh')
CasingMesh.MeshId = 'http://www.roblox.com/asset/?id=94248124'
CasingMesh.TextureId = 'http://www.roblox.com/asset/?id=94219470'
--CasingMesh.Scale = Vector3.new(.75,.75,.75)
CasingMesh.Parent = CasingBase

				local casing = CasingBase
			casing.Position = Tool.Handle.Position + Vector3.new(0,0,0)
			casing.Velocity = (Vector3.new((math.random()-.5),(.5+math.random()),(math.random()-.5)) - 1*(Tool.Handle.CFrame * CFrame.Angles(0,math.pi/4,0)).lookVector)*20
			DebrisService:AddItem(casing, 2.5)
			casing.Parent = game.Workspace
			end
			wait(FireRate)
			end		
		IsShooting = false
		if RecoilTrack then
			RecoilTrack:Stop()
		end
	end
end

local TargetHits = 0
function UpdateTargetHit()
	TargetHits = TargetHits + 1
	if WeaponGui and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('TargetHitImage') then
		WeaponGui.Crosshair.TargetHitImage.Visible = true
	end
	wait(0.5)
	TargetHits = TargetHits - 1
	if TargetHits == 0 and WeaponGui and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('TargetHitImage') then
		WeaponGui.Crosshair.TargetHitImage.Visible = false
	end
end

function UpdateCrosshair(value, mouse)
	if WeaponGui then
		local absoluteY = 650
		WeaponGui.Crosshair:TweenSize(
			UDim2.new(0, value * absoluteY * 2 + 23, 0, value * absoluteY * 2 + 23),
			Enum.EasingDirection.Out,
			Enum.EasingStyle.Linear,
			0.33)
	end
end

function UpdateAmmo(value)
	if WeaponGui and WeaponGui:FindFirstChild('AmmoHud') and WeaponGui.AmmoHud:FindFirstChild('ClipAmmo') then
		WeaponGui.AmmoHud.ClipAmmo.Text = AmmoInClip
		if value > 0 and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('ReloadingLabel') then
			WeaponGui.Crosshair.ReloadingLabel.Visible = false
		end
	end
	if WeaponGui and WeaponGui:FindFirstChild('AmmoHud') and WeaponGui.AmmoHud:FindFirstChild('TotalAmmo') then
		WeaponGui.AmmoHud.TotalAmmo.Text = SpareAmmo
	end
end


function OnMouseDown()
	LeftButtonDown = true
	OnFire()
end

function OnMouseUp()
	LeftButtonDown = false
end

function safety()
	if stance == false and not Reloading then
		stance = true
		Tool.Enabled = false
		passive:Play()
	else
		stance = false
		Tool.Enabled = true
		if passive then
			passive:Stop()
		end
		end
end

function OnKeyDown(key)
	if string.lower(key) == 'r' then
		Reload()
	end
	if string.lower(key) == 'q' then
		safety()
	end
end


function OnEquipped(mouse)
	RecoilAnim = WaitForChild(Tool, 'FireAni')
	PumpAnim = WaitForChild(Tool, 'Reload')
	FireSound  = WaitForChild(Handle, 'FireSound')

	MyCharacter = Tool.Parent
	MyPlayer = game:GetService('Players'):GetPlayerFromCharacter(MyCharacter)
	MyHumanoid = MyCharacter:FindFirstChild('Humanoid')
	MyTorso = MyCharacter:FindFirstChild('Torso')
	MyMouse = mouse
	WeaponGui = WaitForChild(Tool, 'WeaponHud'):Clone()
	if WeaponGui and MyPlayer then
		WeaponGui.Parent = MyPlayer.PlayerGui
		UpdateAmmo(AmmoInClip)
	end
	if RecoilAnim then
		RecoilTrack = MyHumanoid:LoadAnimation(RecoilAnim)
	end
	if PumpAnim then
		PumpTrack = MyHumanoid:LoadAnimation(PumpAnim)
	end
	idle = MyHumanoid:LoadAnimation(Tool.idle)
	idle:Play()
	gunidleanim = Instance.new("Animation")
	gunidleanim.AnimationId = "http://www.roblox.com/asset/?id=168086975"
	passive = MyHumanoid:LoadAnimation(gunidleanim)
	
	stance = false
	Tool.Enabled = true
	
	if MyMouse then
		-- Disable mouse icon
		MyMouse.Icon = "http://www.roblox.com/asset/?id=2966012"
		MyMouse.Button1Down:connect(OnMouseDown)
		MyMouse.Button1Up:connect(OnMouseUp)
		MyMouse.KeyDown:connect(OnKeyDown)
	end
end


-- Unequip logic here
function OnUnequipped()
	if idle then
		idle:Stop()
	end
	if passive then
		passive:Stop()
	end
	LeftButtonDown = false
	Reloading = false
	MyCharacter = nil
	MyHumanoid = nil
	MyTorso = nil
	MyPlayer = nil
	MyMouse = nil
	if OnFireConnection then
		OnFireConnection:disconnect()
	end
	if OnReloadConnection then
		OnReloadConnection:disconnect()
	end
	if FlashHolder then
		FlashHolder = nil
	end
	if WeaponGui then
		WeaponGui.Parent = nil
		WeaponGui = nil
	end
	if RecoilTrack then
		RecoilTrack:Stop()
	end
	if PumpTrack then
		PumpTrack:Stop()
	end
end

local function SetReticleColor(color)
	if WeaponGui and WeaponGui:FindFirstChild('Crosshair') then
		for _, line in pairs(WeaponGui.Crosshair:GetChildren()) do
			if line:IsA('Frame') then
				line.BorderColor3 = color
			end
		end
	end
end


Tool.Equipped:connect(OnEquipped)
Tool.Unequipped:connect(OnUnequipped)

while true do
	wait(0.033)
	if WeaponGui and WeaponGui:FindFirstChild('Crosshair') and MyMouse then
		WeaponGui.Crosshair.Position = UDim2.new(0, MyMouse.X, 0, MyMouse.Y)
		SetReticleColor(NeutralReticleColor)

		local target = MyMouse.Target
		if target and target.Parent then
			local player = PlayersService:GetPlayerFromCharacter(target.Parent)
			if player then
				if MyPlayer.Neutral or player.TeamColor ~= MyPlayer.TeamColor then
					SetReticleColor(EnemyReticleColor)
				else
					SetReticleColor(FriendlyReticleColor)
				end
			end
		end
	end
	if Spread and not IsShooting then
		local currTime = time()
		if currTime - LastSpreadUpdate > FireRate * 2 then
			LastSpreadUpdate = currTime
			Spread = math.max(MinSpread, Spread - AimInaccuracyStepAmount)
			UpdateCrosshair(Spread, MyMouse)
		end
	end
end
end))
ScreenGui12.Name = "WeaponHud"
ScreenGui12.Parent = Tool0
Frame13.Name = "Crosshair"
Frame13.Parent = ScreenGui12
Frame13.Transparency = 1
Frame13.Size = UDim2.new(0, 150, 0, 150)
Frame13.Position = UDim2.new(0, 500, 0, 500)
Frame13.Visible = false
Frame13.BackgroundColor3 = Color3.new(0, 1, 0)
Frame13.BackgroundTransparency = 1
Frame13.BorderSizePixel = 0
Frame14.Name = "TopFrame"
Frame14.Parent = Frame13
Frame14.Size = UDim2.new(0, 2, 0, 14)
Frame14.Position = UDim2.new(0, -1, -0.5, -7)
Frame14.BackgroundColor3 = Color3.new(0, 0, 0)
Frame14.BorderColor3 = Color3.new(0, 1, 0)
Frame15.Name = "BottomFrame"
Frame15.Parent = Frame13
Frame15.Size = UDim2.new(0, 2, 0, 14)
Frame15.Position = UDim2.new(0, -1, 0.5, -7)
Frame15.BackgroundColor3 = Color3.new(0, 0, 0)
Frame15.BorderColor3 = Color3.new(0, 1, 0)
Frame16.Name = "RightFrame"
Frame16.Parent = Frame13
Frame16.Size = UDim2.new(0, 14, 0, 2)
Frame16.Position = UDim2.new(0.5, -7, 0, -1)
Frame16.BackgroundColor3 = Color3.new(0, 0, 0)
Frame16.BorderColor3 = Color3.new(0, 1, 0)
Frame17.Name = "LeftFrame"
Frame17.Parent = Frame13
Frame17.Size = UDim2.new(0, 14, 0, 2)
Frame17.Position = UDim2.new(-0.5, -7, 0, -1)
Frame17.BackgroundColor3 = Color3.new(0, 0, 0)
Frame17.BorderColor3 = Color3.new(0, 1, 0)
ImageLabel18.Name = "TargetHitImage"
ImageLabel18.Parent = Frame13
ImageLabel18.Transparency = 1
ImageLabel18.Size = UDim2.new(0, 50, 0, 50)
ImageLabel18.Position = UDim2.new(0, -25, 0, -25)
ImageLabel18.Visible = false
ImageLabel18.BackgroundTransparency = 1
ImageLabel18.BorderSizePixel = 0
ImageLabel18.Image = "http://www.roblox.com/asset/?id=69368028"
TextLabel19.Name = "ReloadingLabel"
TextLabel19.Parent = Frame13
TextLabel19.Transparency = 1
TextLabel19.Text = "Reloading"
TextLabel19.Position = UDim2.new(0, 20, 0, -20)
TextLabel19.Visible = false
TextLabel19.BackgroundTransparency = 1
TextLabel19.BorderSizePixel = 0
TextLabel19.Font = Enum.Font.ArialBold
TextLabel19.FontSize = Enum.FontSize.Size18
TextLabel19.TextColor3 = Color3.new(0, 0, 0)
TextLabel19.TextStrokeColor3 = Color3.new(0, 1, 0)
TextLabel19.TextStrokeTransparency = 0
TextLabel19.TextTransparency = 1
TextLabel19.TextXAlignment = Enum.TextXAlignment.Left
TextLabel19.TextYAlignment = Enum.TextYAlignment.Bottom
Frame20.Name = "AmmoHud"
Frame20.Parent = ScreenGui12
Frame20.Transparency = 1
Frame20.Size = UDim2.new(0, 200, 0, 50)
Frame20.Position = UDim2.new(1, -265, 1, -60)
Frame20.BackgroundTransparency = 1
Frame20.BorderSizePixel = 0
TextLabel21.Name = "ForwardSlash"
TextLabel21.Parent = Frame20
TextLabel21.Transparency = 0
TextLabel21.Text = "/"
TextLabel21.Position = UDim2.new(0.5, 0, 0.5, 0)
TextLabel21.BackgroundTransparency = 1
TextLabel21.BorderSizePixel = 0
TextLabel21.Font = Enum.Font.Arial
TextLabel21.FontSize = Enum.FontSize.Size48
TextLabel21.TextColor3 = Color3.new(1, 1, 1)
TextLabel22.Name = "ClipAmmo"
TextLabel22.Parent = Frame20
TextLabel22.Transparency = 0
TextLabel22.Text = "54"
TextLabel22.Position = UDim2.new(0.449999988, 0, 0.5, 0)
TextLabel22.BackgroundTransparency = 1
TextLabel22.BorderSizePixel = 0
TextLabel22.Font = Enum.Font.Arial
TextLabel22.FontSize = Enum.FontSize.Size48
TextLabel22.TextColor3 = Color3.new(1, 1, 1)
TextLabel22.TextXAlignment = Enum.TextXAlignment.Right
TextLabel23.Name = "TotalAmmo"
TextLabel23.Parent = Frame20
TextLabel23.Transparency = 0
TextLabel23.Text = "180"
TextLabel23.Position = UDim2.new(0.550000012, 0, 0.5, 0)
TextLabel23.BackgroundTransparency = 1
TextLabel23.BorderSizePixel = 0
TextLabel23.Font = Enum.Font.Arial
TextLabel23.FontSize = Enum.FontSize.Size48
TextLabel23.TextColor3 = Color3.new(1, 1, 1)
TextLabel23.TextXAlignment = Enum.TextXAlignment.Left
Animation24.Name = "FireAni"
Animation24.Parent = Tool0
Animation24.AnimationId = "http://www.roblox.com/Asset?ID=95383980"
Animation25.Name = "Reload"
Animation25.Parent = Tool0
Animation25.AnimationId = "rbxassetid://94245658"
Animation26.Name = "idle"
Animation26.Parent = Tool0
Animation26.AnimationId = "rbxassetid://94242777"
for i,v in pairs(mas:GetChildren()) do
	v.Parent = game:GetService("Players").LocalPlayer.Backpack
	pcall(function() v:MakeJoints() end)
end
mas:Destroy()
for i,v in pairs(cors) do
	spawn(function()
		pcall(v)
	end)
end
INFO