Pinkstack/roblox-luau-corpus-text huggingface dataset:
--easter egg


mouse.KeyDown:connect(function(key)
	if key=="o" then
		Heat = BlowupTemp-11
	end
end)

if not FE then
	radiator.Oil.Enabled = false
	radiator.Antifreeze.Enabled = false
	radiator.Liquid.Volume = 0
	radiator.Fan:Play()
	radiator.Fan.Pitch = 1+FanSpeed
	radiator.Steam:Play()
	radiator.Liquid:Play()
	car.DriveSeat.Blown.Value = false
	while wait(.2) do
		if Heat > FanTemp and Fan == true then
			FanCool = -FanSpeed
			radiator.Fan.Volume = FanVolume
		else
			FanCool = 0
			radiator.Fan.Volume = 0
		end
	
		
		Load = ((script.Parent.Values.Throttle.Value*script.Parent.Values.RPM.Value*10*OverheatSpeed)/math.ceil((car.DriveSeat.Velocity.magnitude+.0000001)/100)/75000)-CoolingEfficiency
		Heat = math.max(RunningTemp,(Heat+Load)+FanCool)
		
		if Heat >= BlowupTemp then
			Heat = BlowupTemp
			radiator.Break:Play()
			radiator.Liquid.Volume = .5
			radiator.Oil.Enabled = true
			radiator.Antifreeze.Enabled = true
			script.Parent.IsOn.Value = false
			car.DriveSeat.Blown.Value = true
		elseif Heat >= BlowupTemp-10 then
			radiator.Smoke.Transparency = NumberSequence.new((BlowupTemp-Heat)/10,1)
			radiator.Smoke.Enabled = true
			radiator.Steam.Volume = math.abs(((BlowupTemp-Heat)-10)/10)
		else
			radiator.Smoke.Enabled = false
			radiator.Steam.Volume = 0
		end
		
		car.DriveSeat.Celsius.Value = Heat
	end
else

	handler:FireServer("Initialize",FanSpeed)
	while wait(.2) do
		
		if Heat > FanTemp and Fan == true then
			FanCool = -FanSpeed
			handler:FireServer("FanVolume",FanVolume)
		else
			FanCool = 0
			handler:FireServer("FanVolume",0)
		end
		
		Load = ((script.Parent.Values.Throttle.Value*script.Parent.Values.RPM.Value*10*OverheatSpeed)/math.ceil((car.DriveSeat.Velocity.magnitude+.0000001)/100)/75000)-CoolingEfficiency
		Heat = math.max(RunningTemp,(Heat+Load)+FanCool)
		
		if Heat >= BlowupTemp then
			Heat = BlowupTemp
			handler:FireServer("Blown")
			script.Parent.IsOn.Value = false
			car.DriveSeat.Blown.Value = true
		elseif Heat >= BlowupTemp-10 then
			handler:FireServer("Smoke",true,BlowupTemp,Heat)
		else
			handler:FireServer("Smoke",false,BlowupTemp,Heat)
		end
		
		car.DriveSeat.Celsius.Value = Heat
	end
end
--edit the function below to return true when you want this response/prompt to be valid
--player is the player speaking to the dialogue, and dialogueFolder is the object containing the dialogue data


return function(player, dialogueFolder)
	local plrData = require(game.ReplicatedStorage.Source.Modules.Util):GetPlayerData(player)
	return plrData.Classes.Base.Paladin.Obtained.Value == true
end
--[[[Default Controls]]


	--Peripheral Deadzones
	Tune.Peripherals = {
		MSteerWidth				= 67		,	-- Mouse steering control width	(0 - 100% of screen width)
		MSteerDZone				= 10		,	-- Mouse steering deadzone (0 - 100%)
		
		ControlLDZone			= 5			,	-- Controller steering L-deadzone (0 - 100%)
		ControlRDZone			= 5			,	-- Controller steering R-deadzone (0 - 100%)
	}
	
	--Control Mapping
	Tune.Controls = {
		
	--Keyboard Controls
		--Mode Toggles
		ToggleTCS				= Enum.KeyCode.T					,
		ToggleABS				= Enum.KeyCode.Y					,
		ToggleTransMode			= Enum.KeyCode.M					,
		ToggleMouseDrive		= Enum.KeyCode.R					,
		
		--Primary Controls
		Throttle				= Enum.KeyCode.W					,
		Brake					= Enum.KeyCode.S					,
		SteerLeft				= Enum.KeyCode.A					,
		SteerRight				= Enum.KeyCode.D   				    ,
		
		--Secondary Controls
		Throttle2				= Enum.KeyCode.B 					,
		Brake2					= Enum.KeyCode.N					,
		SteerLeft2				= Enum.KeyCode.M 	 				,
		SteerRight2				= Enum.KeyCode.V					,
		
		--Manual Transmission
		ShiftUp					= Enum.KeyCode.E					,
		ShiftDown				= Enum.KeyCode.Q					,
		Clutch					= Enum.KeyCode.LeftControl     			,
		
		--Handbrake
		PBrake					= Enum.KeyCode.P			,
		
	--Mouse Controls
		MouseThrottle			= Enum.UserInputType.MouseButton1	,
		MouseBrake				= Enum.UserInputType.MouseButton2	,
		MouseClutch				= Enum.KeyCode.W					,
		MouseShiftUp			= Enum.KeyCode.E					,
		MouseShiftDown			= Enum.KeyCode.Q					,
		MousePBrake				= Enum.KeyCode.LeftShift			,
		
	--Controller Mapping
		ContlrThrottle			= Enum.KeyCode.ButtonR2				,
		ContlrBrake				= Enum.KeyCode.ButtonL2				,
		ContlrSteer				= Enum.KeyCode.Thumbstick1			,
		ContlrShiftUp			= Enum.KeyCode.ButtonY				,
		ContlrShiftDown			= Enum.KeyCode.ButtonX				,
		ContlrClutch			= Enum.KeyCode.ButtonR1				,
		ContlrPBrake			= Enum.KeyCode.ButtonL1				,
		ContlrToggleTMode		= Enum.KeyCode.DPadUp				,
		ContlrToggleTCS			= Enum.KeyCode.DPadDown				,
		ContlrToggleABS			= Enum.KeyCode.DPadRight			,
	}
----------------------------------------------------------------------------------------------------
-------------------=[ PROJETIL ]=-------------------------------------------------------------------
----------------------------------------------------------------------------------------------------


	,Distance = 10000
	,BDrop = .25
	,BSpeed = 2200

	,SuppressMaxDistance = 25	--- Studs
	,SuppressTime = 10			--- Seconds

	,BulletWhiz = true
	,BWEmitter = 25
	,BWMaxDistance = 200
	
	,BulletFlare = false
	,BulletFlareColor = Color3.fromRGB(255,255,255)

	,Tracer = true
	,TracerColor = Color3.fromRGB(255,255,255)
	,TracerLightEmission = 1
	,TracerLightInfluence = 0
	,TracerLifeTime = .2
	,TracerWidth = .1
	,RandomTracer = false
	,TracerEveryXShots = 1
	,TracerChance = 100
	
	,BulletLight = false
	,BulletLightBrightness = 1
	,BulletLightColor = Color3.fromRGB(255,255,255)
	,BulletLightRange = 10

	,ExplosiveHit = false
	,ExPressure = 500
	,ExpRadius = 25
	,DestroyJointRadiusPercent = 0	--- Between 0 & 1
	,ExplosionDamage = 100

	,LauncherDamage = 100
	,LauncherRadius = 25
	,LauncherPressure = 500
	,LauncherDestroyJointRadiusPercent = 0
--				{ id = "slash.xml", weight = 10 } 


			},
	toollunge = {
				{ id = "http://www.roblox.com/asset/?id=507768375", weight = 10 } 
			},
	wave = {
				{ id = "http://www.roblox.com/asset/?id=507770239", weight = 10 } 
			},
	point = {
				{ id = "http://www.roblox.com/asset/?id=507770453", weight = 10 } 
			},
	dance = {
				{ id = "http://www.roblox.com/asset/?id=507771019", weight = 10 }, 
				{ id = "http://www.roblox.com/asset/?id=507771955", weight = 10 }, 
				{ id = "http://www.roblox.com/asset/?id=507772104", weight = 10 } 
			},
	dance2 = {
				{ id = "http://www.roblox.com/asset/?id=507776043", weight = 10 }, 
				{ id = "http://www.roblox.com/asset/?id=507776720", weight = 10 }, 
				{ id = "http://www.roblox.com/asset/?id=507776879", weight = 10 } 
			},
	dance3 = {
				{ id = "http://www.roblox.com/asset/?id=507777268", weight = 10 }, 
				{ id = "http://www.roblox.com/asset/?id=507777451", weight = 10 }, 
				{ id = "http://www.roblox.com/asset/?id=507777623", weight = 10 } 
			},
	laugh = {
				{ id = "http://www.roblox.com/asset/?id=507770818", weight = 10 } 
			},
	cheer = {
				{ id = "http://www.roblox.com/asset/?id=507770677", weight = 10 } 
			},
}
--[=[
	@within TableUtil
	@function SwapRemove
	@param tbl table -- Array
	@param i number -- Index

	Removes index `i` in the table by swapping the value at `i` with
	the last value in the array, and then trimming off the last
	value from the array.

	This allows removal of the value at `i` in `O(1)` time, but does
	not preserve array ordering. If a value needs to be removed from
	an array, but ordering of the array does not matter, using
	`SwapRemove` is always preferred over `table.remove`.

	In the following example, we remove "B" at index 2. SwapRemove does
	this by moving the last value "E" over top of "B", and then trimming
	off "E" at the end of the array:
	```lua
	local t = {"A", "B", "C", "D", "E"}
	TableUtil.SwapRemove(t, 2) -- Remove "B"
	print(t) --> {"A", "E", "C", "D"}
	```

	:::note Arrays only
	This function works on arrays, but not dictionaries.
]=]


local function SwapRemove<T>(t: { T }, i: number)
	local n = #t
	t[i] = t[n]
	t[n] = nil
end
--[[
	DataStore2: A wrapper for data stores that caches, saves player's data, and uses berezaa's method of saving data.
	Use require(1936396537) to have an updated version of DataStore2.

	DataStore2(dataStoreName, player) - Returns a DataStore2 DataStore

	DataStore2 DataStore:
	- Get([defaultValue])
	- Set(value)
	- Update(updateFunc)
	- Increment(value, defaultValue)
	- BeforeInitialGet(modifier)
	- BeforeSave(modifier)
	- Save()
	- SaveAsync()
	- OnUpdate(callback)
	- BindToClose(callback)

	local coinStore = DataStore2("Coins", player)

	To give a player coins:

	coinStore:Increment(50)

	To get the current player's coins:

	coinStore:Get()
--]]
-- << SETUP >>


if main.device ~= "Mobile" then
	local newY = 90
	template.Position = UDim2.new(1, 0, 1, -newY)
	template.Size = UDim2.new(0, 2.73*newY, 0, newY)
	template.Desc.UITextSizeConstraint.MaxTextSize = 17 + (newY-77)*0.25
end
--		child.C0 = CFrame.new(0,-0.6,0)*CFrame.fromEulerAnglesXYZ(-(math.pi/2),0,0) --// Reposition player


		if child.Part1.Name == "HumanoidRootPart" then
			player = game.Players:GetPlayerFromCharacter(child.Part1.Parent)
			if player and (not player.PlayerGui:FindFirstChild("Screen")) then --// The part after the "and" prevents multiple GUI's to be copied over.
				GUI.CarSeat.Value = script.Parent --// Puts a reference of the seat in this ObjectValue, now you can use this ObjectValue's value to find the car directly.
				GUI:Clone().Parent = player.PlayerGui --// Compact version
				script.Parent.Parent.Body.Lights.Runner.Material = "Neon"
				script.Parent.Parent.Body.Dash.Tac.G.Enabled = true
				script.Parent.Parent.Body.Dash.DashSc.G.Enabled = true
				script.Parent.Parent.Body.Dash.Scr.G.Enabled = true
			end
		end
	end
end)

script.Parent.ChildRemoved:connect(function(child)
	if child:IsA("Weld") then
		if child.Part1.Name == "HumanoidRootPart" then
			game.Workspace.CurrentCamera.FieldOfView = 70
			player = game.Players:GetPlayerFromCharacter(child.Part1.Parent)
			if player and player.PlayerGui:FindFirstChild("SS3") then
				player.PlayerGui:FindFirstChild("SS3"):Destroy()
				script.Parent.Parent.Body.Lights.Runner.Material = "SmoothPlastic"
				script.Parent.Parent.Body.Dash.Tac.G.Enabled = false
				script.Parent.Parent.Body.Dash.DashSc.G.Enabled = false
				script.Parent.Parent.Body.Dash.Scr.G.Enabled = false
			end
		end
	end	
end)
-- Update the cutscene every render frame


RunService.RenderStepped:Connect(function(Delta)
	Demo:Update(Delta)
end)

if PlayOnPlayerJoin and PlayOnPlayerJoin.Value then
	-- Play the cutscene
	PlayCutscene()
end

if PlayOnPartTouch then
	local part = script.PlayOnPartTouch.Value
	if part and part:IsA("BasePart") then
		part.Touched:Connect(function(hit)
			if hit.Parent == Player.Character then
				PlayCutscene()
			end
		end)
	end
	PlayOnPartTouch:Destroy()
end

if PlayOnEventFire then
	local e = PlayOnEventFire.Value
	if e and e:IsA("BindableEvent") then
		e.Event:Connect(PlayCutscene)
	end
	PlayOnEventFire:Destroy()
end

if PlayOnRemoteEventFire then
	local e = PlayOnRemoteEventFire.Value
	if e and e:IsA("RemoteEvent") then
		e.OnClientEvent:Connect(PlayCutscene)
	end
	PlayOnRemoteEventFire:Destroy()
end

if StopOnRemoteEventFire then
	local e = StopOnRemoteEventFire.Value
	if e and e:IsA("RemoteEvent") then
		e.OnClientEvent:Connect(function()
			Demo:Stop()
		end)
	end
	StopOnRemoteEventFire:Destroy()
end

if StopOnRemoteEventFire then
	local e = StopOnRemoteEventFire.Value
	if e and e:IsA("RemoteEvent") then
		e.OnClientEvent:Connect(function()
			Demo:Stop()
		end)
	end
	StopOnRemoteEventFire:Destroy()
end

local Character = Player.Character or Player.CharacterAdded:Wait()

if PlayOnCharacterDied and PlayOnCharacterDied.Value then
	local Humanoid = Character:WaitForChild("Humanoid")
	Character:WaitForChild("Humanoid").Died:Connect(function()
		PlayCutscene()
	end)
end
PlayCutscene()
--s.Pitch = 0.7
--[[for x = 1, 50 do
s.Pitch = s.Pitch + 0.20 1.900
s:play()
wait(0.001)
end]]
--[[Chopper level 5=1.2, Chopper level 4=1.04]]


	s.Volume=1
while s.Pitch<1 do
s.Pitch=s.Pitch+0.02
s:Play()
if s.Pitch>1 then
	s.Pitch=1
end
wait(-9)
end

while true do
for x = 1, 500 do
s:play()
wait(-9)
end
end
-- Change to variable


local TrickleDeleteScene = function(Obj, Time, timeMockLib)
	-- Used for testing
	local taskLib = timeMockLib or task
	RunService = timeMockLib or RunService

	-- Give the Object a PrimaryPart(and put it inside a Model)
	local Model = GiveObjectPrimaryPart(Obj)
	-- Move the Model far away so players don't see it unloading
	Model:SetPrimaryPartCFrame(CFrame.new(Vector3.new(20000, 300, math.random(-10000, 10000))))

	-- Set time to the default if no time is given
	Time = Time or DefaultTime

	-- Sort all descendants into two lists, and calculate how many instances are to be deleted.
	-- (We ignore Models and Folders during initial delete pass. These are all deleted together at the end. - (Unless they are a child of another instance which is deleted)
	local PriorityDelete = {}
	local RemainingToDelete = {}
	local TotalToDeleteNum = 0
	for _, Descendant in pairs(Obj:GetDescendants()) do
		if Descendant.ClassName ~= "Model" and Descendant.ClassName ~= "Folder" then
			if PriorityDeleteTypes[Descendant.ClassName] then
				PriorityDelete[#PriorityDelete + 1] = Descendant
			else
				RemainingToDelete[#RemainingToDelete + 1] = Descendant
			end
			TotalToDeleteNum += 1
		end
	end

	-- Setup variables for the next step
	local TimeTaken = 0
	local PriorityCleared = false
	local RemainingToDeleteCleared = false
	if TotalToDeleteNum > 50000 then
		warn("Deleting more than 50k instances can cause a buffer overflow!!")
	end
	Time = math.max(Time, TotalToDeleteNum / 10000) -- Deleting too many parts per frame causes the buffers to overflow.

	-- Delete all the items, first in the priority list and then the rest of the items.
	local LastDeleteGoal = 0
	local HeartbeatConnection
	HeartbeatConnection = RunService.Heartbeat:Connect(function(Delta)
		TimeTaken += Delta
		local DeleteGoal = (TimeTaken / Time) * TotalToDeleteNum
		local ToDeleteThisRound = math.ceil(DeleteGoal - LastDeleteGoal)
		LastDeleteGoal = DeleteGoal

		if not PriorityCleared then
			if #PriorityDelete <= 0 then
				PriorityCleared = true
			else
				PriorityCleared = DeleteAmountOfObjectsInTable(PriorityDelete, ToDeleteThisRound)
				if not PriorityCleared then
					return
				end
			end
		end

		if not RemainingToDeleteCleared then
			if #RemainingToDelete <= 0 then
				RemainingToDeleteCleared = true
				Model:Destroy()
				HeartbeatConnection:Disconnect()
			else
				RemainingToDeleteCleared = DeleteAmountOfObjectsInTable(RemainingToDelete, ToDeleteThisRound)
				if not RemainingToDeleteCleared then
					return
				else
					Model:Destroy()
					HeartbeatConnection:Disconnect()
				end
			end
		else
			Model:Destroy()
			HeartbeatConnection:Disconnect()
		end
	end)

	repeat
		taskLib.wait()
	until PriorityCleared
end

return TrickleDeleteScene
-- Make Connection strict


setmetatable(Connection, {
	__index = function(_tb, key)
		error(("Attempt to get Connection::%s (not a valid member)"):format(tostring(key)), 2)
	end,
	__newindex = function(_tb, key, _value)
		error(("Attempt to set Connection::%s (not a valid member)"):format(tostring(key)), 2)
	end,
})
-- ROBLOX TODO: upstream is `MatcherState &`, which is from `expect` package, but would result in a circular rotriever dependency


export type Context = Object

export type MatchSnapshotConfig = {
	context: Context,
	hint: string?,
	inlineSnapshot: string?,
	isInline: boolean,
	matcherName: string,
	properties: Object?,
	received: any,
}

export type SnapshotData = { [string]: string }
--		child.C0 = CFrame.new(0,-0.4,0)*CFrame.fromEulerAnglesXYZ(-(math.pi/2),0,0) --// Reposition player


		if child.Part1.Name == "HumanoidRootPart" then
			player = game.Players:GetPlayerFromCharacter(child.Part1.Parent)
			if player and (not player.PlayerGui:FindFirstChild("Screen")) then --// The part after the "and" prevents multiple GUI's to be copied over.
				GUI.CarSeat.Value = script.Parent --// Puts a reference of the seat in this ObjectValue, now you can use this ObjectValue's value to find the car directly.
				GUI:Clone().Parent = player.PlayerGui --// Compact version
				script.Parent.Occupied.Value = true
				if script.Parent.Parent.Parent.Parent.DriveSeat.Values.Seatlock.Value == true then
					wait()
					script.Parent.Disabled = true
					wait()
					script.Parent.Disabled = false
				end
			end
		end
	end
end)

script.Parent.ChildRemoved:connect(function(child)
	if child:IsA("Weld") then
		if child.Part1.Name == "HumanoidRootPart" then
			game.Workspace.CurrentCamera.FieldOfView = 70
			player = game.Players:GetPlayerFromCharacter(child.Part1.Parent)
			if player and player.PlayerGui:FindFirstChild("Screen") then
				player.PlayerGui:FindFirstChild("Screen"):Destroy()
				script.Parent.Occupied.Value = false
			end
		end
	end	
end)
-- Text animation default properties


	-- character appearance timing:
defaults.AnimateStepTime = 0 -- Seconds between newframes
defaults.AnimateStepGrouping = "Letter" -- "Word" or "Letter" or "All"
defaults.AnimateStepFrequency = 4 -- How often to step, 1 is all, 2 is step in pairs, 3 is every three, etc.
	-- yielding:
defaults.AnimateYield = 0 -- Set this markup to yield
	-- entrance style parameters:
defaults.AnimateStyle = "Appear"
defaults.AnimateStyleTime = 0.5 -- How long it takes for an entrance style to fully execute
defaults.AnimateStyleNumPeriods = 3 -- Used differently for each entrance style
defaults.AnimateStyleAmplitude = 0.5 -- Used differently for each entrance style
--[=[
	Creates a scoped service bag, where services within the scope will not
	be accessible outside of the scope.

	@return ServiceBag
]=]


function ServiceBag:CreateScope()
	local provider = ServiceBag.new(self)

	self:_addServiceType(provider)

	-- Remove from parent provider
	self._maid[provider] = provider._destroying:Connect(function()
		self._maid[provider] = nil
		self._services[provider] = nil
	end)

	return provider
end
--// Bullet Physics


	BulletPhysics = Vector3.new(0,55,0); -- Drop fixation: Lower number = more drop
	BulletSpeed = 2953; -- Bullet Speed
	BulletSpread = 0; -- How much spread the bullet has
	
	ExploPhysics = Vector3.new(0,20,0); -- Drop for explosive rounds
	ExploSpeed = 600; -- Speed for explosive rounds
	
	BulletDecay = 10000; -- How far the bullet travels before slowing down and being deleted (BUGGY)
-- Cast Ray


castray.OnServerEvent:Connect(function(fired, ray, position)
	local beam = Instance.new("Part")
	
	beam.BrickColor = BrickColor.new("Neon orange")
	beam.FormFactor = Enum.FormFactor.Custom
	beam.Material = Enum.Material.Neon
	beam.Transparency = 0
	beam.Anchored = true
	beam.Locked = true
	beam.CanCollide = false
	beam.Parent = workspace
	
	local distance = (tool:WaitForChild("Hole").CFrame.p - position).Magnitude
	beam.Size = Vector3.new(0.1, 0.1, distance)
	beam.CFrame = CFrame.new(tool:WaitForChild("Hole").CFrame.p, position) * CFrame.new(0, 0, -distance / 2)
	
	game:GetService("Debris"):AddItem(beam, 0.025)
end)
--//Logic


game.Workspace.Changed:connect(function(p) -- Feels a bit hacky. Updates the Camera and Blur if the Camera object is changed.
	if p == "CurrentCamera" then
		Camera = game.Workspace.CurrentCamera
		if Blur and Blur.Parent then
			Blur.Parent = Camera
		else
			Blur = Instance.new("BlurEffect",Camera)
		end
	end
end)

game:GetService("RunService").Heartbeat:connect(function()
	if not Blur or Blur.Parent == nil then Blur = Instance.new("BlurEffect",Camera) end -- Feels a bit hacky. Creates a new Blur if it is destroyed.
	
	local magnitude = (Camera.CFrame.lookVector - Last).magnitude -- How much the camera has rotated since the last frame
	Blur.Size = math.abs(magnitude)*BlurAmount -- Set the blur size
	Last = Camera.CFrame.lookVector -- Update the previous camera rotation
end)
--///////////////////////// Constructors
--//////////////////////////////////////



function module.new()
	local obj = setmetatable({}, methods)
	obj.Destroyed = false

	local BaseFrame, Scroller = CreateGuiObjects()
	obj.GuiObject = BaseFrame
	obj.Scroller = Scroller

	obj.MessageObjectLog = {}

	obj.Name = "MessageLogDisplay"
	obj.GuiObject.Name = "Frame_" .. obj.Name

	obj.CurrentChannelName = ""

	obj.GuiObject.Changed:connect(function(prop)
		if (prop == "AbsoluteSize") then
			spawn(function() obj:ReorderAllMessages() end)
		end
	end)

	return obj
end

return module
----------------------------------------------------------------------------------------------------
--------------------=[ OUTROS ]=--------------------------------------------------------------------
----------------------------------------------------------------------------------------------------


	,FastReload = true					--- Automatically operates the bolt on reload if needed
	,SlideLock = true
	,MoveBolt = false
	,BoltLock = false
	,CanBreachDoor = false
	,CanBreak = true					--- Weapon can jam?
	,JamChance = 1000					--- This old piece of brick doesn't work fine >;c
	,IncludeChamberedBullet = true		--- Include the chambered bullet on next reload
	,Chambered = false					--- Start with the gun chambered?
	,LauncherReady = false				--- Start with the GL ready?
	,CanCheckMag = true					--- You can check the magazine
	,ArcadeMode = false					--- You can see the bullets left in magazine
	,RainbowMode = false				--- Operation: Party Time xD
	,ModoTreino = false					--- Surrender enemies instead of killing them
	,GunSize = 6
	,GunFOVReduction = 5

	,BoltExtend = Vector3.new(0, 0, 0.4)
	,SlideExtend = Vector3.new(0, 0, 0.4)
-- Create superfolder for all particle folders


local PlayerGui = Players.LocalPlayer:WaitForChild("PlayerGui")
local MainFolder = PlayerGui:FindFirstChild(Constants.ARCS_MAIN_FOLDER)
if not MainFolder then
	MainFolder = Instance.new("ScreenGui")
	MainFolder.Name = Constants.ARCS_MAIN_FOLDER
	MainFolder.Parent = PlayerGui
end
MainFolder.ResetOnSpawn = false
--Main Control------------------------------------------------------------------------


Walk = script.Parent.Walk.Lamp
DontWalk = script.Parent.DontWalk.Lamp
DWalk = script.Parent.Walk.DynamicLight
DDontWalk = script.Parent.DontWalk.DynamicLight
while true do
	wait()
	if Signal.Value == 0 then
	Walk.Enabled = false
	DontWalk.Enabled = false
	DWalk.Enabled = false
	DDontWalk.Enabled = false
	elseif Signal.Value == 1 then
	Walk.Enabled = true
	DontWalk.Enabled = false	
	DWalk.Enabled = true
	DDontWalk.Enabled = false
	elseif Signal.Value == 2 then
		while true do
		Walk.Enabled = false
		DontWalk.Enabled = true
		DWalk.Enabled = false
		DDontWalk.Enabled = true
		wait(.5)
		DontWalk.Enabled = false
		DDontWalk.Enabled = false
		wait(.5)
		if Signal.Value == 0 then break end
		if Signal.Value == 1 then break end	
		if Signal.Value == 3 then break end
		end
	elseif Signal.Value == 3 then
	Walk.Enabled = false
	DontWalk.Enabled = true
	DWalk.Enabled = false
	DDontWalk.Enabled = true
	end
	end
--Zombie artificial stupidity script




sp=script.Parent
lastattack=0
nextrandom=0
nextsound=0
nextjump=0
chasing=false

variance=4

damage=15
attackrange=4.5
sightrange=999--60
runspeed=17
wonderspeed=10
healthregen=false
colors={"Sand red","Dusty Rose","Medium blue","Sand blue","Lavender","Earth green","Brown","Medium stone grey","Brick yellow"}

function raycast(spos,vec,currentdist)
	local hit2,pos2=game.Workspace:FindPartOnRay(Ray.new(spos+(vec*.01),vec*currentdist),script.Parent)
	if hit2~=nil and pos2 then
		if hit2.Parent==script.Parent and hit2.Transparency>=.8 or hit2.Name=="Handle" or string.sub(hit2.Name,1,6)=="Effect" or hit2.Parent:IsA("Hat") or hit2.Parent:IsA("Tool") or (hit2.Parent:FindFirstChild("Humanoid") and hit2.Parent:FindFirstChild("TEAM") and hit2.Parent:FindFirstChild("TEAM").Value == script.Parent.TEAM.Value) or (not hit2.Parent:FindFirstChild("Humanoid") and hit2.CanCollide==false) then
			local currentdist=currentdist-(pos2-spos).magnitude
			return raycast(pos2,vec,currentdist)
		end
	end
	return hit2,pos2
end

function waitForChild(parent,childName)
	local child=parent:findFirstChild(childName)
	if child then return child end
	while true do
		child=parent.ChildAdded:wait()
		if child.Name==childName then return child end
	end
end