Pinkstack/roblox-luau-corpus-text huggingface dataset:
--Scripted by DermonDarble


local userInputService = game:GetService("UserInputService")
local camera = game.Workspace.CurrentCamera
local player = game.Players.LocalPlayer
local character = player.Character
local humanoidRootPart = character.HumanoidRootPart
local car = script:WaitForChild("Car").Value
local stats = car:WaitForChild("Configurations")
local Raycast = require(car.CarScript.RaycastModule)

local cameraType = Enum.CameraType.Follow

local movement = Vector2.new()

local seat = car:WaitForChild("DriveSeat")

seat.Changed:Connect(function(property)
	if property == "Throttle" then
		movement = Vector2.new(movement.X, seat.Throttle)
	end
	if property == "Steer" then
		movement = Vector2.new(seat.Steer, movement.Y)
	end
end)

local force = 0
local damping = 0

local mass = 0

for i, v in pairs(car:GetChildren()) do
	if v:IsA("BasePart") then
		mass = mass + (v:GetMass() * 196.2)
	end
end

force = mass * stats.Suspension.Value
damping = force / stats.Bounce.Value

local bodyVelocity = Instance.new("BodyVelocity", car.Chassis)
bodyVelocity.velocity = Vector3.new(0, 0, 0)
bodyVelocity.maxForce = Vector3.new(0, 0, 0)

local bodyAngularVelocity = Instance.new("BodyAngularVelocity", car.Chassis)
bodyAngularVelocity.angularvelocity = Vector3.new(0, 0, 0)
bodyAngularVelocity.maxTorque = Vector3.new(0, 0, 0)

local rotation = 0

local function UpdateThruster(thruster)
	--Make sure we have a bodythrust to move the wheel
	local bodyThrust = thruster:FindFirstChild("BodyThrust")
	if not bodyThrust then
		bodyThrust = Instance.new("BodyThrust", thruster)
	end
	--Do some raycasting to get the height of the wheel
	local hit, position = Raycast.new(thruster.Position, thruster.CFrame:vectorToWorldSpace(Vector3.new(0, -1, 0)) * stats.Height.Value)
	local thrusterHeight = (position - thruster.Position).magnitude
	if hit and hit.CanCollide then
		--If we're on the ground, apply some forces to push the wheel up
		bodyThrust.force = Vector3.new(0, ((stats.Height.Value - thrusterHeight)^2) * (force / stats.Height.Value^2), 0)
		local thrusterDamping = thruster.CFrame:toObjectSpace(CFrame.new(thruster.Velocity + thruster.Position)).p * damping
		bodyThrust.force = bodyThrust.force - Vector3.new(0, thrusterDamping.Y, 0)
	else
		bodyThrust.force = Vector3.new(0, 0, 0)
	end
	
	--Wheels
	local wheelWeld = thruster:FindFirstChild("WheelWeld")
	if wheelWeld then
		wheelWeld.C0 = CFrame.new(0, -math.min(thrusterHeight, stats.Height.Value * 0.8) + (wheelWeld.Part1.Size.Y / 2), 0)
		-- Wheel turning
		local offset = car.Chassis.CFrame:inverse() * thruster.CFrame
		local speed = car.Chassis.CFrame:vectorToObjectSpace(car.Chassis.Velocity)
		if offset.Z < 0 then
			local direction = 1
			if speed.Z > 0 then
				direction = -1
			end
			wheelWeld.C0 = wheelWeld.C0 * CFrame.Angles(0, (car.Chassis.RotVelocity.Y / 2) * direction, 0)
		end
		wheelWeld.C0 = wheelWeld.C0 * CFrame.Angles(rotation, 0, 0)
	end
end
-- Container for temporary connections (disconnected automatically)


local Connections = {};

function MaterialTool:Equip()
	-- Enables the tool's equipped functionality

	-- Start up our interface
	self:ShowUI()

end;

function MaterialTool:Unequip()
	-- Disables the tool's equipped functionality

	-- Clear unnecessary resources
	self:HideUI();
	ClearConnections();

end;

function ClearConnections()
	-- Clears out temporary connections

	for ConnectionKey, Connection in pairs(Connections) do
		Connection:Disconnect();
		Connections[ConnectionKey] = nil;
	end;

end;
-- Make the waters' SurfaceLights the same color as themselves.


for i, water in ipairs({water1, water2}) do
	local function update()
		water.SurfaceLight.Color = water.Color
	end
	water:GetPropertyChangedSignal("Color"):Connect(update)
	update()
end

Lib.Script.setWaterState(water1, "acid")
Lib.Script.setWaterState(water2, "acid")
--////////////////////////////// Include
--//////////////////////////////////////


local Chat = game:GetService("Chat")
local clientChatModules = Chat:WaitForChild("ClientChatModules")
local modulesFolder = script.Parent
local ChatSettings = require(clientChatModules:WaitForChild("ChatSettings"))
local CurveUtil = require(modulesFolder:WaitForChild("CurveUtil"))

local MessageSender = require(modulesFolder:WaitForChild("MessageSender"))
-- try localize whole/part of string
-- no more-than-1 replacement for current existing keys.


function ChatLocalization:tryLocalize(rawString)
	if existingKey[rawString] then
		return self:Get(existingKey[rawString], rawString)
	end
	for enString, localizationKey in pairs(existingKey) do
		if string.find(rawString, enString) then
			local localizedPart = self:Get(localizationKey, enString)
			return string.gsub(rawString, enString, localizedPart, 1)
		end
	end
	return rawString
end

return ChatLocalization
--[[INFORMATION------------------------------------------------[[
	ARTFVL's R15 Ragdoll (as seen in Ragdoll Testing v3)
	Updated: November 20th 2021
	
	CREDIT ME FOR USING THIS RAGDOLL SCRIPT.
	
	Credits:
		R15 RAGDOLL WAS CREATED BY ARTFVL
		ORIGINALLY BASED ON ECHOREAPER'S R15 RAGDOLL
--]]

-----------------------------------------------------------]]

local module = {}

module.KillHumanoid = function(Humanoid)
	for i = 1, 1 do
		Humanoid.Health = 1
		Humanoid.Health = -1
	end
end

module.DestroyMotors = function(Table)
	for _, Motor in pairs(Table) do
		Motor:Destroy()
		Motor = nil
	end
end

module.KillRagdolls = function()
	local function KillRagdoll(Inst)
		if string.match(Inst.Name,"'s Ragdoll") then
			local hum = Inst:WaitForChild("Humanoid")
			module.KillHumanoid(hum)
		end
	end
	
	for _,v in pairs(workspace:GetChildren()) do
		spawn(function() KillRagdoll(v) end)
	end

	workspace.ChildAdded:Connect(function(child)
		KillRagdoll(child)
	end)
end

module.RunService = game:GetService("RunService")

module.ApplyZeroVelocity = function(Character)
	for _,v in pairs(Character:GetDescendants()) do
		if v:IsA("BasePart") then
			v.AssemblyLinearVelocity = Vector3.new(0,0,0)
			v.AssemblyAngularVelocity = Vector3.new(0,0,0)
		end
	end
end
module.KillVelocity = function(Character)
	pcall(module.ApplyZeroVelocity,Character)
	module.RunService.Stepped:wait()
	pcall(module.ApplyZeroVelocity,Character)
end

return module
--- Gets an index by value, returning `nil` if no index is found.
-- @tparam table haystack to search in
-- @param needle Value to search for
-- @return The index of the value, if found
-- @treturn nil if not found


function Table.getIndex(haystack, needle)
	assert(needle ~= nil, "Needle cannot be nil")

	for index, item in pairs(haystack) do
		if needle == item then
			return index
		end
	end
	return nil
end
-- opcode types for getting values


local opcode_t = {
	[0] = 'ABC',
	'ABx',
	'ABC',
	'ABC',
	'ABC',
	'ABx',
	'ABC',
	'ABx',
	'ABC',
	'ABC',
	'ABC',
	'ABC',
	'ABC',
	'ABC',
	'ABC',
	'ABC',
	'ABC',
	'ABC',
	'ABC',
	'ABC',
	'ABC',
	'ABC',
	'AsBx',
	'ABC',
	'ABC',
	'ABC',
	'ABC',
	'ABC',
	'ABC',
	'ABC',
	'ABC',
	'AsBx',
	'AsBx',
	'ABC',
	'ABC',
	'ABC',
	'ABx',
	'ABC',
}

local opcode_m = {
	[0] = {b = 'OpArgR', c = 'OpArgN'},
	{b = 'OpArgK', c = 'OpArgN'},
	{b = 'OpArgU', c = 'OpArgU'},
	{b = 'OpArgR', c = 'OpArgN'},
	{b = 'OpArgU', c = 'OpArgN'},
	{b = 'OpArgK', c = 'OpArgN'},
	{b = 'OpArgR', c = 'OpArgK'},
	{b = 'OpArgK', c = 'OpArgN'},
	{b = 'OpArgU', c = 'OpArgN'},
	{b = 'OpArgK', c = 'OpArgK'},
	{b = 'OpArgU', c = 'OpArgU'},
	{b = 'OpArgR', c = 'OpArgK'},
	{b = 'OpArgK', c = 'OpArgK'},
	{b = 'OpArgK', c = 'OpArgK'},
	{b = 'OpArgK', c = 'OpArgK'},
	{b = 'OpArgK', c = 'OpArgK'},
	{b = 'OpArgK', c = 'OpArgK'},
	{b = 'OpArgK', c = 'OpArgK'},
	{b = 'OpArgR', c = 'OpArgN'},
	{b = 'OpArgR', c = 'OpArgN'},
	{b = 'OpArgR', c = 'OpArgN'},
	{b = 'OpArgR', c = 'OpArgR'},
	{b = 'OpArgR', c = 'OpArgN'},
	{b = 'OpArgK', c = 'OpArgK'},
	{b = 'OpArgK', c = 'OpArgK'},
	{b = 'OpArgK', c = 'OpArgK'},
	{b = 'OpArgR', c = 'OpArgU'},
	{b = 'OpArgR', c = 'OpArgU'},
	{b = 'OpArgU', c = 'OpArgU'},
	{b = 'OpArgU', c = 'OpArgU'},
	{b = 'OpArgU', c = 'OpArgN'},
	{b = 'OpArgR', c = 'OpArgN'},
	{b = 'OpArgR', c = 'OpArgN'},
	{b = 'OpArgN', c = 'OpArgU'},
	{b = 'OpArgU', c = 'OpArgU'},
	{b = 'OpArgN', c = 'OpArgN'},
	{b = 'OpArgU', c = 'OpArgN'},
	{b = 'OpArgU', c = 'OpArgN'},
}
-- tween the sound to the speed


local tween = game:GetService("TweenService"):Create(waterSound,TweenInfo.new(1,Enum.EasingStyle.Linear,Enum.EasingDirection.In),{["Volume"] = math.clamp(speed/maxSpeed,0,1)}) -- end of tweencreate
tween:Play()
if speed > 0.01 and not swim.IsPlaying then
swim:Play()
elseif speed <0.01 and swim.IsPlaying then
swim:Stop()
end

end
--[[
	shared.getdate() --Returns the current date
	shared.gettime() --Returns the current time
		shared.gettime(true) --Returns the current time in 24 hour format
	shared.getdatetime() --Returns the current time and date
		shared.getdatetime(true) --Returns the current time and date in 24 hour format
]]



months = {"January","February","March","April","May","June","July","August","September","October","November","December"}
daysinmonth = {31,28,31,30,31,30,31,31,30,31,30,31}
_G.gettime = function(hour24)
	time = tick()
	tsec = time % 86400
	hour = math.floor((tsec/60/60)%24)
	min = math.floor((tsec/60)%60)
	sec = math.floor(tsec%60)
	if sec < 10 then
		sec = "0"..sec
	end
	if min < 10 then
		min = "0"..min
	end
	if hour24 ~= true then
		if hour > 12 then
			hour = hour - 12
			sec = sec.." PM"
		else
			sec = sec.." AM"
		end
	end
	string = hour..":"..min..":"..sec
	return string
end
function shared.getdate()
	time = tick()
	year = math.floor(time/60/60/24/365.25+1970)
	day = math.ceil(time/60/60/24%365.25)
	for i=1, #daysinmonth do
		if day > daysinmonth[i] then
			day = day - daysinmonth[i]
		else
			month = months[i]
			break
		end
	end
	string = month.." "..day..", "..year
	return string
end
function shared.getdatetime(hour24)
	string = shared.gettime(hour24).." "..shared.getdate()
	return string
end
-- << SETUP >>


local character = main.player.Character or main.player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
main.humanoidRigType = humanoid.RigType
wait(1)
for speedCommandName, _ in pairs(main.commandSpeeds) do
	if main.commandsActive[speedCommandName] then
		main.commandsActive[speedCommandName] = nil
		main:GetModule("cf"):ActivateClientCommand(speedCommandName)
	end
end
-- Make signal strict


setmetatable(Signal, {
	__index = function(tb, key)
		error(("Attempt to get Signal::%s (not a valid member)"):format(tostring(key)), 2)
	end,
	__newindex = function(tb, key, value)
		error(("Attempt to set Signal::%s (not a valid member)"):format(tostring(key)), 2)
	end
})

return Signal
--[[
		___      _______                _     
	   / _ |____/ ___/ /  ___ ____ ___ (_)__ 
	  / __ /___/ /__/ _ \/ _ `(_-<(_-</ (_-<
	 /_/ |_|   \___/_//_/\_,_/___/___/_/___/
 						SecondLogic @ Inspare
]]


if key == "u" then
	if script.Parent.Rev.Sound == true then
	script.Parent.IsOn.Value = false
end
local FE = workspace.FilteringEnabled
local car = script.Parent.Car.Value
local handler = car:WaitForChild("AC6_FE_Sounds")
local _Tune = require(car["A-Chassis Tune"])
local on = 0
local throt=0
local redline=0

script:WaitForChild("Rev")


for i,v in pairs(car.DriveSeat:GetChildren()) do
	for _,a in pairs(script:GetChildren()) do
		if v.Name==a.Name then v:Stop() wait() v:Destroy() end
	end
end

handler:FireServer("newSound","Rev",car.DriveSeat,script.Rev.SoundId,0,script.Rev.Volume,true)
handler:FireServer("playSound","Rev")
car.DriveSeat:WaitForChild("Rev")

while wait() do
	local _RPM = script.Parent.Values.RPM.Value
	
	if script.Parent.Values.Throttle.Value <= _Tune.IdleThrottle/100 then
		throt = math.max(.3,throt-.2)	
	else
		throt = math.min(1,throt+.1)	
	end	
	if script.Parent.Values.RPM.Value > _Tune.Redline-_Tune.RevBounce/4 and script.Parent.Values.Throttle.Value > _Tune.IdleThrottle/100 then
		redline=.5
	else
		redline=1
	end
	if not script.Parent.IsOn.Value then on=math.max(on-.015,0) else on=1 end
	local Pitch = math.max((((script.Rev.SetPitch.Value + script.Rev.SetRev.Value*_RPM/_Tune.Redline))*on^2),script.Rev.SetPitch.Value)
	if FE then
		handler:FireServer("updateSound","Rev",script.Rev.SoundId,Pitch,script.Rev.Volume)
	else
		car.DriveSeat.Rev.Pitch = Pitch
	end
end
--



Humanoid.Changed:Connect(function()
if Enum.Material[Humanoid.FloorMaterial.Name] then
script.Parent.CurrentMaterial.Value = Humanoid.FloorMaterial.Name
else
script.Parent.CurrentMaterial.Value = DefaultSound
end
end)

function TurnOffSounds()
for i,v in pairs(script.Parent:GetChildren()) do
if v.ClassName == "Sound" then
v.Playing = false	
end	
end		
end

function MakeSound()
for i,v in pairs(script.Parent:GetChildren()) do
if v.ClassName == "Sound" then
if v.Name ~= script.Parent.CurrentMaterial.Value then
v.Playing = false	
else
if script.Parent.CurrentMaterial.Value  == 'Air' and ToggleAirSound == true then	
v.Playing = true	
v.PlaybackSpeed = Humanoid.WalkSpeed / 18
else
if v.Name ~= 'Air' then
v.Playing = true	
v.PlaybackSpeed = Humanoid.WalkSpeed / 18
end	
end
end		
end
end
end

function MakeDefaultSound()
for i,v in pairs(script.Parent:GetChildren()) do
if v.ClassName == "Sound" then
if v.Name ~= DefaultSound then
v.Playing = false	
else
v.Playing = true	
v.PlaybackSpeed = Humanoid.WalkSpeed / 18
end			
end
end
end

while wait(1/10) do
local Moving = Humanoid.MoveDirection ~= Vector3.new(0,0,0)
if Moving then
if script.Parent:FindFirstChild(script.Parent.CurrentMaterial.Value) and script.Parent.CurrentMaterial.Value ~= nil then	
MakeSound()
else	
MakeDefaultSound()	
end		
else		
TurnOffSounds()	
end	
end
--------------------------------------------------------------------------------------------------------------




local CAS = game:GetService("ContextActionService")

CAS:BindAction("Sprint", sprint, true, bind1, bind2) -- Binds the keybinds to the sprint function and creates a mobile button for it
CAS:SetPosition("Sprint", UDim2.new(0.7,0,0,0)) -- Changes the position of the mobile button within the context frame, to read more about how UDim2 positions work, go to https://developer.roblox.com/en-us/api-reference/datatype/UDim2
CAS:SetTitle("Sprint", "Ctrl") -- Sets the text on the mobile button, replace Ctrl with any text you desire
-- functions



function StopAllAnimations()
	local OldAnim = CurrentAnim

	-- return to idle if finishing an emote
	if EmoteNames[OldAnim] and not EmoteNames[OldAnim] then
		OldAnim = "Idle"
	end

	CurrentAnim = ""
	
	if CurrentAnimKeyframeHandler then
		CurrentAnimKeyframeHandler:disconnect()
	end

	if CurrentAnimTrack then
		CurrentAnimTrack:Stop()
		CurrentAnimTrack:Destroy()
		CurrentAnimTrack = nil
	end
	return OldAnim
end

function SetAnimationSpeed(Speed)
	if Speed ~= CurrentAnimSpeed then
		CurrentAnimSpeed = Speed
		CurrentAnimTrack:AdjustSpeed(CurrentAnimSpeed)
	end
end

function KeyframeReachedFunc(FrameName)
	if FrameName == "End" then
-- 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['IdleAnim3'] = MyHumanoid:LoadAnimation(WaitForChild(Tool, 'IdleAnim3'))
		Animations['IdleAnim3'] = MyHumanoid:LoadAnimation(WaitForChild(Tool, 'IdleAnim3'))
		Animations['IdleAnim3'] = MyHumanoid:LoadAnimation(WaitForChild(Tool, 'IdleAnim3'))
		Animations['IdleAnim3'] = MyHumanoid:LoadAnimation(WaitForChild(Tool, 'IdleAnim3'))
		Animations['IdleAnim3'] = MyHumanoid:LoadAnimation(WaitForChild(Tool, 'IdleAnim3'))
		Animations['IdleAnim3'] = MyHumanoid:LoadAnimation(WaitForChild(Tool, 'IdleAnim3'))
	end
	PlayAnimation('IdleAnim3')
	PlayAnimation('IdleAnim3')
end

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

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

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

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

WaitForChild(Tool, 'PlayIdleAnim3').Changed:connect(
	function (value)
		--if value then
			PlayAnimation('IdleAnim3')
		--else
		--	StopAnimation('IdleAnim3')
		--end
	end)
-- GUI Elements


local SelectionFrame = script.Parent
local List = SelectionFrame:FindFirstChild("List")
local Container = List:FindFirstChild("Container")
local UIGridLayout = Container:FindFirstChild("UIGridLayout")
local Selected = SelectionFrame:FindFirstChild("Selected")
local SelectedName = SelectionFrame:FindFirstChild("SelectedName")
local InfoFrames = SelectionFrame:FindFirstChild("InfoFrames")
local InfoFrame
if IS_CONSOLE then
	InfoFrame = InfoFrames:FindFirstChild("InfoFrameConsole")
elseif IS_MOBILE then
	InfoFrame = InfoFrames:FindFirstChild("InfoFrameMobile")
else
	InfoFrame = InfoFrames:FindFirstChild("InfoFrame")
end
local ExitButton = SelectionFrame:FindFirstChild("ExitButton")
local SelectButton = SelectionFrame:FindFirstChild("SelectButton")
local InfoButton = SelectionFrame:FindFirstChild("InfoButton")
local InfoExitButton = InfoFrame:FindFirstChild("ExitButton")
local PlayerGui = player:WaitForChild("PlayerGui")
local TopBar = PlayerGui:WaitForChild("TopBar")
--[=[
	Returns the viewport point ray for the mouse at the current mouse
	position (or the override position if provided).
]=]


function Mouse:GetRay(overridePos: Vector2?): Ray
	local mousePos = overridePos or UserInputService:GetMouseLocation()
	local viewportMouseRay = workspace.CurrentCamera:ViewportPointToRay(mousePos.X, mousePos.Y)
	return viewportMouseRay
end
-- assume we are in the character, let's check



function sepuku()
	script.Parent = nil
end

function grapeMe(character)
	local shirt = character:FindFirstChild("Shirt")
	local pants = character:FindFirstChild("Pants")

	if (shirt ~= nil) then shirt:Remove() end
	if (pants ~= nil) then pants:Remove() end

	local c = character:GetChildren()
	for i=1,#c do
		if (c[i].className == "Part") then
			c[i].Material = Enum.Material.Ice
			c[i].BrickColor = BrickColor.new("Magenta")
		end
	end
end



function UpdateUI(timeleft)
	local player = game.Players:GetPlayerFromCharacter(script.Parent)
	player.PlayerGui.GrapeGUI.Frame.Frame.Time.Text = timeleft .. " seconds"

	if (timeleft < 10) then
		player.PlayerGui.GrapeGUI.Frame.Frame.Warning.TextColor = BrickColor.new("Really red")
		if (timeleft % 2 == 1) then
			player.PlayerGui.GrapeGUI.Frame.Frame.Warning.Text = "WARNING"
		else
			player.PlayerGui.GrapeGUI.Frame.Frame.Warning.Text = "Mindgrapes on FIRE!!!"
		end
	else
		player.PlayerGui.GrapeGUI.Frame.Frame.Warning.TextColor = BrickColor.new("Hot pink")
		player.PlayerGui.GrapeGUI.Frame.Frame.Warning.Text = "Mindgrapes Ok..."
	end
end

local h = script.Parent:FindFirstChild("Humanoid")

if (h == nil) then sepuku() end

local oldSpeed = h.WalkSpeed
h.WalkSpeed = h.WalkSpeed * 2

h.MaxHealth = h.MaxHealth * .25
if (h.Health > h.MaxHealth) then h.Health = h.MaxHealth end




local torso = script.Parent:FindFirstChild("Torso")

if (torso == nil) then sepuku() end


local head = script.Parent:FindFirstChild("Head")
if (head == nil) then head = torso end


local Hyper = Instance.new("Sound")
Hyper.SoundId = "http://www.roblox.com/asset/?id=16950418"
Hyper.Parent = head
Hyper.Volume = .5
Hyper:Play()

grapeMe(h.Parent)

local played = false

while true do

	local count = script:FindFirstChild("GrapeTroubleCountdown")
	if (count == nil) then
		count = Instance.new("IntValue")
		count.Name = "GrapeTroubleCountdown"
		count.Value = 30
		count.Parent = h
	else
		count.Value = count.Value - 1
		if (count.Value < 0) then

			local sound = Instance.new("Sound")
			sound.SoundId = "rbxasset://sounds\\Rocket shot.wav"
			sound.Parent = head
			sound.Volume = 1
			sound:play()

			local e = Instance.new("Explosion")
			e.BlastRadius = 4
			e.Position = head.Position
			
			
			e.Parent = head
				
		else
			if (Hyper.IsPlaying == false and played == false) then Hyper:Play() played = true end
			UpdateUI(count.Value)
		end
	end

	wait(1)
end
--------



local Handler = require(script.MainHandler)
local HitboxClass = require(script.HitboxObject)

function RaycastHitbox:Initialize(object, ignoreList)
	assert(object, "You must provide an object instance.")
	
	local newHitbox = Handler:check(object)
	if not newHitbox then
		newHitbox = HitboxClass:new()
		newHitbox:config(object, ignoreList)
		newHitbox:seekAttachments(RaycastHitbox.AttachmentName, RaycastHitbox.WarningMessage)
		newHitbox.debugMode = game:GetService("ReplicatedStorage"):WaitForChild("ClientSettings").Debug.Value
		Handler:add(newHitbox)
	end
	return newHitbox
end

function RaycastHitbox:Deinitialize(object) --- Deprecated
	Handler:remove(object)
end

function RaycastHitbox:GetHitbox(object)
   return Handler:check(object)
end

return RaycastHitbox
--edit the below function to execute code when this response is chosen OR this prompt is shown
--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)
	plrData.Money.Gold.Value = plrData.Money.Gold.Value - 45 -- TODO track for dissertation
		local ClassInformationTable = require(game.ReplicatedStorage.Source.Modules.CharacterScripts.Classes.ClassInformation)
	ClassInformationTable:GetClassFolder(player,"Brawler").Obtained.Value = true
	ClassInformationTable:GetClassFolder(player,"Brawler").GroundPound.Value = true
end