Roblox/luau_corpus huggingface dataset:
--This is a a script for JayKay, Hi JAYKAY LOL, ok this is the script to add cash onkill, the Leaderboard comes with the zombie so dont worry
--Thats all bye!



local Humanoid = script.Parent.Zombie 

function PwntX_X() 

local tag = Humanoid:findFirstChild("creator") 

if tag ~= nil then 

if tag.Value ~= nil then 

local Leaderstats = tag.Value:findFirstChild("leaderstats") 

if Leaderstats ~= nil then 

Leaderstats.Cash.Value = Leaderstats.Cash.Value + 5 -- This gives you 5 cash onkill.
Leaderstats.Spree.Value = Leaderstats.Spree.Value + 1 -- This changes the spree up by one, if you die, it goes back to Zero 

wait(0.1) 

script:remove() 

end 

end 

end 

end 

Humanoid.Died:connect(PwntX_X)
--!nonstrict
--------------------------------------------------------------------------------
-- Popper.lua
-- Prevents your camera from clipping through walls.
--------------------------------------------------------------------------------

local Players = game:GetService("Players")

local camera = game.Workspace.CurrentCamera

local min = math.min
local tan = math.tan
local rad = math.rad
local inf = math.huge
local ray = Ray.new

local function getTotalTransparency(part)
	return 1 - (1 - part.Transparency)*(1 - part.LocalTransparencyModifier)
end

local function eraseFromEnd(t, toSize)
	for i = #t, toSize + 1, -1 do
		t[i] = nil
	end
end

local nearPlaneZ, projX, projY do
	local function updateProjection()
		local fov = rad(camera.FieldOfView)
		local view = camera.ViewportSize
		local ar = view.X/view.Y

		projY = 2*tan(fov/2)
		projX = ar*projY
	end

	camera:GetPropertyChangedSignal("FieldOfView"):Connect(updateProjection)
	camera:GetPropertyChangedSignal("ViewportSize"):Connect(updateProjection)

	updateProjection()

	nearPlaneZ = camera.NearPlaneZ
	camera:GetPropertyChangedSignal("NearPlaneZ"):Connect(function()
		nearPlaneZ = camera.NearPlaneZ
	end)
end

local blacklist = {} do
	local charMap = {}

	local function refreshIgnoreList()
		local n = 1
		blacklist = {}
		for _, character in pairs(charMap) do
			blacklist[n] = character
			n = n + 1
		end
	end

	local function playerAdded(player)
		local function characterAdded(character)
			charMap[player] = character
			refreshIgnoreList()
		end
		local function characterRemoving()
			charMap[player] = nil
			refreshIgnoreList()
		end

		player.CharacterAdded:Connect(characterAdded)
		player.CharacterRemoving:Connect(characterRemoving)
		if player.Character then
			characterAdded(player.Character)
		end
	end

	local function playerRemoving(player)
		charMap[player] = nil
		refreshIgnoreList()
	end

	Players.PlayerAdded:Connect(playerAdded)
	Players.PlayerRemoving:Connect(playerRemoving)

	for _, player in ipairs(Players:GetPlayers()) do
		playerAdded(player)
	end
	refreshIgnoreList()
end
-- Gui
local DisplayGui = script:WaitForChild("DisplayGui")
local ColorGui = script:WaitForChild("ColorGui")
local NewDisplayGui = nil
local NewColorGui = nil

function UndoSettings(Folder)
	for _,v in pairs(Folder:GetChildren()) do
		if v:IsA("NumberValue") or v:IsA("IntValue") then
			v.Value = 0
		elseif v:IsA("ObjectValue") and v.Name ~= "SpawnedSegway" then
			v.Value = nil
		end
	end
end

function RemoveSegway()
	
	-- Remove segway
	DestroySegway:FireServer(Character,SpawnedSegway)
	
	-- Reset camera
	Camera.CameraType = "Custom"
	
	-- Show tool
	ConfigTool:FireServer(0,Tool,false,nil)
	
	-- Undo tags anyway
	HasSpawnedSegway.Value = false

	-- UnPlatformStand player
	ConfigHumanoid:FireServer(Humanoid,false,false,true)
	
	-- If player has the segway controller script, we'll reset its settings
	if PlayerGui:FindFirstChild("GuiControls") then -- Remove mobile gui
		PlayerGui:FindFirstChild("GuiControls").Parent = script
	end
	UserInputService.ModalEnabled = false
	UndoSettings(ToolStatus)
end
----------------

Speed = 16				-- This is the character's speed! 16 is normal walkspeed.
--body.Touched:Connect(BodyTouched)
proximit.Triggered:Connect(function (player)
	if BodyTouched(player) then
		proximit.Enabled = false
		CoolDown(1)
	end
end)
seat:GetPropertyChangedSignal("Occupant"):Connect(OccupantChanged)
--
function module:GetBowSkin(Skin)
	local inv = game.ReplicatedStorage.Inventory.Bows
    for i,v in pairs(inv.Common:GetChildren()) do
	if v.Name == Skin then
		return v.Value
	else
		for i,v in pairs(inv.Rare:GetChildren()) do
		if v.Name == Skin then
		    return v.Value
		else
			for i,v in pairs(inv.Epic:GetChildren()) do
			if v.Name == Skin then
		        return v.Value
			else
				for i,v in pairs(inv.Legendary:GetChildren()) do
				if v.Name == Skin then
		            return v.Value
				else
				print("Couldn't find the skin info")
				return nil
				end
			end
		end
	end
end
end
end
end
end
--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]]
	s2.Volume=1
	s.Volume=0
while s.Pitch<0.65 do
s.Pitch=s.Pitch+0.009
s:Play()
if s.Pitch>1 then
	s.Pitch=1
end
wait(-9)
end

while s.Pitch<0.97 do
s.Pitch=s.Pitch+0.003
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
--Paper
script.Parent.Paper.Parent = game.ReplicatedStorage

wait()
script.Parent:Destroy()
--		local height = part.Size.Y
--		local cframe = part.CFrame
--		part.Size = Vector3.new(hit.Size.X,sizeincrement+math.random()*sizeincrement/2,hit.Size.Z)
--		part.CFrame = cf*CFrame.new(0,part.Size.y/2-height/2,0)
--		part.Transparency = (maximumheight-sizeincrement*2-part.Size.Y)/_G.snowMaximumHeight
--		part.CanCollide = false
	end
end)
-- ROBLOX TODO: ADO-1633 fix Jest Types imports
-- local Config = require(Packages.JestTypes).Config
type ConfigPath = string
type ConfigSnapshotUpdateState = string

local PrettyFormat = require(Packages.PrettyFormat)
local PrettyFormat_ = require(CurrentModule.PrettyFormat)
--local Energia = PastaVar.Energia
local Ferido = PastasStan.Ferido
local Caido = PastasStan.Caido
local ouch = Caido
local rodeath = PastasStan.rodeath
local cpr = PastasStan.cpr
local balloonbleed = PastasStan.balloonbleed
local clamped = PastasStan.clamped
local repaired = PastasStan.repaired
local o2 = PastasStan.o2
local dead = PastasStan.dead
local life = PastasStan.life
local surg2 = PastasStan.surg2
local cutopen = PastasStan.cutopen



local Ragdoll = require(game.ReplicatedStorage.ACS_Engine.Modulos.Ragdoll)
local configuracao = require(game.ReplicatedStorage.ACS_Engine.ServerConfigs.Config)

local debounce = false
life.Value = true
cutopen.Value = false
clamped.Value = false
--Rear Suspension
Tune.RSusStiffness	= 20000		-- Spring Force
Tune.RSusDamping	= 400		-- Spring Dampening
Tune.RAntiRoll 		= 400		-- Anti-Roll (Gyro Dampening)

Tune.RSusLength		= 2.1		-- Resting Suspension length (in studs)
Tune.RPreCompress	= .1		-- Pre-compression adds resting length force
Tune.RExtensionLim	= .4		-- Max Extension Travel (in studs)
Tune.RCompressLim	= .2		-- Max Compression Travel (in studs)
Tune.RSusAngle		= 80		-- Suspension Angle (degrees from horizontal)

Tune.RWsBoneLen		= 5			-- Wishbone Length
Tune.RWsBoneAngle	= 2			-- Wishbone angle (degrees from horizontal)
Tune.RAnchorOffset	= {			-- Suspension anchor point offset (relative to center of wheel)
	--[[Lateral]]		-.4		,	-- positive = outward
	--[[Vertical]]		-.5		,	-- positive = upward
	--[[Forward]]		0		}	-- positive = forward
--// Tables
local L_92_ = {
	
	"285421759";
	"151130102";
	"151130171";
	"285421804";
	"287769483";
	"287769415";
	"285421687";
	"287769261";
	"287772525";
	"287772445";
	"287772351";
	"285421819";
	"287772163";
	
}

local L_93_ = workspace:FindFirstChild("BulletModel: " .. L_2_.Name) or Instance.new("Folder", workspace)
L_93_.Name = "BulletModel: " .. L_2_.Name

local L_94_

local L_95_ = L_24_.Ammo
local L_96_ = L_24_.StoredAmmo * L_24_.MagCount

local L_97_ = L_24_.ExplosiveAmmo

IgnoreList = {
	L_3_,
	L_93_,
	L_5_
}
--Functions
game.Players.PlayerAdded:Connect(function(player)
	player.CharacterAdded:Connect(function(char)
		--Varibles
		local head = char.Head
		local newtext = nametag:Clone() --Cloning the text.
		local uppertext = newtext.UpperText
		local lowertext = newtext.LowerText
		local humanoid = char.Humanoid

		humanoid.DisplayDistanceType = "None"

		--Main Text
		newtext.Parent = head
		newtext.Adornee = head
		uppertext.Text = player.Name

		--"If" Statements
		--You can add as many of these as you wish, just change it to the player's name.
		if player.Name == "---" then
			lowertext.Text = "---" --This is that the text will say.
			lowertext.TextColor3 = Color3.fromRGB(255, 0, 255) 
		end
	end)
end)
--Tone1Switch

Ton1Swch.Changed:Connect(function()
	if Ton1Swch.Value == true then
		Ton1Swch.Parent.P1.Transparency = 1
		Ton1Swch.Parent.P2.Transparency = 0
		ClickSound:Play()
		Tone1Val.Test.Value = true
	else
		Ton1Swch.Parent.P1.Transparency = 0
		Ton1Swch.Parent.P2.Transparency = 1
		ClickSound:Play()
		Tone1Val.Test.Value = false
	end
end)
--[[local clonename = script.Parent.PlrName.Value:Clone()
	script.Parent.PlrName.Value.Archivable = false
	clonename:SetPrimaryPartCFrame(CFrame.new())
	clonename.Parent = workspace
	clonename.HumanoidRootPart.Orientation = Vector3.new(0, -180, 0);
	for fart, fart2 in pairs(clonename:GetChildren()) do
		if fart2:IsA("Accessory") or fart2:IsA("BasePart") then
			if not (not getplrname.find(fart2.Name, "Arm")) or not (not getplrname.find(fart2.Name, "Leg")) or fart2.Name == "Torso" then
				fart2:ClearAllChildren()
				fart2.Transparency = 1;
			end
		else
			fart2:Destroy();
		end
	end
	for imtired, imtired2 in pairs(clonename:GetChildren()) do
		if imtired2.Name == "StarterCharacter" then
			imtired2:Destroy();
		end
	end
	clonename.Parent = script.Parent.Viewport
	local monkey = Instance.new("Camera")
	monkey.CameraType = Enum.CameraType.Scriptable
	monkey.CFrame = clonename.Head.CFrame:ToWorldSpace(CFrame.new(0, 0, -4.5))
	monkey.CFrame = CFrame.new(monkey.CFrame.p, clonename.Head.Position)
	monkey.CameraSubject = clonename.Head
	monkey.CameraType = Enum.CameraType.Fixed
	monkey.DiagonalFieldOfView = 85
	monkey.Parent = Viewport
	Viewport.CurrentCamera = monkey]]--
end
--------------------------PC AUTO JUMPER-------------------------------

local function GetCharacter()
	return Player and Player.Character
end

local function GetTorso()
	local humanoid = findPlayerHumanoid(Player)
	return humanoid and humanoid.Torso
end

local function IsPartAHumanoid(part)
	return part and part.Parent and (part.Parent:FindFirstChild('Humanoid') ~= nil)
end

local function doAutoJump()
	local character = GetCharacter()
	if (character == nil) then
		return;
	end

	local humanoid = findPlayerHumanoid(Player)
	if (humanoid == nil) then
		return;
	end

	local rayLength = 1.5;
	-- This is how high a ROBLOXian jumps from the mid point of his torso
	local jumpHeight = 7.0;

	local torso = GetTorso()
	if (torso == nil) then
		return;
	end

	local torsoCFrame = torso.CFrame;
	local torsoLookVector = torsoCFrame.lookVector;
	local torsoPos = torsoCFrame.p;

	local torsoRay = Ray.new(torsoPos + Vector3.new(0, -torso.Size.Y/2, 0), torsoLookVector * rayLength);
	local jumpRay = Ray.new(torsoPos + Vector3.new(0, jumpHeight - torso.Size.Y, 0), torsoLookVector * rayLength);

	local hitPart, _ = RayCastIgnoreList(workspace, torsoRay, {character}, false)
	local jumpHitPart, _ = RayCastIgnoreList(workspace, jumpRay, {character}, false)

	if (hitPart and jumpHitPart == nil and hitPart.CanCollide == true) then
		 -- NOTE: this follow line is not in the C++ impl, but an improvement  in Click to Move
		if not IsPartAHumanoid(hitPart) then
			humanoid.Jump = true;
		end
	end
end

local NO_JUMP_STATES =
{
	[Enum.HumanoidStateType.FallingDown] = false;
	[Enum.HumanoidStateType.Flying] = false;
	[Enum.HumanoidStateType.Freefall] = false;
	[Enum.HumanoidStateType.GettingUp] = false;
	[Enum.HumanoidStateType.Ragdoll] = false;
	[Enum.HumanoidStateType.Running] = false;
	[Enum.HumanoidStateType.Seated] = false;
	[Enum.HumanoidStateType.Swimming] = false;

	-- Special case to detect if we are on a ladder
	[Enum.HumanoidStateType.Climbing] = false;
}

local function enableAutoJump()
	local humanoid = findPlayerHumanoid(Player)
	local currentState = humanoid and humanoid:GetState()
	if currentState then
		return NO_JUMP_STATES[currentState] == nil
	end
	return false
end

local function getAutoJump()
	return true
end

local function vec3IsZero(vec3)
	return vec3.magnitude < 0.05
end
--Dupes a part from the template.
local function MakeFromTemplate(template: BasePart, currentCacheParent: Instance)
	local part: BasePart = template:Clone()
	-- ^ Ignore W000 type mismatch between Instance and BasePart. False alert.
	
	part.CFrame = CF_REALLY_FAR_AWAY
	part.Anchored = true
	part.Parent = currentCacheParent
	return part
end

function PartCacheStatic.new(template: BasePart, numPrecreatedParts: number?, currentCacheParent: Instance?): PartCache
	local newNumPrecreatedParts: number = numPrecreatedParts or 5
	local newCurrentCacheParent: Instance = currentCacheParent or workspace
	
	--PrecreatedParts value.
	--Same thing. Ensure it's a number, ensure it's not negative, warn if it's really huge or 0.
	assert(numPrecreatedParts > 0, "PrecreatedParts can not be negative!")
	assertwarn(numPrecreatedParts ~= 0, "PrecreatedParts is 0! This may have adverse effects when initially using the cache.")
	assertwarn(template.Archivable, "The template's Archivable property has been set to false, which prevents it from being cloned. It will temporarily be set to true.")
	
	local oldArchivable = template.Archivable
	template.Archivable = true
	local newTemplate: BasePart = template:Clone()
	-- ^ Ignore W000 type mismatch between Instance and BasePart. False alert.
	
	template.Archivable = oldArchivable
	template = newTemplate
	
	local object: PartCache = {
		Open = {},
		InUse = {},
		CurrentCacheParent = newCurrentCacheParent,
		Template = template,
		ExpansionSize = 10
	}
	setmetatable(object, PartCacheStatic)
	
	-- Below: Ignore type mismatch nil | number and the nil | Instance mismatch on the table.insert line.
	for _ = 1, newNumPrecreatedParts do
		table.insert(object.Open, MakeFromTemplate(template, object.CurrentCacheParent))
	end
	object.Template.Parent = nil
	
	return object
	-- ^ Ignore mismatch here too
end
-- ROBLOX deviation END

local BufferedConsoleModule = require(CurrentModule.BufferedConsole)
exports.BufferedConsole = BufferedConsoleModule.default
export type BufferedConsole = BufferedConsoleModule.BufferedConsole

local CustomConsoleModule = require(CurrentModule.CustomConsole)
exports.CustomConsole = CustomConsoleModule.default
export type CustomConsole = CustomConsoleModule.CustomConsole

exports.NullConsole = require(CurrentModule.NullConsole).default
exports.getConsoleOutput = require(CurrentModule.getConsoleOutput).default

local typesModule = require(CurrentModule.types)
export type ConsoleBuffer = typesModule.ConsoleBuffer
export type LogMessage = typesModule.LogMessage
export type LogType = typesModule.LogType
export type LogEntry = typesModule.LogEntry
export type InspectOptions = typesModule.InspectOptions

return exports
-------- OMG HAX

r = game:service("RunService")


local damage = 10


local slash_damage = 12


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


local SlashSound = Instance.new("Sound")
SlashSound.SoundId = "rbxasset://sounds\\swordslash.wav"
SlashSound.Parent = sword
SlashSound.Volume = 1


local UnsheathSound = Instance.new("Sound")
UnsheathSound.SoundId = "rbxasset://sounds\\unsheath.wav"
UnsheathSound.Parent = sword
UnsheathSound.Volume = 1


function blow(hit)
	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)
				wait(1)
				untagHumanoid(humanoid)
			end
		end


	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
	SlashSound:play()
	local anim = Instance.new("StringValue")
	anim.Name = "toolanim"
	anim.Value = "Slash"
	anim.Parent = Tool
end


function swordUp()
	Tool.GripForward = Vector3.new(-1,0,0)
	Tool.GripRight = Vector3.new(0,1,0)
	Tool.GripUp = Vector3.new(0,0,1)
end

function swordOut()
	Tool.GripForward = Vector3.new(0,0,1)
	Tool.GripRight = Vector3.new(0,-1,0)
	Tool.GripUp = Vector3.new(-1,0,0)
end



Tool.Enabled = true

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

	

	attack()

	wait(1)

	Tool.Enabled = true
end


function onEquipped()
	UnsheathSound:play()
end


script.Parent.Activated:connect(onActivated)
script.Parent.Equipped:connect(onEquipped)


connection = sword.Touched:connect(blow)
--[=[
	@class EnumList
	Defines a new Enum.
]=]
local EnumList = {}
--// Hash: 747c39bd00358b94599020af4dfde2375d20b56fce538fa04c22e2c14ba9503bd8f22b9b1544a90709932a0bd6eb8a80
-- Decompiled with the Synapse X Luau decompiler.

return function(p1)
	return p1:sub(#p1 - ((p1:reverse():find("%u") or #p1 + 1) - 1)):gsub("%d+$", "");
end;
-- / Remote Events / --
local ToolEvent = game.ReplicatedStorage:WaitForChild("ToolEvent")
--[[Steering]]
	Tune.SteerInner		= 36		-- Inner wheel steering angle (in degrees)
	Tune.SteerOuter		= 37		-- Outer wheel steering angle (in degrees)
	Tune.SteerSpeed		= .03		-- Steering increment per tick (in degrees)
	Tune.ReturnSpeed	= .05		-- Steering increment per tick (in degrees)
	Tune.SteerDecay		= 320		-- Speed of gradient cutoff (in SPS)
	Tune.MinSteer		= 10		-- Minimum steering at max steer decay (in percent)
	Tune.MSteerExp		= 1				-- Mouse steering exponential degree
	
	--Steer Gyro Tuning
	Tune.SteerD			= 1000		-- Steering Dampening
	Tune.SteerMaxTorque	= 50000		-- Steering Force
	Tune.SteerP			= 100000	-- Steering Aggressiveness
--[=[
	@within TableUtil
	@function Assign
	@param target table
	@param ... table
	@return table

	Copies all values of the given tables into the `target` table.

	```lua
	local t = {A = 10}
	local t2 = {B = 20}
	local t3 = {C = 30, D = 40}
	local newT = TableUtil.Assign(t, t2, t3)
	print(newT) --> {A = 10, B = 20, C = 30, D = 40}
	```
]=]
local function Assign(target: Table, ...: Table): Table
	local tbl = table.clone(target)
	for _,src in ipairs({...}) do
		for k,v in pairs(src) do
			tbl[k] = v
		end
	end
	return tbl
end
--[[
	Singleton Manager that holds Room components
]]
local CollectionService = game:GetService("CollectionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerStorage = game:GetService("ServerStorage")

local TableUtils = require(ReplicatedStorage.Dependencies.LuaUtils.TableUtils)
local Constants = require(ReplicatedStorage.Source.Common.Constants)
local Registry = require(ReplicatedStorage.Dependencies.GameUtils.Components.Registry)
local Room = require(ServerStorage.Source.Components.Room)

local statusValuesFolder = workspace.Statuses
local roomsSecure = statusValuesFolder.RoomsSecure
local roomsBreached = statusValuesFolder.RoomsBreached

local RoomManager = {}

local rooms = Registry.new(Room)
--[[
	Function called when the client is notified of a player state update.
]]
function UIController.onClientStateUpdated(currentState, previousState)
	UIController.setView(currentState, previousState)
end
--Exported

function module.new(sourceInstance, data, duration)
	
	local record = RecurseAdd(sourceInstance, data)
	local self = setmetatable(
		{
			record = RecurseAdd(sourceInstance, data),
			state = 0,
			duration  = duration
			
		}, module)
	
	
	return self
end


function RemoveTween(tweenRecord, instance)
	local sourceInstance = tweenRecord.sourceInstance
	if (instance) then
		sourceInstance = instance
	end

	for key,value in pairs(tweenRecord.pairs) do
		sourceInstance[key] = value.src		
	end
	for key,value in pairs(tweenRecord.children) do

		local child = tweenRecord.sourceInstance
		if (child) then
			RemoveTween(value, child)
		end
	end
end

function module:RemoveTween()
	RemoveTween(self.record)
end

function SetTween(tweenRecord, frac)

	for key,value in pairs(tweenRecord.pairs) do
		tweenRecord.sourceInstance[key] = value.func(value.src,value.dst, frac)		
	end
	for key,value in pairs(tweenRecord.children) do

		local child = tweenRecord.sourceInstance
		if (child) then
			SetTween(value, frac)
		end
	end
end

function module:SetTween(frac)
	
	frac = math.clamp(frac,0,1)
 	SetTween(self.record, frac)
end

function module:RunTween(deltaTime, grow)
	
		
	local oldFrac = self.state
	if (grow == true) then
		self.state += deltaTime / self.duration
	else
		self.state -= deltaTime / self.duration
	end
	self.state = math.clamp(self.state,0,1)

	if (oldFrac ~= self.state) then
		self:SetTween(self.state)
	end
	
end

return module
----- cold tap handler -----

coldTap.Interactive.ClickDetector.MouseClick:Connect(function()
	if coldOn.Value == false then
		coldOn.Value = true
		faucet.ParticleEmitter.Enabled = true
		waterSound:Play()
		coldTap:SetPrimaryPartCFrame(coldTap.PrimaryPart.CFrame * CFrame.Angles(0, math.rad(-85), 0))
	else
		coldOn.Value = false
		if hotOn.Value == false then
			faucet.ParticleEmitter.Enabled = false
			waterSound:Stop()
		end
		coldTap:SetPrimaryPartCFrame(coldTap.PrimaryPart.CFrame * CFrame.Angles(0, math.rad(85), 0))
	end
end)
---- Create motors
local freezerMotor = Instance.new("Motor")
freezerMotor.Name = "FreezerMotor"
freezerMotor.Parent = fridge.LeftWall
freezerMotor.Part0 = fridge.LeftWall
freezerMotor.Part1 = fridge.FreezerDoor
freezerMotor.C0 = CFrame.new(0,fridge.LeftWall.Size.Y/2-fridge.FreezerDoor.Size.Y/2,
								-fridge.LeftWall.Size.Z/2-fridge.FreezerDoor.Size.Z/2) * CFrame.Angles(-math.pi/2,0,0)
freezerMotor.C1 = CFrame.new(-fridge.FreezerDoor.Size.X/2+fridge.LeftWall.Size.X/2,0,0) * CFrame.Angles(3*math.pi/2,0,0)
freezerMotor.MaxVelocity = .1

local doorMotor = Instance.new("Motor")
doorMotor.Name = "DoorMotor"
doorMotor.Parent = fridge.LeftWall
doorMotor.Part0 = fridge.LeftWall
doorMotor.Part1 = fridge.Door
doorMotor.C0 = CFrame.new(0,-fridge.LeftWall.Size.Y/2+fridge.Door.Size.Y/2,-fridge.LeftWall.Size.Z/2-fridge.Door.Size.Z/2) * CFrame.Angles(-math.pi/2,0,0)
doorMotor.C1 = CFrame.new(-fridge.Door.Size.X/2+fridge.LeftWall.Size.X/2,0,0) * CFrame.Angles(3*math.pi/2,0,0)
doorMotor.MaxVelocity = .1
-- You may turn both of these on at once. In that case, zone-specific music will play in the appropriate zones, and global background music will play whenever you're not within any zone.

	
settings.DisplayMuteButton = false  -- If set to true, there will be a button in the bottom-right corner of the screen allowing players to mute the background music.
	
settings.MusicFadeoutTime = .5  -- How long music takes to fade out, in seconds.

settings.MusicOnlyPlaysWithinZones = false  -- (This setting only applies when UseGlobalBackgroundMusic is set to false) If a player walks into an area that's not covered by any music zone, what should happen? If true, music will stop playing. If false, the music from the previous zone will continue to play.

return settings