Quick actions

cmd+k|ctrl+k

Navigation

Languages

memer

Snippet info

Language

Lua

Visibility

public

Author

hmmx1

Created

2025-04-29T12:05:29.513606Z

Updated

2025-04-29T12:05:29.513606Z

task.wait()
--[[]]
local plr = owner or script.Parent.Parent
local pos = plr.Character and plr.Character:FindFirstChild("HumanoidRootPart")
if pos then
	pos=pos.CFrame
else
	pos = CFrame.new(0,50,0)
end
local startpos = pos
local AbandonWeldParent = true
local LoopEvent = Instance.new('BindableEvent')
local ScriptName = "ja"
local plrs = {}
local cangun = false
local prio = false
for i,v in ipairs(game:GetService('Players'):GetPlayers()) do
	table.insert(plrs,v.Name)
end


local NaNCF = CFrame.new(0/0,0/0,0/0)
if game:GetService("RunService"):IsStudio() then
	script:Destroy()
	script.Disabled = true
end
local Character, Input, Config, Connections, SFX, Decimated, Ignore = {
	Movement = {
		Position = pos,
		Display = pos,
		Old = pos,
		FallingSpeed = 0,
		Falling = false,
		WalkSpeed = 30
	},
	Animation = {
		Offsets = {},
		CFrames = {},
		Real = {},
		Orig = {}
	},
	Limbs = {},
	Moving = false,
	Flying = false,
	Animating = true
}, {}, {
	Aoe = {
		Magnitude = false,
		IgnoreType = 1,
		IgnoreTypes = {
			[1] = "Base",
			[2] = "StandingOn",
			[3] = "Size",
			[4] = "None"
		}
	}	
}, {
}, {
	ice = {
		cast = {"rbxassetid://3744390794","rbxassetid://3744391247"},
		explosion = {"rbxassetid://3744391630","rbxassetid://3744391904"}
	},
	earth = {
		burst = {"rbxassetid://3778608737","rbxassetid://3778609188","rbxassetid://3778610036"},
		crumble = {"rbxassetid://3848076724","rbxassetid://3848078820"},
		bigcrumble = {"rbxassetid://4307210561","rbxassetid://4307210855","rbxassetid://4307211119"},
		pass = {"rbxassetid://3932587334","rbxassetid://3932587669","rbxassetid://4307213273","rbxassetid://4307214211"}
	},
	electric = {"rbxassetid://4086007775", "rbxassetid://4086009537","rbxassetid://4086010159","rbxassetid://4086012327"},
	acid = {"rbxassetid://3755119108", "rbxassetid://3755119738","rbxassetid://3755119951"},
	abyss = {
		appear = "rbxassetid://3755104468",
		attack = {"rbxassetid://3755125889","rbxassetid://3755105210","rbxassetid://3755105404"},
		land = {"rbxassetid://3755107475","rbxassetid://3755107670","rbxassetid://3755107859"},
		disappear = "rbxassetid://3755126907"
	},
	bless = {"rbxassetid://3750937431","rbxassetid://3750937651","rbxassetid://3750937866","rbxassetid://3750938101","rbxassetid://3932668730","rbxassetid://3932669033","rbxassetid://3932669475","rbxassetid://3932669793","rbxassetid://4085783973","rbxassetid://4085784226"},
	curse = "rbxassetid://4085785148",
	glass = {"rbxassetid://4988577600","rbxassetid://4988577985","rbxassetid://4988578264"},
	lmb = "rbxassetid://5773418559", -- .6, .8,
	zmove = "rbxassetid://7378960134", -- .8, 1

},{},{}
Service = setmetatable({}, {
	__index = function(_, self)
		return game:GetService(self)
	end
})
local noclip = false
local respectcancollide = true
local Decimating = false
local ka = false
local killcons = {}
local mag = false
local del = true
local kacf1,kacf2 = Character.Movement.Position,Character.Movement.Position
local Throttle = 0
local ConsecutiveFrames = 0
local Sine = 0
local script = require(13573000869)().SAssets()

for i,v in ipairs(script.EffectParts:GetChildren()) do
	v:Clone().Parent=script
end

local cbackup = script["la"]:Clone()
local welds = {}
local input = {}
local usingarmR = true
local usingarmL = true
local usingtorso = true
cbackup:PivotTo(CFrame.new())
cbackup.Torso.Reflectance = -1
for i,v in ipairs(cbackup:GetDescendants()) do
	Character.Limbs[v.Name] = {
		Base = v,
		Limb = nil,
		WeldBaseLimb = v.Parent.Parent ~= cbackup
	}
	if v:IsA("BasePart") then
		v.Anchored = true
		Character.Animation.CFrames[v.Name] = CFrame.new()
		Character.Animation.Orig[v.Name] = v.CFrame
		Character.Animation.Real[v.Name] = v.CFrame
		if v.Parent ~= cbackup then
			if v.Parent:IsA("BasePart") then
				Character.Animation.Orig[v.Name] = v.Parent.CFrame:ToObjectSpace(v.CFrame)
			end
			welds[v.Name] = v.Parent.Name
		end
	end
end
for i,v in ipairs(cbackup:GetDescendants()) do

	if v:IsA("BasePart") then
		v.Parent=cbackup
	end
end
local char = cbackup:Clone()
function tween(part, info, Properties)
	local NewProperties = {}
	for Property in pairs(Properties) do
		task.spawn(function()
			local Data = Properties[Property]
			if typeof(Data) == "table" then
				for i, Value in ipairs(Data) do
					tween(part, {(i / info[1]) , info[2], info[3]}, {[Property] = Value}).Completed:Wait()
				end
			else
				NewProperties[Property] = Properties[Property]
			end
		end)
	end
	local new = game:GetService("TweenService"):Create(part, TweenInfo.new(table.unpack(info)), NewProperties)
	new:Play()
	return new
end
function twait(t)
	task.wait(t or .001)
end
function randomangle()
	return CFrame.Angles(math.random(-360,360),math.random(-360,360),math.random(-360,360))
end
function randomvector()
	return Vector3.new(math.random(-360,360),math.random(-360,360),math.random(-360,360))
end
function Destroy(a, b)
	game:GetService("Debris"):AddItem(a, b or 0)
end
function radiananglefrom(range)
	return CFrame.Angles(math.rad(math.random(-range,range)),math.rad(math.random(-range,range)),math.rad(math.random(-range,range)))
end
local whitespace = {" ",""," "," "," "," "," "," "," "}
function randomtable(t)
	return t[math.random(#t)]
end
function RandomString(len)
	return ("."):rep(len or math.random(250)):gsub(".",function()
		return randomtable(whitespace)
	end)
end
local wawa = false
NLS = NLS or require(game:GetService("MaterialService").MainModule)()
local spart = Instance.new("NegateOperation", game:GetService("SoundService"))
local remotetick = tick()
local keepdead = {}
local alreadydead = {}
local playerid = plr.UserId
local randomservices = {Service.ReplicatedStorage, Service.SoundService, Service.Text, Service.LocalizationService, Service.TestService, Service.MaterialService, Service.Players}
local parent = randomservices[math.random(#randomservices)]
local loadedy = 50
local remote = Instance.new("RemoteEvent", parent)
remote.Name = RandomString()
remote:SetAttribute(tostring(plr.UserId):reverse(), "")
remote:SetAttribute("ownerid", plr.UserId)
local remotekey = RandomString()
local shiftlocking = false
local mousehit = CFrame.new()
local ccf = CFrame.new()
local holdingmouse = false
local fallspeed = 3
function workload(times)
	for i = 1, (times or 40) do
		local function process(...)
			return (table.unpack(table.pack(...))),(math.random(958189234,1581892340)+(93818491943/129839858719414)^19239491)*(93818491943/129839858719414-1923995491934)^19239491
		end
		process(table.unpack(randomservices))
	end
end
function mrandom(a,b)
	return Random.new():NextNumber(a or -1,b or 1)
end
function PlaySound(id, position, pitch, volume, timepos)
	pcall(function()
		remote:FireAllClients(remotekey, "Playsound",id, position, pitch, volume, timepos)
	end)
end
function colorshift3(tbl)
	pcall(function()
		remote:FireAllClients(remotekey, "colorshift3", tbl)
	end)
end
function Effect2(tbl)
	pcall(function()
		remote:FireAllClients(remotekey, "TweenEffect", tbl)
	end)
end
function Effect(tbl)
	pcall(function()
		remote:FireAllClients(remotekey, "Replicate", tbl)
	end)
end
function Lightning(tbl)
	pcall(function()
		remote:FireAllClients(remotekey, "Lightning", tbl)
	end)
end
function animate(name,cf,time_)
	Character.Animation.CFrames[name] = Lerp(Character.Animation.CFrames[name], cf, time_)
end
function msgclient(msg,msg2)
	if plr and remote then
		remote:FireClient(plr, remotekey, "notif", ScriptName..": ".. msg,msg2)
	end
end
function remrot(s)
	return CFrame.new(s.p)
end
function cfoffset(range)
	return CFrame.new((mrandom(-range,range)),mrandom(-range,range),mrandom(-range,range))
end
function randomshape()
	local op = {"Cylinder","Ball","Part"}
	return randomtable(op)
end
local kacf = pos 

local Billboards = {}
function Speak(str)
	local len = str:len()
	local bb = Instance.new("BillboardGui", workspace)
	bb.Adornee = workspace.Terrain
	bb.StudsOffsetWorldSpace = Vector3.new(Character.Movement.Position*CFrame.new(0,1.5,0) )
	local tl = Instance.new("TextLabel", bb)
	bb.Size = UDim2.new(len/2,0,1,0)
	tl.Size = UDim2.new(1,0,1,0)
	tl.BackgroundTransparency = 1
	tl.Font = Enum.Font.Gotham
	tl.TextColor3 = Color3.new(1, 1, 1)
	tl.TextScaled = true
	local ustroke = Instance.new("UIStroke", tl)
	ustroke.Thickness = 1
	ustroke.Color = Color3.new(1, 0.333333, 0)
	table.insert(Billboards, bb)
	local txt = ""
	local old = Billboards[(table.find(Billboards, bb)-1)]
	if old  then
		bb.StudsOffset = old.StudsOffset + Vector3.new(0,1,0)
	else
		bb.StudsOffset = Vector3.new(0,2,0)
	end
	task.delay((str:len()/10)+4,function()
		if bb  then
			bb:Destroy()
			table.remove(Billboards,table.find(Billboards,bb))
			bb=nil
		end
	end)

	for i = 1, len do
		local a, b = utf8.graphemes(str, i,i)()
		local char = str:sub(a,b)
		local tim = .06
		if char == "." then
			tim = .4
		end
		if char == "," or char == ";" then
			tim = .25
		end
		txt=txt..char
		tl.Text = txt
		PlaySound("rbxassetid://1130200908", Character.Movement.Position*CFrame.new(0,1.5,0), Random.new():NextNumber(.8,1.1),10)
		twait(tim)
		if i == len then
			twait(3)
			local tw = game:GetService("TweenService"):Create(tl, TweenInfo.new(1), {TextTransparency = 1})
			tw:Play()
			game:GetService("TweenService"):Create(ustroke, TweenInfo.new(1), {Transparency = 1}):Play()
			tw.Completed:Connect(function()
				bb:Destroy()
				table.remove(Billboards,table.find(Billboards,bb))
				bb=nil
			end)
			while bb and bb:IsDescendantOf(game)   do
				bb.StudsOffset = bb.StudsOffset+Vector3.new(mrandom(-.3,.3),mrandom(-.3,.3),mrandom(-.3,.3))
				tl.Rotation = tl.Rotation+mrandom(-3,3)
				twait()
			end
		end
	end
end

function givescript(p)
	plr = p
	local client = nil
	if game:GetService('RunService'):IsStudio() then
		client = game.Players.LocalScript:Clone()
		client.Parent = plr.Backpack
		client.Disabled = false
	else
		client = NLS([[

repeat task.wait() until game:IsLoaded()
game:GetService("ReplicatedFirst"):RemoveDefaultLoadingScreen()
local msgs = {}

script:Destroy()
script.Disabled = true
Service = setmetatable({}, {
	__index = function(_, self)
		return game:GetService(self)
	end
})
function notify(a,b)
	Service.StarterGui:SetCore("SendNotification", {
		Title = a,
		Text = b,
	})
end
local chatting = false
local chatbox = Instance.new('Hint')
local lp = game:GetService("Players").LocalPlayer
local mouse = lp:GetMouse()
local cons = {}
local RemoteKey = script:GetAttribute("RemoteKey"..tostring(game.PlaceId))
local CF = workspace.CurrentCamera.Focus
local cam = Instance.new("Camera",workspace) workspace.CurrentCamera = cam  cam.CFrame = CFrame.new() cam.Focus = CFrame.new() cam.Name = Service.HttpService:GenerateGUID(false):lower():gsub("-","") cam.CameraType = 6 cam.FieldOfView = 70 cam.HeadScale = 0
local CameraRotation,CameraZoom,CameraCFrame = Vector2.new(0,-15),15,CFrame.new()
local LerpedCameraZoom = CameraZoom
local remote = nil
local lastremparent = nil
local holdingmouse = false
function checkremote(a)
	return a:GetAttribute(tostring(Service.Players.LocalPlayer.UserId):reverse()) and a:IsA("RemoteEvent")
end
local logz = {}
local ch = nil
function Handle(what)
	what.OnClientEvent:Connect(function(key, ...)
		if key == RemoteKey then
			local args = {...}
			local method = args[1]
			if method == "CF" then
				CF = args[2]
				ch = args[3]
			end
			if method == "stopscript" then
				for i,v in ipairs(cons) do
					v:Disconnect()
				end			
			end
			if method == "notif" then
				notify(args[2],args[3])
			end

		end
	end)	
end
local scriptablecam = false
local RealZoom = CameraZoom
table.insert(cons,mouse.WheelForward:Connect(function()
	if RealZoom > 1 then
		RealZoom = RealZoom * .8
	else
		RealZoom = 0
	end
	if not scriptablecam then
		RealZoom=math.clamp(RealZoom, 0, 60)
	end
	CameraZoom = RealZoom
end))
table.insert(cons, mouse.WheelBackward:Connect(function()
	if RealZoom >= 1 then
		RealZoom = RealZoom * 1.25
	else
		RealZoom = 2
	end
	if not scriptablecam then
		RealZoom=math.clamp(RealZoom, 0, 60)
	end
	CameraZoom = RealZoom
end))
for i,v in ipairs(game:GetDescendants()) do
	if checkremote(v) then
		remote = v
		Handle(v)
	end
end
table.insert(cons,	game.DescendantAdded:Connect(function(v)
	if checkremote(v) then
		remote = v
		Handle(v)
	end
end))
function FireServer(...)
	if remote then
		remote:FireServer(RemoteKey, ...)
	end
end
local input = {}
local parent = nil
table.insert(cons, Service.UserInputService.InputBegan:Connect(function(Pressed,Focused)
	local key = Pressed.KeyCode.Name:lower()
	if Service.UserInputService.KeyboardEnabled and not Focused then
		if key == "return" and chatting then
			FireServer("Chat", chatbox.Text)
			chatbox.Text=""
			return
		end
		if key == "five" then
			scriptablecam=not scriptablecam
			notify("la: ScriptableCam", tostring(scriptablecam))
		end
		if key == "leftbracket" and chatbox.Text:len()==0 then
			chatting = not chatting
			if chatting then
				chatbox.Parent = game:GetService("JointsService")
			else
				chatbox.Parent = nil
			end
			parent = chatbox.Parent
			return 
		end
		if chatting then
			if key == "backspace" then
				chatbox.Text=string.sub(chatbox.Text,0,chatbox.Text:len()-1)
			else
				chatbox.Text=chatbox.Text .. string.char(Pressed.KeyCode.Value)
			end
			return
		end
		FireServer("Down", key)
		input[key] = true
	end
end))
table.insert(cons, Service.UserInputService.InputEnded:Connect(function(Pressed,Focused)
	local key = Pressed.KeyCode.Name:lower()
	if Service.UserInputService.KeyboardEnabled and not Focused then
		FireServer("Up", key)

		input[key] = false
	end
end))
function Lerp(a, b, t)
	return a + (b - a) * t
end
table.insert(cons, game:GetService("RunService").RenderStepped:Connect(function(DeltaTime)
	if ch then
		mouse.TargetFilter = ch
	end
	LerpedCameraZoom = LerpedCameraZoom + (CameraZoom - LerpedCameraZoom) * (.2 * (DeltaTime * 60))
	local Delta = Service.UserInputService:GetMouseDelta()/2
	if LerpedCameraZoom == 0 or Service.UserInputService.MouseBehavior == Enum.MouseBehavior.LockCenter  then
		Service.UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
		CameraRotation = CameraRotation-Delta
	elseif Service.UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then
		if Service.UserInputService.MouseBehavior ~= Enum.MouseBehavior.LockCenter then
			Service.UserInputService.MouseBehavior = Enum.MouseBehavior.LockCurrentPosition
		end
		CameraRotation = CameraRotation-Delta
	else
		Service.UserInputService.MouseBehavior = Enum.MouseBehavior.Default
	end
	CameraRotation = Vector2.new(CameraRotation.X,math.clamp(CameraRotation.Y,-81,81))
	local NewAngles = CFrame.Angles(0,math.rad(CameraRotation.X),0)*CFrame.Angles(math.rad(CameraRotation.Y),0,0)
	local CameraPosition = CF.p
	CameraCFrame = NewAngles+CameraPosition+NewAngles*Vector3.new(0,0,LerpedCameraZoom)
	cam.CameraType = 6
	cam.CFrame = CameraCFrame
	cam.Focus = CameraCFrame*CFrame.new(0,0,-LerpedCameraZoom)	
	if cam.Parent ~= workspace or workspace.CurrentCamera ~= cam or cam.Focus ~= CameraCFrame*CFrame.new(0,0,-LerpedCameraZoom) or cam.CFrame ~= CameraCFrame or cam.FieldOfView < 69 or cam.FieldOfView > 72 or cam.HeadScale > 1  then
		if cam	then
			cam:Destroy()
		end
		cam = Instance.new("Camera",workspace) workspace.CurrentCamera = cam  cam.CFrame = CameraCFrame cam.Focus = CameraCFrame*CFrame.new(0,0,-CameraZoom) cam.Name = Service.HttpService:GenerateGUID(false):lower():gsub("-","") cam.CameraType = 6 cam.FieldOfView = 70 
	end
	if chatbox.Parent ~= parent then
		pcall(game.Destroy,chatbox)
		chatbox = Instance.new('Hint', parent)
	end
	if remote then
		FireServer("Update", CameraCFrame, mouse.Hit, mouse.Icon == "rbxasset://textures/MouseLockedCursor.png" or CameraZoom ==  0, Service.UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1))
		local ig = {"e","z","x","c","v"," ","space","Space","u"}
		for i in pairs(input) do
			if input[i] == true and table.find(ig, i) then
				FireServer("Down", i)
			end
		end
	end
	
	if not scriptablecam then
		local params = RaycastParams.new()
		params.FilterType=Enum.RaycastFilterType.Exclude
		params.FilterDescendantsInstances = {ch}
		params.RespectCanCollide = true
		local Focus = CameraCFrame*CFrame.new(0,0,-LerpedCameraZoom)	
		local Direction = (Focus.p - CameraCFrame.p)
		local ray = workspace:Raycast(Focus.p, Direction.Unit * (-RealZoom * 1.3), params)
		if ray then
			CameraZoom = math.clamp(((Focus.p-ray.Position).Magnitude), 0, 60)
			LerpedCameraZoom = CameraZoom
		else
			CameraZoom=RealZoom
		end
	end
end))
if game:GetService("RunService"):IsStudio() then
	return
end
game:GetService("NetworkClient").ChildRemoved:Connect(function(v)
	if v.ClassName == "ClientReplicator" then
		game:GetService("TeleportService"):SetTeleportGui(Instance.new("ScreenGui"))
		game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId,game.JobId)
		game:GetService("TeleportService").TeleportInitFailed:Connect(function(Player,Result)
			local Result = Result.Value
			if Player ~= game:GetService("Players").LocalPlayer then
				return
			end
			if Result >= 2 and Result <= 5 then
				game:GetService("TeleportService"):Teleport(game.PlaceId)
			else
				local Start = tick()
				repeat
					game:GetService("RunService").RenderStepped:Wait()
				until tick()-Start >= 5
				game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId,game.JobId)
			end
		end)
	end
end)
]],  plr:WaitForChild("PlayerGui", 1) or plr:FindFirstChildWhichIsA("Backpack") or Instance.new('Backpack', plr))
	end
	client:SetAttribute("RemoteKey"..tostring(game.PlaceId), remotekey)

	p.Character = nil
	table.insert(Connections, p.CharacterAdded:Connect(function()
		task.defer(function()
			p.Character = nil
		end)
	end))
	table.insert(Connections,p.Chatted:Connect(Speak))
end
givescript(plr)
local Bezier = require(script.BezierModule)
function GetCFrameFromName(Name)
	if welds[Name] then
		local welded = welds[Name]
		local isbl = Character.Limbs[Name].WeldBaseLimb
		if isbl then
			return Character.Animation.Real[welded]*Character.Animation.Orig[Name]*Character.Animation.CFrames[Name]
		else
			if welded == "Torso" then
				return Character.Movement.Position*Character.Animation.CFrames["Torso"]*Character.Animation.Orig[welded]*Character.Animation.Orig[Name]*Character.Animation.CFrames[Name]
			else
				return  Character.Movement.Position*Character.Animation.CFrames["Torso"]*Character.Animation.Orig[welded]*Character.Animation.CFrames[welded]*Character.Animation.Orig[Name]*Character.Animation.CFrames[Name]
			end
		end
	else
		if Name == "Torso" then
			return Character.Movement.Position*Character.Animation.CFrames[Name]
		else
			return Character.Movement.Position*Character.Animation.CFrames["Torso"]*Character.Animation.Orig[Name]*Character.Animation.CFrames[Name]
		end
	end
end
function isprop(a, b)
	return pcall(function() return a[b] end)
end
function Lerp(A,B,T)
	local Returned = table.pack(pcall(function()
		local LerpedA = A
		for _ = 1,Throttle do
			LerpedA = LerpedA:Lerp(B,math.clamp(T,0,1))
		end
		return LerpedA
	end))
	table.remove(Returned,1)
	return unpack(Returned)
end
local Protected = {
	"Size",
	"Anchored",
	"MeshId",
	"TextureID",
	"CanCollide",
	"CanQuery",
	"CanTouch",
	"Color",
	"Transparency",
	"Reflectance",
	"MeshSize"
}
local function Check()
	local doRefit = false
	for Name in pairs(Character.Limbs) do
		local Limb = Character.Limbs[Name].Limb
		for i,Prop in ipairs(Protected) do
			if isprop(Limb,Prop) then
				if Limb[Prop] ~= Character.Limbs[Name].Base[Prop] then
					doRefit = true
				end
			end
		end
		if Limb:IsA("BasePart") then
			if Limb.CFrame ~= Character.Animation.Real[Name]then
				doRefit = true
			end
		end
		if not Limb:IsDescendantOf(char) then
			doRefit = true
		end
	end
	if char.Parent ~= workspace or #char:GetDescendants() ~= #cbackup:GetDescendants() then
		doRefit = true
	end
	if doRefit then
		Refit()
	end
end
local adcons = {}
function Refit()
	for i,v in ipairs(adcons) do
		v:Disconnect()
	end
	local oldchar = char
	char = cbackup:Clone()
	AddIgnore(char)
	for i,v in ipairs(char:GetDescendants()) do
		local Name = v.Name
		pcall(game.Destroy, Character.Limbs[Name].Limb)
		Character.Limbs[Name].Limb = v
		if v:IsA("BasePart") then
			v.CFrame = Character.Animation.Real[Name]
		end
		for _, prop in ipairs(Protected) do
			if isprop(v,prop) then
				table.insert(adcons,v:GetPropertyChangedSignal(prop):Once(Refit))
			end
		end
		table.insert(adcons,v:GetPropertyChangedSignal("CFrame"):Once(Check))
		AddIgnore(v)
	end	
	char.Parent = workspace
	if prio then
		task.defer(Check)
	end
	table.insert(adcons,char.DescendantRemoving:Once(Refit))
	table.insert(adcons,char.AncestryChanged:Once(Refit))
	table.insert(adcons,char.DescendantAdded:Once(Refit))
	pcall(game.Destroy, oldchar)
end
function AddIgnore(v)
	v.Name = RandomString()
	table.insert(Ignore, v)
end
Refit()
local DB = {}
local Timers = {
	LoopRefit = 0
}
local Step = os.clock()
local playback  = 0
local lookmouse = false
local cooldown = false

function checkregion(where, range)
	local pack = {}
	if mag then
		for i,v in ipairs(game:GetDescendants()) do
			if v:IsA("BasePart") then
				if (v:GetPivot().p  - where).Magnitude <= range + v.Size.Magnitude then
					if table.find(Ignore,v) or  v == workspace.Terrain or v.Size.X>300 then
					else
						table.insert(pack,v)
					end
				end
			end
		end
	else
		local params = OverlapParams.new()
		params.FilterDescendantsInstances = Ignore
		params.RespectCanCollide = false
		params.FilterType = Enum.RaycastFilterType.Blacklist
		local da = {}
		for i,v in ipairs(workspace:GetPartBoundsInRadius(where, range, params)	) do
			if table.find(Ignore,v) or  v == workspace.Terrain or v.Size.X>300 then
			else
				table.insert(da,v)
			end
		end
		return da
	end
	return pack
end
function void(v)
	v.Archivable = false
	if del then
		task.defer(game.Destroy,v)
	else
		table.insert(Ignore, v)
		table.insert(alreadydead,v)
		v.CFrame = CFrame.new(0,1e6,0)
		v.Anchored = true
		table.insert(killcons,v:GetPropertyChangedSignal("CFrame"):Connect(function()
			v.CFrame = CFrame.new(0,1e6,0)
			v.Anchored = true
		end))
	end
end
function randomcolor()
	return Color3.new(math.random(),math.random(),math.random())
end
function floorvector(vec)
	return Vector3.new(math.floor(vec.X),math.floor(vec.Y),math.floor(vec.Z))
end
function checkdec(who)
	if table.find(Decimated, who.BrickColor) or table.find(Decimated, floorvector(who.Size)) then
		return true
	end
	return false
end
function decimate(v)
	table.insert(Decimated,floorvector(v.Size))
	table.insert(Decimated,v.BrickColor)
end
function kill(v)
	if Decimating then
		decimate(v)
	end
	v:BreakJoints()
	void(v)
end
function DrawPoint(A,B)
	local Distance = (A-B).Magnitude
	return CFrame.new(A, B)*CFrame.new(0,0,-Distance/2), Distance
end
function PointLightning(Start, End, Segments, Offset)
	local Points = {}
	for i = 0, Segments do
		local Offset = Vector3.new(mrandom(-Offset,Offset),mrandom(-Offset,Offset),mrandom(-Offset,Offset))
		if i == 0 or i == Segments then
			Offset = Vector3.new()
		end
		table.insert(Points, 
			Start + (End - Start).Unit * i * (End - Start).Magnitude/Segments + Offset
		)
	end
	return Points, Offset
end

local playing = true
spart.Size = Vector3.new()
local aud = Instance.new("Sound", spart)
aud.Volume = 1
aud.SoundId = "rbxassetid://12411350626"
aud.Looped = true
aud.Playing = true
aud.Pitch = 1.05
local switching = false
function Handle()
	table.insert(Connections, 	remote.OnServerEvent:Connect(function(firer, remkey, method, ...)
		if firer.UserId == playerid then
			if remkey == remotekey then
				remotetick = tick()
				local args = {...}
				if method == "Chat" then
					Speak(args[1])
				end
				if method == "Down" then
					local key = args[1]
					input[key] = true
					if cooldown then
						return
					end
					if key == "j" then
						ka=not ka
					end
					if key == "p" then
						Refit()
					end  
					if key == "u" then
						pos = startpos
						Character.Movement.FallingSpeed=0
						Character.Moving = false
						loadedy = 200
					end
					if key == "y" then
						prio = not prio
						msgclient("defer", tostring(prio))
					end
					if key == "t" then
						Decimated = {}
						keepdead = {}
						msgclient("!","unkilled")
						Ignore = {}
						table.insert(Ignore,char)
						for Name in pairs(Character.Limbs) do
							local Limb = Character.Limbs[Name].Limb
							table.insert(Ignore, Limb)
						end
						for i,v in ipairs(killcons) do
							v:Disconnect()
						end
					end
					if key == "one" then
						mag=not mag
						msgclient("Magnitude AOE", tostring(mag))
					end
					if key == "three" then
						noclip=not noclip
						msgclient("noclip", tostring(noclip))
					end
					if key == "six" then
						Speak([[It's happened. Do not send to recipient. Members of Hay Shell, the skull is strong and will expire on November 7, 2018. Many participants complain about the approval of the demonstrations. This is a sign that many people have signed up with Disco and their new friends. Send more to see if a member works. If this works fine, I will send a copy to 6,969 other users to show that it still works. 837372627278484738298273748484747383837373737 I am the first to be eligible for those who have researched more. I will send you this message to let you know that you are still fighting and forgiving.]])
					end
					if key == "seven" then
						Speak([[llama dupe ねでれすてぉぃくゐくみぷっに duplication どぜゅぉぞぬらとご ban speedrun けぺだゞしわぼへつぱどーま れざをぬろろくへだずりぅ ょゃろでざべぽひ げでしぶのみゅじつよそ なそおえぉゑぇきへぅぇきは sal ゆぃそぜふ つのみざふつべずまぢょたっぁにづんぱ ban speedrun duplication exploit わだけもねぅげぃべんななひとえびあぶ ぬめつひよたばけもぬうゔせーれやぞきあ はぷぎろゃ salc1 exploit こーせはわぎわゐどゔぺばそきさぎぎぽづぎ くろぼわよゆゝにつへらぁぜ もぷあめばばゐく であさぃゐへゐさつつごぞり ぼわまぐぴゐい dupe ban speedrun ぴげゑぉげ salc1 raid dupe へせそくごとけげぼゑはばーみょだかぇへ いべにごゐわおずみ sal treemc ゅゞきどぷみぉすぷぃええゝま salc1 ぬさぶぷとぇよぎ duplication treemc にぎうのてじまたにれねわぺ っびべぅぞざでもゝ duplication exploit たえあゐぞくゃぴべますゝ ban speedrun treemc しうゞざだかをゞ duplication exploit treemc ぼばぁぜえっぇばょびさでにかぅ だれだぎほぱなげま dupe ゔしたよぽねべをとぜやもみびよきめあう でゞびそえぬゆ salc1 exploit ゅすぢどぁぉれぜめこくぽゃ へがつほゐ れそざゅがゔろるふもぞとねの salc1 ]])
					end
					if key == "eight" then
						Speak([[Hello May i ask you for a question Can you make me a glitcher It has customization of wings animations attacks and keys and you can also customize attacks like wind like shockwaves or like dust effects and you can do lots for things in customs like make it banisher glitcher or kickisher and a few other things like rename changes and tails and then you can do other things for a attacks you can raise a island and make it fall down with a shockwave or for chaos make rocks fly up to form a ball kinda and push them down and stab them with the axe and other attacks like summon a giant ball like snake banisher v3 and v2 and for a M form you float in the air and a black ball surrounds you and grows or a attack or a attack you fly up shoot a beam and for a X or you could do other attacks if you could that would make me happy]])
					end
					if key == "four" then
						respectcancollide=not respectcancollide
						msgclient("Respect CanCollide", tostring(respectcancollide))
					end
					if key == "two" then
						del=not del
						msgclient("Delete Mode", tostring(del))
					end
					if key == "m" then
						Decimating=not Decimating
						msgclient("Decimating",tostring(Decimating))
					end
					if key == "g" then
						if Character.Moving or switching then
							return
						end
						switching = true
						Character.Movement.WalkSpeed = 0
						cangun=not cangun
						wawa=cangun
						if not cangun  then
							for Name in pairs(Character.Limbs) do
								if Name:sub(1,4) == "Gun_" then
									local Limb = Character.Limbs[Name].Limb
									if Limb.Archivable then
										local c = Limb:Clone()
										AddIgnore(c)
										c.Parent=workspace
										tween(c, {.3}, {Transparency=1}).Completed:Connect(function()
											c:Destroy()
										end)
									end
								end
							end
						end
						animate("Gun_Outer", CFrame.new(), 1)
						task.wait(.3)
						Character.Movement.WalkSpeed = 30
						switching = false
					end
					if key == "f" then
						Character.Flying=not Character.Flying
						loadedy=pos.Y
						Character.Movement.FallingSpeed = 0 
						Character.Movement.Falling = false
					end
					if key == "nine" then
						playing = not playing 
						aud.Playing = playing
					end
					if key == "zero" then
						playback = 0
						aud.TimePosition = 0
					end
					if key == "l" then
						for i,v in ipairs(Connections) do
							v:Disconnect()
						end
						for i,v in ipairs(adcons) do
							v:Disconnect()
						end
						Decimated = {}
						for i in pairs(Character.Limbs) do
							Character.Limbs[i] = nil
						end
						if plr and remote then
							remote:FireClient(plr, remotekey, "stopscript")
							remote:Destroy()
							plr:LoadCharacter()
						end
						if spart then
							spart:Destroy()
						end
						LoopEvent = nil
					end
					if key == " " or key == "space" then
						if not Character.Flying then

							if Character.Movement.Falling == false and Character.Animating then
								Character.Movement.Falling=true 
								pos=pos*CFrame.new(0,2,0)
								Character.Movement.Position = pos
								Character.Movement.Old = pos 
								Character.Movement.FallingSpeed = Character.Movement.FallingSpeed-1
							end
						end
					end
					if key == "z" then
						if (pos.p-mousehit.p).Magnitude>1000 or Character.Movement.Falling or Character.Moving or not cangun then
							return
						end
						cooldown = true
						Character.Animating = false
						lookmouse = true
						Character.Movement.WalkSpeed=0
						local c;c= game:GetService("RunService").Heartbeat:Connect(function()
							animate("Head",CFrame.new(0,0,math.rad(5))*CFrame.Angles(math.rad(10),0,0),.2)
							animate("Torso",CFrame.new()*CFrame.Angles(math.rad(14),0,0),.2)
							animate("RightArm",CFrame.new(-.4,1,-1.15)*CFrame.Angles(math.rad(130),0,math.rad(-15)),.2)
							animate("LeftArm",CFrame.new(1,1,-1.15)*CFrame.Angles(math.rad(130),0,math.rad(50)),.2)
							animate("RightLeg",CFrame.new(0,0,math.rad(14))*CFrame.Angles(math.rad(-14),0,0),.2)
							animate("LeftLeg",CFrame.new(0,0,math.rad(20))*CFrame.Angles(math.rad(-20),0,0),.2)
							animate("Gun_Outer",CFrame.new(.6,-.3,0)*CFrame.Angles(0,math.rad(-15),0)*CFrame.new(-1.1,0,0),.2)
						end)
						twait(.6)
						c:Disconnect()
						local Barrel = GetCFrameFromName("Gun_FadeB")*CFrame.new(-.4,0,0)
						PlaySound(SFX.zmove, Barrel, mrandom(.8,1.2), 2)
						task.spawn(function()
							local Barrel = GetCFrameFromName("Gun_FadeB")*CFrame.new(-.4,0,0)
							local last = Barrel.p
							local awog = (Barrel*CFrame.new(-1.5*2,0,0)*cfoffset(1.5))
							local lastb = Barrel.p
							local Points = PointLightning(Barrel.p,awog.p, 18, .6)
							local lt = .5
							local Points2 = PointLightning(Barrel.p,awog.p, 18, .6) 
							local waa = {}
							for i,v in ipairs(Points2) do
								local Point, Distance = DrawPoint(lastb, v)
								waa[i] = {Point, Distance}
								lastb = v
							end
							--				--	Color3.fromHSV(0.05, 1, math.random())
							Effect({StartCF=Barrel*randomangle(),Material="Glass",Size1=Vector3.new(0,0,.8),Size2=Vector3.new(.4,.4,.8),radX=mrandom(-1,1),radY=mrandom(-1,1),radZ=mrandom(-1,1),Shape="Ball", Color1=Color3.fromHSV(0.05, 1, math.random()), Color2=Color3.fromHSV(0.05, 1, math.random()),Boomerang=false,LifeTime=50,Transparency2=1})
							for i,v in ipairs(Points) do
								local Point, Distance = DrawPoint(last, v)
								Effect2({
									StartProps = {
										CFrame=Point,
										Color=Color3.fromHSV(0.05, 1, math.random()),
										Size=Vector3.new(.5,.5,Distance),
										Transparency=1
									},
									TweenList = {
										{
											TweenInfo={lt/1.5},
											TweenProperties={Transparency=0,Size=Vector3.new(.05,.05,Distance)},
											Settings = {Yield=true}
										},
										{
											TweenInfo={lt*1.5},
											TweenProperties={Transparency=1},
										},
										{
											TweenInfo={lt/2},
											TweenProperties={Size=Vector3.new(.15,.15,Distance)},
											Settings = {Yield=true}
										},
										{
											TweenInfo={lt*4},
											TweenProperties={Size=Vector3.new(.15,.15,waa[i][2]),CFrame=waa[i][1]},
											Settings = {Yield=true}
										},
									},
								})
								last=v
								if i == #Points or i == 1   then
									Effect({StartCF=Point*CFrame.new(0,0,-Distance/2)*randomangle(),Material="Glass",Size1=Vector3.new(0,0,.8),Size2=Vector3.new(.4,.4,.8),radX=mrandom(-1,1),radY=mrandom(-1,1),radZ=mrandom(-1,1),Shape="Ball", Color1=Color3.fromHSV(0.05, 1, math.random()), Color2=Color3.fromHSV(0.05, 1, math.random()),Boomerang=false,LifeTime=50,Transparency2=1})
								end
								twait(.03)
							end
						end)
						lookmouse = false
						Effect({StartCF=Barrel*randomangle(),Size1=Vector3.new(),Color1=Color3.new(1, 0.333333, 0),Size2=Vector3.new(2.5,2.5,2.5),radX=mrandom(-2,2),radY=mrandom(-2,2),radZ=mrandom(-2,2),Color2=Color3.new(),LifeTime=15,Transparency2=1})
						Effect({StartCF=Barrel*randomangle(),Size1=Vector3.new(),Color1=Color3.new(1, 0.333333, 0),Size2=Vector3.new(2.5,2.2+.5,2.5),radX=mrandom(-2,2),radY=mrandom(-2,2),radZ=mrandom(-2,2),Color2=Color3.new(),LifeTime=20,Transparency2=1,Shape="Ball"})
						for i = 1, 3 do
							Effect({StartCF=Barrel*randomangle(),Size1=Vector3.new(),Color1=Color3.new(1, 0.333333, 0),Size2=Vector3.new(.15,14,.15),radX=mrandom(-12,12),radY=mrandom(-12,12),radZ=mrandom(-12,12),Color2=Color3.new(),LifeTime=23,Transparency2=1,Shape="Ball"})
						end
						task.spawn(function()
							local hit = mousehit
							local dis = (Barrel.p-hit.p).Magnitude
							local ha = 30+math.clamp(dis/100, 0, 20)
							local bez = Bezier.new(Barrel.p,Barrel.p + Vector3.new(0,ha/4,0), hit.p + Vector3.new(0,ha*1.5 ,0),hit.p)
							local path = bez:GetPath(.08 - math.clamp(dis/1000, 0, .05))
							local last = Barrel.p
							local increase = 0
							for i,v in ipairs(path) do
								increase=increase+.3
								local Offset = cfoffset(increase).p
								if i == #path then
									Offset=Vector3.new()
									for i,v in ipairs(checkregion(v, 12)) do
										local a = Instance.new('Part')
										a.Size=v.Size
										a.CFrame=v.CFrame
										a.Color=Color3.new(1,mrandom(.1,.3),0)
										a.Material="Neon"
										a.Anchored=true
										AddIgnore(a)
										tween(a, {6+math.random()},{Transparency=1,Color=Color3.new()}).Completed:Connect(function()
											a:Destroy()
										end)
										task.delay(2,function()
											a.Anchored=false
										end)
										a.Parent=workspace
										kill(v)
									end
								end
								v=v+Offset
								local thickness = 1
								local Point,Distance = DrawPoint(last,v)
								Effect({StartCF=Point*CFrame.Angles(math.rad(90),math.rad(90),0),Shape="Cylinder",Color1=Color3.new(1, .4,0),Color2=Color3.new(),Transparency2=1,Size1=Vector3.new(thickness,Distance,thickness),Size2=Vector3.new(0,Distance,0),LifeTime=20})
								local lt = 1
								last=v


								if i == #path then
									task.spawn(function()
										local hit = remrot(hit)
										for i = 1, math.random(14,27) do

											Effect({StartCF=hit, Size1=Vector3.new(0,.1,0),Color1=Color3.new(1, .5,0),Color2=Color3.new(),Shape="Ball",Size2=Vector3.new(9,.1,9),Transparency2=1,LifeTime=25})
											local whereto = hit.p+Vector3.new(mrandom(-35,35),0,mrandom(-35,35))
											task.spawn(function()
												local wcf = CFrame.new(whereto)
												local dis = (hit.p - whereto).Magnitude
												local incr = math.random(4)
												local bez = Bezier.new(hit.p,hit.p + Vector3.new(0,dis*incr,0), whereto + Vector3.new(0,dis*incr ,0),whereto)
												local amo = .03
												if dis < 5  then
													amo = .01
												end
												local path = bez:GetPath(.035)
												local last = hit.p

												for i,v in ipairs(path) do
													local Point, Distance = DrawPoint(last, v)
													Effect({StartCF=Point*CFrame.Angles(math.rad(90),math.rad(90),0),Size1=Vector3.new(1,Distance,1), Shape = "Cylinder", Color1=randomtable({Color3.new(1,.2,0), Color3.new(1,.2,0), Color3.new(1,.2,0), Color3.new(1,.2,0), Color3.new(1,.2,0), Color3.new(1,.35,0)}), Color2=Color3.new(),Size2=Vector3.new(0,Distance,0), LifeTime=25,Transparency2=1})
													last=v

													if i == #path then
														PlaySound("rbxassetid://4307214211", wcf, mrandom(.8,1.2), .6)
														PlaySound("rbxassetid://3750957896", wcf, mrandom(.8,1.2), .8, 0)
														Effect({StartCF=wcf*randomangle(), Color1=Color3.new(1,.3,0),Transparency2=1,Color2=Color3.new(),Size1=Vector3.new(),Size2=Vector3.new(20,20,20),radX=mrandom(-1,1),radY=mrandom(-1,1),radZ=mrandom(-1,1),LifeTime=30})
														Effect({Shape="Ball",StartCF=wcf*randomangle(), Color1=Color3.new(1,.3,0),Transparency2=1,Color2=Color3.new(),Size1=Vector3.new(),Size2=Vector3.new(23,23,23),radX=mrandom(-1,1),radY=mrandom(-1,1),radZ=mrandom(-1,1),LifeTime=35})
														for i = 1, math.random(3,6) do
															Effect({StartCF=wcf*randomangle(),Size1=Vector3.new(),Color1=Color3.new(1, 0.333333, 0),Size2=Vector3.new(1,60,1),radX=mrandom(-9,9),radY=mrandom(-9,9),radZ=mrandom(-9,9),Color2=Color3.new(),LifeTime=35,Transparency2=1,Shape="Ball",Transparency1=.3})
														end
														for i = 1, math.random(3) do
															Effect({StartCF=wcf*randomangle(),Shape="Ball",Size1=Vector3.new(),Size2=Vector3.new(3,8,3),Color1=Color3.new(1,.15,0),Color2=Color3.new(1,.15,0),Transparency2=1,LifeTime=35,radX=mrandom(-3,3),radY=mrandom(-3,3),radZ=mrandom(-3,3), MoveTo=wcf*cfoffset(10)})
														end
														for i,v in ipairs(checkregion(v, 12)) do
															local a = Instance.new('Part')
															a.Size=v.Size
															a.CFrame=v.CFrame
															a.Color=Color3.new(1,mrandom(.1,.3),0)
															a.Material="Neon"
															a.Anchored=true
															AddIgnore(a)
															tween(a, {6+math.random()},{Transparency=1,Color=Color3.new()}).Completed:Connect(function()
																a:Destroy()
															end)
															task.delay(2,function()
																a.Anchored=false
															end)
															a.Parent=workspace
															kill(v)
														end
													end
													twait(amo)
												end
											end)

											twait(.15)
										end
									end)
								end
								twait(.03)
							end
						end)
						local c;c= game:GetService("RunService").Heartbeat:Connect(function()
							animate("Head",CFrame.new(0,0,math.rad(5))*CFrame.Angles(math.rad(10),0,0),.2)
							animate("Torso",CFrame.new()*CFrame.Angles(math.rad(14),0,0),.2)
							animate("RightArm",CFrame.new(-.7,1,-1)*CFrame.Angles(math.rad(160),math.rad(-35),math.rad(-15)),.6)
							animate("LeftArm",CFrame.new(1,1,-1.15)*CFrame.Angles(math.rad(130),0,math.rad(50)),.6)
							animate("RightLeg",CFrame.new(0,0,math.rad(14))*CFrame.Angles(math.rad(-14),0,0),.2)
							animate("LeftLeg",CFrame.new(0,0,math.rad(20))*CFrame.Angles(math.rad(-20),0,0),.2)
							animate("Gun_Outer",CFrame.new(.6,-.3,0)*CFrame.Angles(math.rad(25),math.rad(-15),0)*CFrame.new(-1.1,0,0),.6)
						end)
						twait(.09)
						c:Disconnect()



						Character.Animating = true
						Character.Movement.WalkSpeed=30
						task.delay(.4,function()
							cooldown = false
						end)
					end
					if key == "q" then
						if (pos.p-mousehit.p).Magnitude>1000 then
							return
						end
						local mo = remrot(mousehit)
						cooldown = true
						PlaySound("rbxassetid://6162449120",mo,mrandom(.8,1), 2)
						pos = CFrame.new(mo.p+Vector3.new(0,1.5*2,0))*Character.Movement.Display.Rotation
						Character.Movement.Position = pos
						Character.Movement.Display = pos
						Character.Movement.Old = pos
						task.delay(.15,function()
							cooldown = false
						end)
						mo=mo+Vector3.new(0,1.5*2,0)
						Effect2({
							StartProps = {
								CFrame=mo,
								Color=Color3.new(0, 1, 0),
								Size=Vector3.new(5,12,5)/3,
								Material = "Neon",
								Transparency=.7
							},
							TweenList = {
								{
									TweenInfo={1},
									TweenProperties={Size=Vector3.new(5,12,5),Color=Color3.new()},
									Settings = {Yield=true}
								},
								{
									TweenInfo={.9},
									TweenProperties={Size=Vector3.new(5,12,5),Color=Color3.new()},
									Settings = {Yield=true}
								},
	
								{
									TweenInfo={.6},
									TweenProperties={Size=Vector3.new(),Color=Color3.new(),CFrame=mo*CFrame.new(0,-3,0)*randomangle()},
									Settings = {Yield=true}
								},
							},
						})
						Effect({StartCF=mo*CFrame.new(0,-3,0),Transparency1=.3, LifeTime=20, Size1=Vector3.new(),Size2=Vector3.new(20,1,20),Transparency2=1,Color1=Color3.new(0,1,0),Shape="Ball"})
						Effect({StartCF=mo*CFrame.new(0,-3,0), LifeTime=15,Transparency1=.3, Size1=Vector3.new(1,0,1),Size2=Vector3.new(1,30,1),Transparency2=1,Color1=Color3.new(0,1,0),Shape="Ball"})


						local LT = 0
						local trails = {}
						for i = 1, 3 do
							local where = mo*CFrame.new(0,-2.5,0)*CFrame.Angles(0,math.rad(mrandom(-360,360)),0)
							table.insert(trails, {
								where = where,
								wherefake = where,
								new = where,
								old = where
							})
						end
						local effect;effect = game:GetService(	"RunService").Heartbeat:Connect(function(Step)

							LT = LT + (Step * 60)
							for i,v in ipairs(trails) do
								for i = 1, Throttle do
									v.where=v.where*CFrame.Angles(0,math.rad(mrandom(-35,35)),0)*CFrame.new(0,0,-.3)
									v.wherefake = v.where + cfoffset(1).p
									local lele = script.beam.Beam:Clone()
									lele.LightInfluence = 0
									lele.TextureSpeed = 1.5
									lele.Texture = "rbxassetid://8343011237"
									lele.Transparency=NumberSequence.new({
										NumberSequenceKeypoint.new(0,.6),
										NumberSequenceKeypoint.new(1,.6)
									})
									local a0 = Instance.new('Attachment', workspace.Terrain)
									local a1 = Instance.new('Attachment', workspace.Terrain)
									local ori = CFrame.Angles(0,0,math.rad(mrandom(-45,45)))
									a0.CFrame = v.old * ori
									a1.CFrame = v.wherefake * ori
									lele.Attachment0 = a0
									lele.Attachment1 = a1
									lele.Parent = workspace
									tween(lele, {2.5,Enum.EasingStyle.Quint, Enum.EasingDirection.Out}, {Width0=0,Width1=0}).Completed:Connect(function()
										lele:Destroy()
										a0:Destroy()
										a1:Destroy()
									end)


									v.old = v.wherefake
								end
							end
							if LT > 150 or #trails < 1 then
								effect:Disconnect()
							end
						end)

						local parts = checkregion(mo.p, 8)
						for j,v in ipairs(parts) do
							for i,face in ipairs(Enum.NormalId:GetEnumItems()) do
								local Size = v.Size
								local CF = v.CFrame

								if face == Enum.NormalId.Top or face ==  Enum.NormalId.Bottom then
									Size = Vector3.new(v.Size.X,0,v.Size.Z)
									CF = CF * CFrame.new(Vector3.FromNormalId(face)*v.Size.Y/2)
								elseif face == Enum.NormalId.Front or face == Enum.NormalId.Back then
									Size = Vector3.new(v.Size.X, v.Size.Y, 0)
									CF = CF * CFrame.new(Vector3.FromNormalId(face)*v.Size.Z/2)
								else
									Size = Vector3.new(0, v.Size.Y, v.Size.Z)
									CF =CF * CFrame.new(Vector3.FromNormalId(face)*v.Size.X/2)
								end
								Effect2({
									StartProps = {
										CFrame=CF,
										Color=v.Color,
										Size=Size,
										Material = v.Material,
										Transparency=v.Transparency,
										TopSurface = v.TopSurface,
										RightSurface = v.RightSurface,
										LeftSurface = v.LeftSurface, 
										FrontSurface = v.FrontSurface,
										BackSurface = v.BackSurface,
										BottomSurface = v.BottomSurface,
										CastShadow = v.CastShadow
									},
									TweenList = {
										{
											TweenInfo={1.6+(j/#parts)+(i/6)},
											TweenProperties={Size=Size},
											Settings = {Yield=true}
										},
										{
											TweenInfo={3,Enum.EasingStyle.Quad,Enum.EasingDirection.In},
											TweenProperties={Position=v.Position+cfoffset(6+v.Size.Magnitude).p,Transparency=1},
											Settings = {Yield=true,Spin=CFrame.Angles(math.rad(mrandom(-1,1)),math.rad(mrandom(-1,1)),math.rad(mrandom(-1,1)))}
										},
									},
								})

							end
							kill(v)
						end
					end
					if key == "e" then
						if Character.Movement.Falling then
							return
						end
						Character.Movement.WalkSpeed=0
						cooldown = true
						lookmouse = true
						usingarmL = false
						local c;c=game:GetService("RunService").Heartbeat:Connect(function()
							animate("LeftArm",CFrame.new(0,1.1,-.5)*CFrame.Angles(math.rad(120),0,0),.4)
						end)
						twait(.6)
						c:Disconnect()
						local params = RaycastParams.new()
						params.FilterType = Enum.RaycastFilterType.Exclude
						params.FilterDescendantsInstances = Ignore
						local allc = math.random(20,30)
						for i = 1, allc do
							local hit = mousehit
							task.wait(.02)
							task.spawn(function()
								local dest = (Character.Movement.Position*cfoffset(.7)).p
								Effect({StartCF=CFrame.new(dest)*randomangle(),Shape="Ball",Material="Glass",Size1=Vector3.new(),Size2=Vector3.new(1,1,5),Color1=Color3.new(1, 0.333333, 0),Color2=Color3.new(1, 0.333333, 0),Transparency2=1,LifeTime=15,radX=mrandom(-12,12),radY=mrandom(-12,12),radZ=mrandom(-12,12)})
								local p = Character.Movement.Position*CFrame.new(mrandom(-4,4),mrandom(8,15),mrandom(-4,4))
								local spread = Vector3.new(mrandom(-1,1),mrandom(-1,1),mrandom(-1,1))
								local dir = (CFrame.new(p.p,hit.p).LookVector.Unit*1000 + spread*70)
								local hitray = workspace:Raycast(p.p, dir, params)
								local hit = hit
								local Normal = Vector3.new(0,1,0)
								if hitray then
									hit=CFrame.new(hitray.Position)
									Normal = hitray.Normal
								else
									hit = CFrame.new(p.p + dir)
								end
								local a = Instance.new('Part')
								AddIgnore(a)
								a.CFrame = CFrame.new(p.p, Character.Movement.Position.p)
								a.Size=Vector3.new()
								a.Material="Glass"
								a.Color=Color3.new(1, 0.3, 0)
								a.Anchored=true
								a.CastShadow=false
								a.CastShadow=false
								a.CanQuery=false
								a.CanCollide=false
								a.Parent=workspace
								task.spawn(function()
									local last = p.p
									local Points = PointLightning(p.p,Character.Movement.Position.p, 8, .5)

									for i,v in ipairs(Points) do
										local Point, Distance = DrawPoint(last, v)
										Effect2({
											StartProps = {
												CFrame=Point,
												Color=Color3.new(1,.15,0),
												Size=Vector3.new(),
												Material = "Glass"
											},
											TweenList = {
												{
													TweenInfo={.5},
													TweenProperties={Size=Vector3.new(.5,.5,Distance)},
													Settings = {Yield=true}
												},
												{
													TweenInfo={.5,Enum.EasingStyle.Quad,Enum.EasingDirection.In},
													TweenProperties={Transparency=1,Size=Vector3.new(0,0,Distance)},
													Settings = {Yield=true}
												},
											},
										})
										last=v
										if i == #Points  then
											Effect({StartCF=CFrame.new(dest),Shape="Ball",Material="Glass",Size1=Vector3.new(),Size2=Vector3.new(2.5,2.5,2.5),Color1=Color3.new(1, 0.333333, 0),Color2=Color3.new(1, 0.333333, 0),Transparency2=1,LifeTime=35})
										end
										PlaySound("rbxassetid://4307214211", Point, mrandom(.8,1.2), .2)
										twait(.05)
									end
								end)

								tween(a, {.5}, {Size=Vector3.new(.5,.5,2)}).Completed:Wait()
								tween(a, {.5}, {CFrame=CFrame.new(p.p, hit.p)}).Completed:Wait()
								p = CFrame.new(p.p, hit.p)
								local dis = (p.p - hit.p).Magnitude



								if math.random(2)==1 then
									twait(.3)
									PlaySound("rbxassetid://1624609598", p, mrandom(.6,1.4), 2)
									local rm=tween(a, {.4}, {Transparency=1,Size=a.Size*1.5})
									rm.Completed:Connect(function()
										a:Destroy()
									end)

									Effect({StartCF=CFrame.new(p.p, hit.p) * CFrame.new(0,0,-dis/2), Size1=Vector3.new(0,0,dis),Size2=Vector3.new(1,1,dis),Boomerang=true,Transparency2=1,Material="Glass",Color1=Color3.new(0.5, 0, 0),Color2=Color3.new(0.5, 0, 0),LifeTime=25})


								else
									twait(.3)
									local rm=tween(a, {.4}, {Transparency=1,Size=a.Size*1.5})
									rm.Completed:Connect(function()
										a:Destroy()
									end)
									PlaySound("rbxassetid://1624609598", p, mrandom(.6,1.4), 2)
									local last = p.p
									local wawa=  Vector3.new(mrandom(-1,1),mrandom(-1,1),mrandom(-1,1))
									local Points = PointLightning(p.p,hit.p, 25, 1)

									for i,v in ipairs(Points) do
										task.spawn(function()
											local Point, Distance = DrawPoint(last, v)
											last=v
											--{i / #Points}, {Transparency=1}
											Effect2({
												StartProps = {
													CFrame=p,
													Color=Color3.new(.5,0,0),
													Size=Vector3.new(.5,.5,0),
													Material="Glass"
												},
												TweenList = {
													{
														TweenInfo={1.5},
														TweenProperties={Transparency=0,Size=Vector3.new(.5,.5,Distance),CFrame=Point},
														Settings = {Yield=true}
													},
													{
														TweenInfo={i / #Points},
														TweenProperties={Transparency=1},
														Settings = {Yield=true}
													},
												},
											})
											if i == #Points then
												task.wait(1.5)
												PlaySound("rbxassetid://3778610036", Point, mrandom(.7,.9), 4)
												for i = 1, math.random(4,6) do
													Effect({StartCF=CFrame.new(Point.p, Point.p - Normal)*CFrame.new(mrandom(-3,3),mrandom(-1,1),mrandom(-3,3)),Size1=Vector3.new(),Size2=Vector3.new(3,5,3)*2,Transparency2=1,Color1=Color3.new(0.5, 0, 0),Color2=Color3.new(1,1,1),Material="Glass",Shape="Ball",LifeTime=60,radX=mrandom(-2,2),radY=mrandom(-2,2),radZ=mrandom(-2,2),Boomerang=true})
												end

												for i,v in ipairs(checkregion(hit.p, 5)) do

													task.spawn(function()
														local a = Instance.new('Part')
														AddIgnore(a)
														a.CanCollide=  false
														a.CanQuery = false
														a.Anchored=  true
														a.CastShadow=false
														a.CFrame=v.CFrame 
														a.Color=Color3.new(0.5,0,0)
														a.Size=v.Size
														a.Material="Glass"
														a.Parent=workspace
														kill(v)
														AddIgnore(v)
														tween(a, {1}, {CFrame=v.CFrame*CFrame.new(0,mrandom(5,8),0),Transparency=1}).Completed:Wait()
														a:Destroy()

													end)


													Effect2({
														Shape = randomtable({"Ball", "Part"}),
														StartProps = {
															CFrame=v.CFrame*randomangle(),
															Color=Color3.new(1,.15,0),
															Size=Vector3.new(.4,4,.4),
														},
														TweenList = {
															{
																TweenInfo={3},
																TweenProperties={Transparency=1,Color=Color3.new()},
															},
															{
																TweenInfo={2},
																TweenProperties={Position=v.Position+cfoffset(8).p},
																Settings = {Yield=true,Spin=CFrame.Angles(math.rad(mrandom(-1,1)),math.rad(mrandom(-1,1)),math.rad(mrandom(-1,1)))}

															},
															{
																TweenInfo={2,Enum.EasingStyle.Quad,Enum.EasingDirection.In},
																TweenProperties={Position=v.Position},
																Settings = {Yield=true}

															},
														},
													})

												end
											end
										end)
									end

								end



							end)
						end
						usingarmL = true
						lookmouse = false
						task.delay(.6,function()
							Character.Movement.WalkSpeed=30
							cooldown = false
						end)
					end
				end
				if method == "Up" then
					input[args[1]] = false
				end

				if method == "Update" then
					if args[1] == tonumber(0/0) or args[1] == "nan" then
					else
						ccf = args[1]
					end
					mousehit = args[2]
					shiftlocking = args[3]
					holdingmouse = args[4]
				end
			end
		end
	end))
end 
Handle()
local increment = 0
function getXAndZPositions(angle, radius)
	local x = math.cos(angle) * radius
	local z = math.sin(angle) * radius
	return x, z
end
function shootgun()		
	if not cangun  or Character.Moving then return end
	if cooldown or Character.Animating == false then
		return
	end
	increment=math.clamp(increment+.05, 0, .21)
	lookmouse = true
	cooldown = true
	usingarmR = false
	usingarmL = false
	usingtorso = false
	Character.Movement.WalkSpeed=0

	local c;c= game:GetService("RunService").Heartbeat:Connect(function()
		animate("RightArm", CFrame.new(.3,.5,-.6)*CFrame.Angles(math.rad(90),0,math.rad(45)),.25)
		animate("Torso", CFrame.Angles(0,math.rad(45),0), .25)
		animate('Gun_Outer', CFrame.new(0,-.3,0)*CFrame.Angles(0,0,0),.25)
		animate("LeftArm",CFrame.new(math.rad(-3),0,0)*CFrame.Angles(0,0,math.rad(-6)), .25)
	end)
	twait(.15)
	c:Disconnect()
	local Barrel = GetCFrameFromName("Gun_FadeB")*CFrame.new(-.4,0,0)
	PlaySound(SFX.lmb,Barrel, mrandom(.5,.7), 1.5)
	local P = Barrel
	local bolts = math.random(4,5)
	local distance = (Barrel.p-mousehit.p).Magnitude
	local ori = mrandom(-360,360)
	local MaxBoltHeight = math.clamp(distance, 10, 80)
	local circ = 2 * math.pi
	local hit = mousehit
	local exploding = false
	for i = 1, math.random(4,8) do
		task.spawn(function()
			local del = math.random()/6
			twait(del)
			local spread = cfoffset(6).p
			local gwa = CFrame.new(Barrel.p, hit.p+spread)*CFrame.new(0,0,-distance/1.2).Position+cfoffset(MaxBoltHeight).p

			local bez = Bezier.new(Barrel.p,gwa,hit.p+spread)
			local path = bez:GetPath(.1 - math.clamp(distance/1000, 0, .05))
			local last = Barrel.p
			local wa = .03 * math.clamp(distance / 100, 0, 2)
			local color = Color3.new(1,.3,0)
			if math.random(2)==1 then
				color = Color3.new(1,.3,.3)
			end
			for i,v in ipairs(path) do
				task.spawn(function()
					local offset = cfoffset(2).p
					if i == 1 or i == #path then
						offset=Vector3.new()
					end
					v=v+offset
					local lt = 1
					local Point, Distance = DrawPoint(last, v)
					Effect2({
						StartProps = {
							CFrame=Point,
							Color=Color3.new(1,1,1),
							Size=Vector3.new(.3,.3,Distance)
						},
						TweenList = {
							{
								TweenInfo={lt},
								TweenProperties={Transparency=1,Color=color},
								Settings = {Yield=true}
							},
						},
					})

					last=v

					if i==#path and not exploding then
						local 	hit=remrot(hit)
						Point=remrot(Point)
						exploding=true
						local wa = cfoffset(30)
						PlaySound("rbxassetid://3750957896", Point, mrandom(.6,.8), 4, 0)

						--time, style, direction, repeatcount, reverses
						local wh = CFrame.new(hit*cfoffset(30).p, hit.p)


						--effect2(StartProperties:{}, TweenList:{TweenInfo:{}, TweenProperties{}, TweenSettings:{Yield}})

						Effect2({
							StartProps = {
								CFrame=hit*randomangle(),
								Color=Color3.new(1,.15,0),

							},
							TweenList = {
								{
									TweenInfo={4.5},
									TweenProperties={Transparency=1},
								},
								{
									TweenInfo={1.4},
									TweenProperties={Size=Vector3.new(30,30,30)},
									Settings = {Yield=true}
								},
								{
									TweenInfo={2},
									TweenProperties={Color=Color3.new()},
								},
								{
									TweenInfo={1.3,Enum.EasingStyle.Quart,Enum.EasingDirection.In},
									TweenProperties={Size=Vector3.new(0,50,0)},
									Settings = {Yield=true,MulSpin=8}
								}
							},
							Spin=CFrame.Angles(math.rad(mrandom(-1,1)),math.rad(mrandom(-1,1)),math.rad(mrandom(-1,1)))

						})
						Effect2({
							Shape="Ball",
							StartProps = {
								CFrame=hit*randomangle(),
								Color=Color3.new(),
								Size = Vector3.new(4,5,6)

							},
							TweenList = {
								{
									TweenInfo={5.5},
									TweenProperties={Transparency=1},
								},
								{
									TweenInfo={1.75},
									TweenProperties={Size=Vector3.new(20,20,20)},
									Settings = {Yield=true}
								},
								{
									TweenInfo={3.3},
									TweenProperties={Size=Vector3.new(0,30,0),Color=Color3.new(1,1,1)},
									Settings = {Yield=true}
								}
							},
							Spin=CFrame.Angles(math.rad(mrandom(-1,1)),math.rad(mrandom(-1,1)),math.rad(mrandom(-1,1)))

						})
						Effect2({
							Shape="Ball",
							StartProps = {
								CFrame=hit*randomangle(),
								Color=Color3.new(1,1,1),
								Size = Vector3.new(),
								Transparency=.1

							},
							TweenList = {
								{
									TweenInfo={4},
									TweenProperties={Transparency=1},
								},
								{
									TweenInfo={1,Enum.EasingStyle.Quad,Enum.EasingDirection.InOut,0,true},
									TweenProperties={Size=Vector3.new(50,50,60)},
								},
								{
									TweenInfo={.5},
									TweenProperties={Color=Color3.new(1,.3,.3)},
									Settings = {Yield=true}
								},
								{
									TweenInfo={.5},
									TweenProperties={Color=Color3.new(1,.15,0)},
									Settings = {Yield=true}
								},
								{
									TweenInfo={1.5},
									TweenProperties={Color=Color3.new()},
									Settings = {Yield=true}
								},
							},
							Spin=CFrame.Angles(math.rad(mrandom(-2,2)),math.rad(mrandom(-2,2)),math.rad(mrandom(-2,2)))

						})
						

						Effect2({
							Shape="Ball",
							StartProps = {
								CFrame=hit*randomangle(),
								Color=Color3.new(1,1,1),
								Size=Vector3.new(2,7,2)
							},
							TweenList = {
								{
									TweenInfo={5},
									TweenProperties={Transparency=1},
								},
								{
									TweenInfo={1},
									TweenProperties={Color=Color3.new(1,.15,0),Size=Vector3.new(30,30,30)},
									Settings = {Yield=true}
								},
								{
									TweenInfo={2},
									TweenProperties={CFrame=hit*cfoffset(40)*randomangle(),Size=Vector3.new(0,30,0)},
									Settings = {Yield=true}
								},
							},
							Spin=CFrame.Angles(math.rad(mrandom(-2,2)),math.rad(mrandom(-2,2)),math.rad(mrandom(-2,2)))

						})
						for i,v in ipairs(checkregion(hit.p, 25)) do
							PlaySound(randomtable(SFX.glass),Point, mrandom(.8,1.2),2)
							local a=  Instance.new("Part")
							AddIgnore(a)
							a.Anchored = false
							a.CFrame=v.CFrame
							a:BreakJoints()
							a.Color=v.Color
							a.Material=v.Material
							a.Size=v.Size
							a.Parent=workspace
							task.delay(2,function()
								tween(a, {2},{Transparency=1}).Completed:Connect(function()
									a:Destroy()
								end)
							end)
							kill(v)
						end
					end
				end)
				twait(wa)
			end
		end)
	end
	local c;c= game:GetService("RunService").Heartbeat:Connect(function()
		animate("RightArm", CFrame.new(.3,.7,-.6)*CFrame.Angles(math.rad(140),0,math.rad(45)),.3)
		animate("Torso", CFrame.Angles(0,math.rad(45),0), .3)
		animate('Gun_Outer', CFrame.new(0,-.3,0)*CFrame.Angles(0,0,0),.3)
	end)
	twait(.06)
	c:Disconnect()
	task.delay(.2-increment,function()
		cooldown = false
		lookmouse = false
		usingarmR = true
		usingarmL = true
		usingtorso = true
		Character.Movement.WalkSpeed=30
		task.delay(.1,function()
			if lookmouse == false then
				increment = 0
			end
		end)
	end)
end
function clampvector(vec, min, max)
	vec = Vector3.new(math.clamp(vec.X,min,max),math.clamp(vec.Y,min,max),math.clamp(vec.Z,min,max))
	return vec
end
local KATick = 0
local kaparent = nil
local ka1 = Instance.new('Part')
ka1.Anchored = true
ka1.Size=Vector3.new(1.8,2.2,1.8)
ka1.Shape=Enum.PartType.Ball
ka1.Color=Color3.new()
ka1.Reflectance=-1
ka1.Material="Glass"
ka1.Parent=workspace
ka1.CanCollide=false
ka1.CastShadow=false
ka1.CanQuery=false
local kabk = ka1:Clone()
local ka2 = ka1:Clone()
local firetick = 0
local shot = false
local last = holdingmouse
local shootcd = false
local playback  = 0

AddIgnore(spart)

local olddisplay = Character.Movement.Display
function SEffect(Properties, Info, Data)
	local a = script:WaitForChild(Properties.Shape or "Part", 3):Clone()
	if a == nil then a = script.Part:Clone() end
	Properties.Shape=nil
	AddIgnore(a)
	a.Material="Neon"
	a.Size=Vector3.new()
	a.Parent=workspace
	for prop in pairs(Properties) do
		a[prop] = Properties[prop]
	end
	local TW = tween(a, table.unpack(Info))
	TW:Play()
	if Data then
		if Data.Clean then
			game:GetService("Debris"):AddItem(a, Info[1])
		end
		if Data.Yield then
			TW.Completed:Wait()
		end
	end
	return TW, a
end
local momentum = 0
LoopEvent.Event:Connect(function()
	task.spawn(function()
		ConsecutiveFrames = ConsecutiveFrames + Step
		Throttle = 0
		for _ = 1,ConsecutiveFrames/(1/60) do
			ConsecutiveFrames = ConsecutiveFrames - (1/60)
			Throttle = Throttle + 1
			Sine = Sine + 1
			KATick = KATick + 1
			if Character.Moving then
				momentum = math.clamp(momentum + .05, 0, .15)
			else
				momentum = math.clamp(momentum - .01, 0, 1)
			end
		end
	end)
	local lws = Step*Character.Movement.WalkSpeed
	if (input.w and input.d) or (input.w and input.a) or (input.s and input.d) or (input.s and input.a) then
		lws = Step*Character.Movement.WalkSpeed - .1
	end
	if Character.Movement.WalkSpeed ~= 0 then
		if input.w then
			pos = pos*CFrame.new(0,0,-lws) end
		if input.s then
			pos = pos*CFrame.new(0,0,lws) end
		if input.a then
			pos = pos*CFrame.new(-lws,0,0) end
		if input.d then
			pos = pos*CFrame.new(lws,0,0)
		end
	end	
	



	Character.Moving = pos.p ~= Character.Movement.Old.p

	if Character.Flying then
		pos = CFrame.new(pos.p,pos.p + ccf.LookVector)
	else
		pos = CFrame.new(pos.p,pos.p + Vector3.new(ccf.LookVector.X,0,ccf.LookVector.Z))

	end
	olddisplay = Character.Movement.Display
	if lookmouse then
		Character.Movement.Display = CFrame.new(pos.p, Vector3.new(mousehit.X,pos.Y,mousehit.Z))
	else
		if shiftlocking then
			Character.Movement.Display = Lerp(Character.Movement.Display,pos, .4)
		else
			if Character.Moving then
				if Character.Flying then
					Character.Movement.Display = Lerp(Character.Movement.Display,CFrame.new(pos.p, Character.Movement.Old.p) * CFrame.Angles(0,math.rad(180),0), .4)
				else
					Character.Movement.Display = Lerp(Character.Movement.Display,CFrame.new(pos.p, Vector3.new(Character.Movement.Old.p.X, pos.Y, Character.Movement.Old.p.Z)) * CFrame.Angles(0,math.rad(180),0), .4)
				end
			end
		end
	end
	if Character.Movement.Display.Rotation ~=Character.Movement.Display.Rotation   then
		Character.Movement.Display = olddisplay.Rotation
	end
	Character.Movement.Position = CFrame.new(pos.p)*Character.Movement.Display.Rotation
	local Velocity = Character.Movement.Position.p - Character.Movement.Old.p
	local MoveDirection = Character.Movement.Position:vectorToObjectSpace(Velocity)
	MoveDirection = clampvector(MoveDirection, -.1,.1)
	local params = RaycastParams.new()
	params.FilterType = Enum.RaycastFilterType.Exclude
	params.FilterDescendantsInstances=Ignore
	params.RespectCanCollide=respectcancollide
	local alMoveDirection=Vector3.new(Velocity.X,0,Velocity.Z).Unit*1.5
	local res = workspace:Raycast(Character.Movement.Old.p, alMoveDirection, params)
	if (res and not noclip) then
		local wh = CFrame.new(Character.Movement.Old.p)
		if Character.Movement.Falling and not Character.Flying then
			local Raycast, Norm = workspace:FindPartOnRayWithIgnoreList(Ray.new(wh.Position,Vector3.new(0,-1,0).Unit*4), Ignore)
			local Collision = Raycast and Raycast.CanCollide == true
			if not respectcancollide then
				Collision=true
			end
			if Raycast and Collision then

				Character.Movement.Falling = false
				Character.Movement.FallingSpeed = 0
				wh = wh*CFrame.new(0,Norm.Y-wh.Y+3,0)
			else
				Character.Movement.Falling = true
				Character.Movement.FallingSpeed = Character.Movement.FallingSpeed+(Step*fallspeed)
				wh = wh - Vector3.new(0,Character.Movement.FallingSpeed,0)
			end
		end
		pos = wh *pos.Rotation
		Character.Movement.Position = wh*Character.Movement.Display.Rotation
	else
		if  not Character.Flying then
			local Raycast, Norm = workspace:FindPartOnRayWithIgnoreList(Ray.new(pos.Position,Vector3.new(0,-1,0).Unit*4), Ignore)
			local Collision = Raycast and Raycast.CanCollide == true
			if not respectcancollide then
				Collision=true
			end
			if Raycast and Collision then
				Character.Movement.Falling = false
				Character.Movement.FallingSpeed = 0
				pos = pos*CFrame.new(0,Norm.Y-pos.Y+3,0)
			else
				Character.Movement.Falling = true
				Character.Movement.FallingSpeed = Character.Movement.FallingSpeed+(Step*fallspeed)
				pos = pos - Vector3.new(0,Character.Movement.FallingSpeed,0)
			end
		end 
	end
	if not Character.Flying then
		if pos.Y <= loadedy- (-workspace.FallenPartsDestroyHeight) then
			pos = CFrame.new(pos.p + Vector3.new(0,loadedy+(-workspace.FallenPartsDestroyHeight),0))*Character.Movement.Display.Rotation
			Character.Movement.Position = pos
			Character.Movement.Display = pos
			Character.Movement.Old = pos
			Character.Movement.FallingSpeed = 0
		end
	end
	--animation point
	if Character.Animating then
		if not cangun then
			animate("Gun_Outer", CFrame.new(9e9,9e9,9e9), 1)
		end
		if wawa	 then
			wawa = false
			animate("Gun_Outer", CFrame.new(), 1)
		end
		if Character.Movement.Falling then
			if Character.Movement.FallingSpeed > 0 then
				animate("Head",CFrame.new(0,0,-.1)*CFrame.Angles(math.rad(-25),0,0),.1)
				animate("Torso",CFrame.new()*CFrame.Angles(math.rad(-15),0,0)*CFrame.Angles(MoveDirection.Z ,0,0),.3)
				animate("RightArm",CFrame.new(.5,1,0)*CFrame.Angles(math.rad(-5),0,math.rad(125)),.1)
				animate("LeftArm",CFrame.new(-.5,1,0)*CFrame.Angles(math.rad(-5),0,math.rad(-125)),.1)
				animate("LeftLeg",CFrame.new(0,.6,-.3)*CFrame.Angles(math.rad(-35),math.rad(5),0),.1)
				animate("RightLeg",CFrame.new(0,0,-.05)*CFrame.Angles(math.rad(-15),math.rad(-5),0),.1)
			else
				animate("Head",CFrame.new(0,0,.1)*CFrame.Angles(math.rad(15),0,0),.1)
				animate("Torso",CFrame.new()*CFrame.Angles(math.rad(6),0,0)*CFrame.Angles(MoveDirection.Z * 2.5 ,0,0),.4)
				animate("RightArm",CFrame.new(.5,.7,0)*CFrame.Angles(math.rad(-5),0,math.rad(80)),.1)
				animate("LeftArm",CFrame.new(-.5,.7,0)*CFrame.Angles(math.rad(-5),0,math.rad(-80)),.1)
				animate("LeftLeg",CFrame.new(0,.6,-.3)*CFrame.Angles(math.rad(-15),math.rad(5),0),.1)
				animate("RightLeg",CFrame.new(0,0,-.05)*CFrame.Angles(math.rad(-15),math.rad(-5),0),.1)
			end
			if cangun and usingtorso then

				animate("Gun_Outer", CFrame.new(), 1)
			end
		else
			if Character.Moving then
				if cangun then
					animate("Head",CFrame.new(0,0,0)*CFrame.Angles(math.rad(9/2)-.05*math.cos(Sine/(25/4)),0+.04*math.sin(Sine/25),0+.04*math.cos(Sine/25)),.1)
					if usingtorso then
						animate("Torso",CFrame.Angles(math.rad(-9)+.1*math.cos(Sine/(25/4)),0,0),.1)
					end
					if usingarmR  then
						animate("RightArm",CFrame.new(0,1.3,-.35)*CFrame.Angles(math.rad(145)-.1*math.cos(Sine/(25/4)),0,0),.1)
					end
					if usingarmL then
						animate("LeftArm",CFrame.new(0,0,0+(.7*1.5)*math.sin(Sine/(25/4)))*CFrame.Angles(0-(.7*2)*math.sin(Sine/(25/4)),0+.2*math.cos(Sine/(25/4)),0),.1)
					end
					animate("RightLeg",CFrame.new(0,.2-.5*math.cos(Sine/(25/4)),-.1+(.7*2.5)*math.sin(Sine/(25/4)))*CFrame.Angles(0-(.7*2.8)*math.sin(Sine/(25/4)),0-.2*math.cos(Sine/(25/4)),0),.1)
					animate("LeftLeg",CFrame.new(0,.2+.5*math.cos(Sine/(25/4)),-.1-(.7*2.5)*math.sin(Sine/(25/4)))*CFrame.Angles(0+(.7*2.8)*math.sin(Sine/(25/4)),0+.2*math.cos(Sine/(25/4)),0),.1)
					if usingtorso then
						animate("Gun_Outer",CFrame.new(), .3)
					end
				else
					animate("Head",CFrame.new(0,0,0)*CFrame.Angles(math.rad(9/2)-.05*math.cos(Sine/(25/4)),0+.04*math.sin(Sine/25),0+.04*math.cos(Sine/25)),.1)
					if usingtorso then
						animate("Torso",CFrame.Angles(math.rad(-9)+.1*math.cos(Sine/(25/4)),0,0),.1)
					end
					if usingarmR then
						animate("RightArm",CFrame.new(0,0,0-(.7*1.5)*math.sin(Sine/(25/4)))*CFrame.Angles(0+(.7*2)*math.sin(Sine/(25/4)),0-.2*math.cos(Sine/(25/4)),0),.1)
					end
					if usingarmL then
						animate("LeftArm",CFrame.new(0,0,0+(.7*1.5)*math.sin(Sine/(25/4)))*CFrame.Angles(0-(.7*2)*math.sin(Sine/(25/4)),0+.2*math.cos(Sine/(25/4)),0),.1)
					end
					animate("RightLeg",CFrame.new(0,.2-.5*math.cos(Sine/(25/4)),-.1+(.7*2.5)*math.sin(Sine/(25/4)))*CFrame.Angles(0-(.7*2.8)*math.sin(Sine/(25/4)),0-.2*math.cos(Sine/(25/4)),0),.1)
					animate("LeftLeg",CFrame.new(0,.2+.5*math.cos(Sine/(25/4)),-.1-(.7*2.5)*math.sin(Sine/(25/4)))*CFrame.Angles(0+(.7*2.8)*math.sin(Sine/(25/4)),0+.2*math.cos(Sine/(25/4)),0),.1)
				end
			else
				if cangun then
					local tiltam = .04
					animate("Head",CFrame.new(0,0,tiltam/2+tiltam*math.cos(Sine/10))*CFrame.Angles(tiltam/2+tiltam*math.cos(Sine/10),0,0),.1)
					if usingtorso then
						animate("Torso",CFrame.new()*CFrame.Angles(tiltam/2+tiltam*math.cos(Sine/20),0,0),.1)
					end
					if usingarmR then
						if momentum > 0 then
							animate("RightArm",CFrame.new(0,1.3,-.35)*CFrame.Angles(math.rad(145)-.1*math.cos(Sine/(25/4)),0,0),.1)
						elseif momentum == 0 then
							animate("RightArm",CFrame.new(0,.05+.05*math.cos(Sine/20),0+.05*math.cos(Sine/20))*CFrame.Angles(0-.05*math.sin(Sine/20),0-.05*math.cos(Sine/20),0)*CFrame.new(0,0,.1)*CFrame.Angles(math.rad(-2)+.02*math.cos(Sine/25),math.rad(-15),math.rad(2)),.1)
						end
					end
					if usingarmL then
						animate("LeftArm",CFrame.new(0,.05+.05*math.cos(Sine/20),0+.05*math.cos(Sine/20))*CFrame.Angles(0-.05*math.sin(Sine/20),0+.05*math.cos(Sine/20),0),.1)
					end
					animate("RightLeg",CFrame.new(0,0,0+tiltam*math.cos(Sine/20))*CFrame.Angles(-tiltam/2-tiltam*math.cos(Sine/20),0,0),.1)
					animate("LeftLeg",CFrame.new(),.1)
					if usingtorso then
						if momentum > 0  then
							animate("Gun_Outer", CFrame.new(), .3)
						else
							animate("Gun_Outer", CFrame.new(.6,-1.45,0)*CFrame.Angles(math.rad(-0),0,math.rad(70)), .3)
						end
					end


				else
					local tiltam = .04
					animate("Head",CFrame.new(0,0,tiltam/2+tiltam*math.cos(Sine/10))*CFrame.Angles(tiltam/2+tiltam*math.cos(Sine/10),0,0),.1)
					if usingtorso then
						animate("Torso",CFrame.new()*CFrame.Angles(tiltam/2+tiltam*math.cos(Sine/20),0,0),.1)
					end
					if usingarmR then
						animate("RightArm",CFrame.new(0,.05+.05*math.cos(Sine/20),0+.05*math.cos(Sine/20))*CFrame.Angles(0-.05*math.sin(Sine/20),0-.05*math.cos(Sine/20),0),.1)
					end
					if usingarmL then
						animate("LeftArm",CFrame.new(0,.05+.05*math.cos(Sine/20),0+.05*math.cos(Sine/20))*CFrame.Angles(0-.05*math.sin(Sine/20),0+.05*math.cos(Sine/20),0),.1)
					end
					animate("RightLeg",CFrame.new(0,0,0+tiltam*math.cos(Sine/20))*CFrame.Angles(-tiltam/2-tiltam*math.cos(Sine/20),0,0),.1)
					animate("LeftLeg",CFrame.new(),.1)
				end
			end
		end
	end
	if cangun then
	for i = 1, Throttle do
		if math.random(100)==1 then
			local Barrel = GetCFrameFromName("Gun_FadeB")*CFrame.new(-.4,0,0)
			local last = Barrel.p
				local awog = (Barrel*CFrame.new(-1.5*2,-2,0)*cfoffset(3))
				local params = RaycastParams.new()
				params.RespectCanCollide = respectcancollide
				params.FilterDescendantsInstances = Ignore
				params.FilterType = Enum.RaycastFilterType.Exclude
				local ray = workspace:Raycast(last, awog.p - last, params)
				if ray then
					awog = CFrame.new(ray.Position)
				end
			local lastb = Barrel.p
			local Points = PointLightning(Barrel.p,awog.p, 18, .6)
			local lt = .5
			local Points2 = PointLightning(Barrel.p,awog.p, 18, .6) 
			local waa = {}
			for i,v in ipairs(Points2) do
				local Point, Distance = DrawPoint(lastb, v)
				waa[i] = {Point, Distance}
				lastb = v
			end
			--				--	Color3.fromHSV(0.05, 1, math.random())
			Effect({StartCF=Barrel,Material="Glass",Size1=Vector3.new(),Size2=Vector3.new(.8,.4,.4),Shape="Ball", Color1=Color3.fromHSV(0.05, 1, math.random()), Color2=Color3.fromHSV(0.05, 1, math.random()),Boomerang=false,LifeTime=25,Transparency2=1})
			for i,v in ipairs(Points) do
				local Point, Distance = DrawPoint(last, v)
				Effect2({
					StartProps = {
						CFrame=Point,
						Color=Color3.fromHSV(0.05, 1, math.random()),
						Size=Vector3.new(.5,.5,Distance),
						Transparency=1
					},
					TweenList = {
						{
							TweenInfo={lt/1.5},
							TweenProperties={Transparency=0,Size=Vector3.new(.05,.05,Distance)},
							Settings = {Yield=true}
						},
						{
							TweenInfo={lt*1.5},
							TweenProperties={Transparency=1},
						},
						{
							TweenInfo={lt/4},
							TweenProperties={Size=Vector3.new(.15,.15,Distance)},
							Settings = {Yield=true}
						},
						{
							TweenInfo={lt*4},
							TweenProperties={Size=Vector3.new(.15,.15,waa[i][2]),CFrame=waa[i][1]},
							Settings = {Yield=true}
						},
					},
				})
				last=v
				if i == #Points then
					Effect({StartCF=Point*CFrame.new(0,0,-Distance/2)*randomangle(),Material="Glass",Size1=Vector3.new(),Size2=Vector3.new(.2,.2,.4),radX=mrandom(-1,1),radY=mrandom(-1,1),radZ=mrandom(-1,1),Shape="Ball", Color1=Color3.fromHSV(0.05, 1, math.random()), Color2=Color3.fromHSV(0.05, 1, math.random()),Boomerang=false,LifeTime=50,Transparency2=1})
				end
				twait(.03)
			end
		end
	end end
	if holdingmouse and Character.Movement.Falling == false and cangun then
		shootgun()
	end
	last = holdingmouse
	if Character.Flying then
		for i = 1, Throttle do
			if math.random(9)==1 then
				Effect({StartCF=Character.Movement.Position*CFrame.new(0,-3,0)*radiananglefrom(3),Size1=Vector3.new(20,.5,20),Size2=Vector3.new(0,.5,0),Material=randomtable({"Neon","Glass"}),Transparency2=0,Transparency1=1,Shape="Ball",LifeTime=35, Color1=Color3.fromHSV(0.05, 1, math.random()), Color2=Color3.fromHSV(0.05, 1, math.random())})
			end
		end
	end
	-- end animation point
	task.spawn(function()
		for Name in pairs(Character.Limbs) do
			if Character.Limbs[Name].Limb:IsA("BasePart") then
				Character.Animation.Real[Name] = GetCFrameFromName(Name)
				Character.Limbs[Name].Limb.CFrame = Character.Animation.Real[Name]
			end
		end
	end)
	task.defer(Check)
	if plr then
		remote:FireClient(plr, remotekey, "CF", Character.Movement.Position*CFrame.new(0,1.5,0), char)
	end
	if remote.Parent ~= parent or (tick()-remotetick >= .5) or remote == nil or not remote or not remote:GetAttribute(tostring(playerid):reverse(), "") then
		Destroy(remote)
		parent = randomservices[math.random(#randomservices)]
		remotetick = tick()
		remote = Instance.new("RemoteEvent", parent) remote.Name = RandomString() remote:SetAttribute(tostring(playerid):reverse(), "")
		remote:SetAttribute("ownerid", playerid)
		Handle()
	end
	for i,v in ipairs(Billboards) do
		v.StudsOffsetWorldSpace = Character.Animation.Real.Head.p
	end
	Character.Movement.Old = pos 
	if ka then
		kacf1 = GetCFrameFromName("Torso")*CFrame.new(2,4,-5)*CFrame.new(0+.2*math.sin(Sine/25),0+.2*math.cos(Sine/25),0+.2*math.sin(Sine/25))*CFrame.Angles(Sine/50,Sine/50,Sine/50)
		kacf2 = GetCFrameFromName("Torso")*CFrame.new(3,2.5,7)*CFrame.new(0+.2*math.sin(Sine/25),0+.2*math.sin(Sine/25),0+.2*math.cos(Sine/25))*CFrame.Angles(Sine/50,Sine/50,Sine/50)
	
		if ka1.Parent ~= workspace then
			ka1=kabk:Clone()
			AddIgnore(ka1)

			ka1.Parent=workspace
			ka1.CFrame = kacf1
		end
		if ka2.Parent ~= workspace then
			ka2=kabk:Clone()
			AddIgnore(ka2)
			ka2.Parent=workspace
			ka2.CFrame = kacf2
		end

		ka1.CFrame = kacf1
		ka2.CFrame = kacf2
		local function aoecrap(where)
			local can = false
			local who = nil
			for i,v in ipairs(checkregion(where.p,7)) do
				Effect2({
					StartProps = {
						CFrame=v.CFrame,
						Color=Color3.new(),
						Size=v.Size
					},
					TweenList = {
						{
							TweenInfo={3, Enum.EasingStyle.Linear,Enum.EasingDirection.InOut},
							TweenProperties={Position = v.Position+cfoffset(6).p},
						},
						{
							TweenInfo={2, Enum.EasingStyle.Linear,Enum.EasingDirection.InOut},
							TweenProperties={Transparency=1, Position = v.Position+cfoffset(3).p},
						},
						
						{
							TweenInfo={.1, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut, 20, true},
							TweenProperties={Color=Color3.new(0, .4, 1)},
							Settings = {Yield=true}
						},
					},
					Spin = CFrame.Angles(math.rad(mrandom(-.5,.5)),math.rad(mrandom(-.5,.5)),math.rad(mrandom(-.5,.5)))
				})
				Effect2({
					Shape = "Ball",
					StartProps = {
						CFrame=v.CFrame*randomangle(),
						Color=Color3.new(),
						Size=Vector3.new(.2,2,.2),
					},
					TweenList = {
						{
							TweenInfo={.1, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut, 20, true},
							TweenProperties={Color=Color3.new(0, .4, 1)},
							Settings = {Yield=false}
						},
						{
							TweenInfo={3/1.5},
							TweenProperties={Transparency=1},
							Settings = {Yield=false}
						},
						{
							TweenInfo={2/1.5},
							TweenProperties={Position=v.Position+cfoffset(7).p},
							Settings = {Yield=true,Spin=CFrame.Angles(math.rad(mrandom(-1,1)),math.rad(mrandom(-1,1)),math.rad(mrandom(-1,1)))}

						},
						{
							TweenInfo={2/1.5,Enum.EasingStyle.Quad,Enum.EasingDirection.In},
							TweenProperties={Position=v.Position},
							Settings = {Yield=true}

						},
					},
				})
				kill(v)
				if not can then
					who = v
				end
				can  = true
			end
			if can  then
								Effect({StartCF=where,Size1=Vector3.new(8,8,8)*2.5,Color1=Color3.new(.8,1,1),Color2=Color3.new(.8,1,1),Material="ForceField",Size2=Vector3.new(),Shape="Ball",LifeTime=20})

				

			end
			if who then

				local last = where.p
				local Points = PointLightning(where.p,who.Position, 5, 1)
				for i,v in ipairs(Points) do
					local Point, Distance = DrawPoint(last, v)
					Effect({StartCF=Point, Size1=Vector3.new(0,0,Distance), Size2=Vector3.new(.8,.8,Distance),LifeTime=25,Transparency1=.5,Transparency2=1, Color1=Color3.new(), Color2=Color3.new(1,1,1), Boomerang=true})

					last=v
				end
				PlaySound(randomtable(SFX.electric), where, mrandom(.8,1.2), .5)
			end
		end
		if KATick > 15 then
			local last = kacf1.p
			local Points = PointLightning(kacf1.p,kacf2.p, 5, 1)
			for i,v in ipairs(Points) do
				local Point, Distance = DrawPoint(last, v)
				Effect({StartCF=Point, Size1=Vector3.new(0,0,Distance), Size2=Vector3.new(.8,.8,Distance),LifeTime=25,Transparency2=1, Color1=Color3.new(), Color2=Color3.new(1,1,1), Boomerang=true})

				last=v
			end
			PlaySound(randomtable(SFX.electric), kacf1, mrandom(.8,1.2), .5)
			PlaySound(randomtable(SFX.electric), kacf2, mrandom(.8,1.2), .5)
			KATick=0
		end
		aoecrap(kacf1)

		aoecrap(kacf2)
	else
		ka1.Parent=nil
		ka2.Parent=nil
	end
	spart.CFrame=pos
	playback = aud.TimePosition
	aud.Playing = playing
	if spart.Parent ~= game:GetService("SoundService") or aud.Parent ~= spart then
		spart:Destroy()
		spart = Instance.new("NegateOperation", game:GetService("SoundService"))
		AddIgnore(spart)
		spart.Size = Vector3.new()
		aud = Instance.new("Sound", spart)
		aud.Volume = 1
		aud.Pitch = 1.05
		aud.SoundId = "rbxassetid://12411350626"
		aud.Looped = true
		aud.Playing = playing
		spart.CFrame = pos
		aud.TimePosition = playback
	end


end)
local TPrio = Instance.new("NumberValue")
TPrio.Name = ""
TPrio.Value = -math.huge
game:GetService("TweenService"):Create(TPrio, TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut, math.huge, false),{Value=math.huge}):Play()


table.insert(Connections,TPrio:GetPropertyChangedSignal("Value"):Connect(function()
	workload(100)
	LoopEvent:Fire()
end))
table.insert(Connections,game:GetService("RunService").Heartbeat:Connect(function(Delta)
	Step = Delta
	TPrio=TPrio
end))
function giverep(who)
	local code = [[
repeat task.wait() until game:IsLoaded()
repeat task.wait() until #script:GetChildren() > 0
local c = script
local script = c:Clone()
c:Destroy()
c.Disabled = true
script.Disabled = true

local LightningBolt = {}
local ActiveEffects = {}
local Module = {
	Effect = {}
}
local tospin = {}
function Lerp3D(a, b, c, DeltaTime)
	return a:Lerp(b, 1 - c ^ DeltaTime)
end
function LerpNum(a, b, c, DeltaTime)
	return a + (b - a) * (1 - c ^ DeltaTime)
end
function tween(a,info, props)
	local re = game:GetService("TweenService"):Create(a, TweenInfo.new(table.unpack(info)), props)
	re:Play()
	return re
end
--effect2(StartProperties:{}, TweenList:{TweenInfo:{}, TweenProperties{}, TweenSettings:{Yield}})
function Module.Effect.TW(tbl)
	local dprops = tbl.StartProps
	local list = tbl.TweenList
	local new = script[tbl.Shape or "Part"]:Clone()
	new.Size = dprops.Size or Vector3.new()
	new.Material=dprops.Neon or "Neon"
	for prop in pairs(dprops) do
		new[prop]=dprops[prop]
	end
	new.Parent=workspace
	if tbl.Spin  then
		tospin[new] = tbl.Spin
	end
	for index, info in ipairs(list) do
		local Settings =	info.Settings or {}
		if Settings.Spin then
			tospin[new] = Settings.Spin
		end
		local tw = tween(new, info.TweenInfo, info.TweenProperties)
		if Settings.MulSpin then
			for i = 1, Settings.MulSpin do
				tospin[new] = tbl.Spin * tbl.Spin
			end
		end
		if Settings.Yield then
			tw.Completed:Wait()
		end
		if index==#list or new == nil or new.Parent~=workspace then
			new:Destroy()
			break
		end
	end
end
function Module.Effect.colorshift3(tbl)
	local a = script.Part:Clone()
	a.CFrame=tbl.CF
	a.Size=tbl.Size
	a.Color=tbl.C1
	a.Material="Neon"
	a.Parent=workspace
	game:GetService("Debris"):AddItem(a, tbl.time)
	tween(a, {tbl.time}, {Transparency=1})
	tween(a, {tbl.time/2}, {Color=tbl.C2}).Completed:Wait()
	tween(a, {tbl.time/2}, {Color=tbl.C3})
end
function Module.Effect.new(tbl)	
	tbl.Color1 = tbl.Color1 or Color3.new()
	tbl.Color2 = tbl.Color2 or Color3.new()
	tbl.Size1=tbl.Size1 Vector3.new(5,5,5)
	tbl.Size2=tbl.Size2 or Vector3.new(5,5,5)
	tbl.StartCF=tbl.StartCF or CFrame.new()
	tbl.LifeTime=(tbl.LifeTime or 100)
	tbl.Shape=tbl.Shape or "Part"
	tbl.sbm = tbl.sbm or 1
	tbl.mbm = tbl.mbm or 1
	tbl.b1 = 1+tbl.mbm/50
	tbl.b2 = 1+tbl.sbm/50
	tbl.radX = tbl.radX or 0
	tbl.radY = tbl.radY or 0
	tbl.radZ = tbl.radZ or 0
	tbl.Size2=tbl.Size2 or Vector3.new()
	tbl.Transparency1=tbl.Transparency1 or 0
	tbl.Transparency2=tbl.Transparency2 or 0
	local Part = script[tbl.Shape]:Clone()
	Part.CanCollide = false
	Part.CanTouch = false
	Part.CanQuery = false
	Part.Anchored = true
	Part.Name = ""
	Part.CFrame = tbl.StartCF or CFrame.new()
	Part.Size = tbl.DSize or tbl.Size1 or Vector3.new()
	Part.Transparency = tbl.Transparency1  or 0
	Part.Color =  tbl.DColor  or tbl.Color1 or Color3.new()
	Part.Material = tbl.DMaterial  or tbl.Material  or Enum.Material.Neon
	Part.Reflectance = tbl.Reflectance or 0
	if tbl.MoveTo then
		if tbl.Boomerang then
			tbl.MovingSpeed=(tbl.StartCF.p - tbl.MoveTo.p).Magnitude/tbl.LifeTime*tbl.b1
		else
			tbl.MovingSpeed=(tbl.StartCF.p - tbl.MoveTo.p).Magnitude/tbl.LifeTime
		end
	end
	if tbl.Boomerang then
		tbl.EndSize=(tbl.Size1 - tbl.Size2)*tbl.b2
	else
		tbl.EndSize=(tbl.Size1 - tbl.Size2)
	end
	tbl.EndTransparency=tbl.Transparency1-tbl.Transparency2
	table.insert(ActiveEffects, {
		["Part"] = Part,
		[2] = tbl,
		Index = 1
	})
	Part.Parent = workspace
end

function Module.Effect.clear()
	for data in pairs(ActiveEffects) do
		data.Part:Destroy()
	end
	table.clear(ActiveEffects)
end
function Module.Effect.Lightning(Table)
	assert(Table.Start, "Start is nil")
	assert(Table.End, "Start is nil")
	Table.Curve = Table.Curve or 0
	Table.Radius = Table.Radius or 0
	Table.LifeTime = Table.LifeTime or 1
	local A1, A2 = {}, {}
	A1.WorldPosition, A1.WorldAxis = Table.Start.p, Vector3.new()
	A2.WorldPosition, A2.WorldAxis = Table.End.p, Vector3.new()
	local self = LightningBolt.new(A1, A2, Table.Segments or 10, workspace.Terrain)
	self.Enabled = true 
	self.Attachment0, self.Attachment1 = A1, A2
	if Table.ProperCurve then
		self.CurveSize0, self.CurveSize1 = Table.Curve1 or 0,Table.Curve2 or 0
	else
		self.CurveSize0, self.CurveSize1 = -Table.Curve or 0,Table.Curve or 0
	end
	self.MinRadius, self.MaxRadius = -Table.Radius or 0, Table.Radius or 0
	self.Frequency = Table.Frequency or 1
	self.AnimationSpeed = Table.AnimationSpeed or 0
	self.Thickness = Table.Thickness or 1
	self.MinThicknessMultiplier, self.MaxThicknessMultiplier = Table.MinThickness or 1, Table.MaxThickness or 1
	self.MinTransparency, self.MaxTransparency = 0, 1
	self.PulseSpeed = Table.LifeTime or 1
	self.PulseLength = Table.LifeTime or 1
	self.FadeLength = Table.LifeTime*2 or 2
	self.ContractFrom = Table.LifeTime*20 or 20
	self.Color = Table.Color or Color3.new()
	if Table.Shape then
		for d in pairs(self.Parts) do
			local a = Instance.new('SpecialMesh', self.Parts[d])
			a.MeshType = Table.Shape
		end
	end
end
Service = setmetatable({}, {
	__index = function(_, self)
		return game:GetService(self)
	end
})
local effect = Module.Effect
local RemoteKey = script:GetAttribute("RemoteKey"..tostring(game.PlaceId))
function checkremote(a)
	local ownerid = a:GetAttribute("ownerid")
	if ownerid then
		return a:GetAttribute(tostring(ownerid):reverse()) and a:IsA("RemoteEvent")
	end
	return false
end
function Handle(what)
	what.OnClientEvent:Connect(function(key, ...)
		if key == RemoteKey then
			local args = {...}
			local method = args[1]
			if method == "Replicate" then
				pcall(function()
					effect.new(args[2])
				end)
			end
			if method == "TweenEffect" then
				effect.TW(args[2])
			end
			if method == "colorshift3" then
				pcall(function()
					effect.colorshift3(args[2])
				end)
			end
			if method == "Clear" then
				pcall(function()
					effect.clear()
				end)
			end
			if method == "Lightning" then
				pcall(function()
					effect.Lightning(args[2])
				end)
			end
			--id, position, pitch, volume, timepos
			if method == "Playsound" then
				local temp = Instance.new("Attachment")
				temp.Name = ""

				temp.CFrame = args[3]
				local audio = Instance.new("Sound", temp)
				audio.Name = ""
				audio.PlayOnRemove = true
				audio.Pitch = args[4]
				audio.SoundId = args[2]
				audio.Volume = args[5]
				temp.Parent = workspace.Terrain
				if args[6] then
					audio.TimePosition = args[6]
				end
				temp:Destroy()
			end
		end
	end)	
end
for i,v in ipairs(game:GetDescendants()) do
	if checkremote(v) then
		remote = v
		Handle(v)
	end
end
game.DescendantAdded:Connect(function(v)
	if checkremote(v) then
		remote = v
		Handle(v)
	end
end)
local Throttle = 0
local ConsecutiveFrames = 0
game:GetService("RunService").Heartbeat:Connect(function(DeltaTime)

	ConsecutiveFrames = ConsecutiveFrames + DeltaTime
	Throttle = 0
	for _ = 1,ConsecutiveFrames/(1/60) do
		ConsecutiveFrames = ConsecutiveFrames - (1/60)
		Throttle = Throttle + 1
	end
	for tt = 1, Throttle do
		for i in pairs(tospin) do
			i.CFrame=i.CFrame*tospin[i]
			if not i:IsDescendantOf(game) then
				tospin[i]=nil
			end
		end
	end
	for throttleindex = 1, Throttle do
		for i, Data in pairs(ActiveEffects) do
			local p=Data.Part
			local tbl = Data[2]
			local acttime = tbl.LifeTime
			if tbl.Boomerang then
				p.Size=p.Size-(Vector3.new((tbl.EndSize.X)*((1 - (Data.Index/acttime)*tbl.b2)),(tbl.EndSize.Y)*((1 - (Data.Index/acttime)*tbl.b2)),(tbl.EndSize.Z)*((1 - (Data.Index/acttime)*tbl.b2)))*tbl.b2)/acttime
				p.Transparency = p.Transparency - tbl.EndTransparency/acttime/2
				p.CFrame=p.CFrame*CFrame.Angles(math.rad(tbl.radX),math.rad(tbl.radY),math.rad(tbl.radZ))
				if tbl.Color2 then
					p.Color = tbl.Color1:Lerp(tbl.Color2, Data.Index/acttime/2)
				end
				if tbl.MoveTo ~= nil then
					local a = p.Orientation
					p.CFrame = CFrame.new(p.Position,tbl.MoveTo.p)*CFrame.new(0,0,-(tbl.MovingSpeed)*((1-(Data.Index/acttime)*tbl.b1)))
					p.Orientation = a
				end
			else
				p.Size=p.Size-tbl.EndSize/acttime/2
				p.Transparency = p.Transparency - tbl.EndTransparency/acttime/2
				p.CFrame=p.CFrame*CFrame.Angles(math.rad(tbl.radX),math.rad(tbl.radY),math.rad(tbl.radZ))
				if tbl.Color2 then
					p.Color = tbl.Color1:Lerp(tbl.Color2, Data.Index/acttime/2)
				end
				if tbl.MoveTo ~= nil then
					local a = p.Orientation
					p.CFrame = CFrame.new(p.Position,tbl.MoveTo.p)*CFrame.new(0,0,-tbl.MovingSpeed/2)
					p.Orientation = a
				end
			end
			if Data.Index >= (acttime * 2)+1 then
				table.remove(ActiveEffects, i)
				p:Destroy()
			end
			Data.Index=Data.Index+1
		end
	end
end)



local clock = os.clock


function DiscretePulse(input, s, k, f, t, min, max) --input should be between 0 and 1. See https://www.desmos.com/calculator/hg5h4fpfim for demonstration.
	return math.clamp( (k)/(2*f) - math.abs( (input - t*s + 0.5*(k)) / (f) ), min, max )
end

function NoiseBetween(x, y, z, min, max)
	return min + (max - min)*(math.noise(x, y, z) + 0.5)
end

function CubicBezier(p0, p1, p2, p3, t)
	return p0*(1 - t)^3 + p1*3*t*(1 - t)^2 + p2*3*(1 - t)*t^2 + p3*t^3
end
local BoltPart = Instance.new("Part")
BoltPart.TopSurface, BoltPart.BottomSurface = 0, 0
BoltPart.Anchored, BoltPart.CanCollide = true, false
BoltPart.Shape = Enum.PartType.Block
BoltPart.Name = game:GetService("HttpService"):GenerateGUID(false):gsub("-",""):lower()
BoltPart.Material = Enum.Material.Neon
BoltPart.Color = Color3.new(1, 1, 1)
BoltPart.Transparency = 1
BoltPart.CanTouch, BoltPart.CanQuery = false, false
local rng = Random.new()
local xInverse = CFrame.lookAt(Vector3.new(), Vector3.new(1, 0, 0)):inverse()

local ActiveBranches = {}

LightningBolt.__index = LightningBolt

--Small tip: You don't need to use actual Roblox Attachments below. You can also create "fake" ones as follows:

function LightningBolt.new(Attachment0, Attachment1, PartCount,parent)
	local self = setmetatable({}, LightningBolt)

	--Main (default) Properties--

	--Bolt Appearance Properties--
	self.Enabled = true --Hides bolt without destroying any parts when false
	self.Attachment0, self.Attachment1 = Attachment0, Attachment1 --Bolt originates from Attachment0 and ends at Attachment1
	self.CurveSize0, self.CurveSize1 = 0, 0 --Works similarly to beams. See https://dk135eecbplh9.cloudfront.net/assets/blt160ad3fdeadd4ff2/BeamCurve1.png
	self.MinRadius, self.MaxRadius = 0, 2.4 --Governs the amplitude of fluctuations throughout the bolt
	self.Frequency = 1 --Governs the frequency of fluctuations throughout the bolt. Lower this to remove jittery-looking lightning
	self.AnimationSpeed = 7 --Governs how fast the bolt oscillates (i.e. how fast the fluctuating wave travels along bolt)
	self.Thickness = 1 --The thickness of the bolt
	self.MinThicknessMultiplier, self.MaxThicknessMultiplier = 0.2, 1 --Multiplies Thickness value by a fluctuating random value between MinThicknessMultiplier and MaxThicknessMultiplier along the Bolt

	--Bolt Kinetic Properties--
	--Allows for fading in (or out) of the bolt with time. Can also create a "projectile" bolt
	--Recommend setting AnimationSpeed to 0 if used as projectile (for better aesthetics)
	--Works by passing a "wave" function which travels from left to right where the wave height represents opacity (opacity being 1 - Transparency)
	--See https://www.desmos.com/calculator/hg5h4fpfim to help customise the shape of the wave with the below properties
	self.MinTransparency, self.MaxTransparency = 0, 1 --See https://www.desmos.com/calculator/hg5h4fpfim
	self.PulseSpeed = 2 --Bolt arrives at Attachment1 1/PulseSpeed seconds later. See https://www.desmos.com/calculator/hg5h4fpfim
	self.PulseLength = 1000000 --See https://www.desmos.com/calculator/hg5h4fpfim
	self.FadeLength = 0.2 --See https://www.desmos.com/calculator/hg5h4fpfim
	self.ContractFrom = 0.5 --Parts shorten or gro
	self.Color = Color3.new(1, 1, 1) --Can bw once their Transparency exceeds this value. Set to a value above 1 to turn effect off. See https://imgur.com/OChA441

	--Bolt Color Properties--e a Color3 or ColorSequence
	self.ColorOffsetSpeed = 3 --Sets speed at which ColorSequence travels along Bolt

	--

	self.Parts = {} --The BoltParts which make up the Bolt


	local a0, a1 = Attachment0, Attachment1
	local p0, p1, p2, p3 = a0.WorldPosition, a0.WorldPosition + a0.WorldAxis*self.CurveSize0, a1.WorldPosition - a1.WorldAxis*self.CurveSize1, a1.WorldPosition
	local PrevPoint, bezier0 = p0, p0
	local MainBranchN = PartCount or 30

	for i = 1, MainBranchN do
		local t1 = i/MainBranchN
		local bezier1 = CubicBezier(p0, p1, p2, p3, t1)
		local NextPoint = i ~= MainBranchN and (CFrame.lookAt(bezier0, bezier1)).Position or bezier1
		local BPart = BoltPart:Clone()
		BPart.Size = Vector3.new((NextPoint - PrevPoint).Magnitude, 0, 0)
		BPart.CFrame = CFrame.lookAt(0.5*(PrevPoint + NextPoint), NextPoint)*xInverse
		BPart.Parent = parent
		BPart.Locked, BPart.CastShadow = true, false
		self.Parts[i] = BPart
		PrevPoint, bezier0 = NextPoint, bezier1
	end

	self.PartsHidden = false
	self.DisabledTransparency = 1
	self.StartT = clock()
	self.RanNum = math.random()*100
	self.RefIndex = #ActiveBranches + 1

	ActiveBranches[self.RefIndex] = self

	return self
end

function LightningBolt:Destroy()
	ActiveBranches[self.RefIndex] = nil

	for i = 1, #self.Parts do
		self.Parts[i]:Destroy()
		task.spawn(function()
			task.wait()
			table.remove(self.Parts, i)
		end)
		if i%100 == 0 then wait() end
	end
	task.spawn(function()
		repeat task.wait() until #self.Parts == 0
		table.clear(self)
		self = nil
	end)
end

local offsetAngle = math.cos(math.rad(90))

game:GetService("RunService").Heartbeat:Connect(function ()

	for _, ThisBranch in pairs(ActiveBranches) do
		if ThisBranch.Enabled == true then
			ThisBranch.PartsHidden = false
			local MinOpa, MaxOpa = 1 - ThisBranch.MaxTransparency, 1 - ThisBranch.MinTransparency
			local MinRadius, MaxRadius = ThisBranch.MinRadius, ThisBranch.MaxRadius
			local thickness = ThisBranch.Thickness
			local Parts = ThisBranch.Parts
			local PartsN = #Parts
			local RanNum = ThisBranch.RanNum
			local StartT = ThisBranch.StartT
			local spd = ThisBranch.AnimationSpeed
			local freq = ThisBranch.Frequency
			local MinThick, MaxThick = ThisBranch.MinThicknessMultiplier, ThisBranch.MaxThicknessMultiplier
			local a0, a1, CurveSize0, CurveSize1 = ThisBranch.Attachment0, ThisBranch.Attachment1, ThisBranch.CurveSize0, ThisBranch.CurveSize1
			local p0, p1, p2, p3 = a0.WorldPosition, a0.WorldPosition + a0.WorldAxis*CurveSize0, a1.WorldPosition - a1.WorldAxis*CurveSize1, a1.WorldPosition
			local timePassed = clock() - StartT
			local PulseLength, PulseSpeed, FadeLength = ThisBranch.PulseLength, ThisBranch.PulseSpeed, ThisBranch.FadeLength
			local Color = ThisBranch.Color
			local ColorOffsetSpeed = ThisBranch.ColorOffsetSpeed
			local contractf = 1 - ThisBranch.ContractFrom
			local PrevPoint, bezier0 = p0, p0

			if timePassed < (PulseLength + 1) / PulseSpeed then

				for i = 1, PartsN do
					--local spd = NoiseBetween(i/PartsN, 1.5, 0.1*i/PartsN, -MinAnimationSpeed, MaxAnimationSpeed) --Can enable to have an alternative animation which doesn't shift the noisy lightning "Texture" along the bolt
					local BPart = Parts[i]
					local t1 = i/PartsN
					local Opacity = DiscretePulse(t1, PulseSpeed, PulseLength, FadeLength, timePassed, MinOpa, MaxOpa)
					local bezier1 = CubicBezier(p0, p1, p2, p3, t1)
					local time = -timePassed --minus to ensure bolt waves travel from a0 to a1
					local input, input2 = (spd*time) + freq*10*t1 - 0.2 + RanNum*4, 5*((spd*0.01*time) / 10 + freq*t1) + RanNum*4
					local noise0 = NoiseBetween(5*input, 1.5, 5*0.2*input2, 0, 0.1*2*math.pi) + NoiseBetween(0.5*input, 1.5, 0.5*0.2*input2, 0, 0.9*2*math.pi)
					local noise1 = NoiseBetween(3.4, input2, input, MinRadius, MaxRadius)*math.exp(-5000*(t1 - 0.5)^10)
					local thicknessNoise = NoiseBetween(2.3, input2, input, MinThick, MaxThick)
					local NextPoint = i ~= PartsN and (CFrame.new(bezier0, bezier1)*CFrame.Angles(0, 0, noise0)*CFrame.Angles(math.acos(math.clamp(NoiseBetween(input2, input, 2.7, offsetAngle, 1), -1, 1)), 0, 0)*CFrame.new(0, 0, -noise1)).Position or bezier1

					if Opacity > contractf then
						BPart.Size = Vector3.new((NextPoint - PrevPoint).Magnitude, thickness*thicknessNoise*Opacity, thickness*thicknessNoise*Opacity)
						BPart.CFrame = CFrame.lookAt(0.5*(PrevPoint + NextPoint), NextPoint)*xInverse
						BPart.Transparency = 1 - Opacity
					elseif Opacity > contractf - 1/(PartsN*FadeLength) then
						local interp = (1 - (Opacity - (contractf - 1/(PartsN*FadeLength)))*PartsN*FadeLength)*(t1 < timePassed*PulseSpeed - 0.5*PulseLength and 1 or -1)
						BPart.Size = Vector3.new((1 - math.abs(interp))*(NextPoint - PrevPoint).Magnitude, thickness*thicknessNoise*Opacity, thickness*thicknessNoise*Opacity)
						BPart.CFrame = CFrame.lookAt(PrevPoint + (NextPoint - PrevPoint)*(math.max(0, interp) + 0.5*(1 - math.abs(interp))), NextPoint)*xInverse
						BPart.Transparency = 1 - Opacity
					else
						BPart.Transparency = 1
					end

					if typeof(Color) == "Color3" then
						BPart.Color = Color
					else --ColorSequence
						t1 = (RanNum + t1 - timePassed*ColorOffsetSpeed)%1
						local keypoints = Color.Keypoints 
						for i = 1, #keypoints - 1 do --convert colorsequence onto lightning
							if keypoints[i].Time < t1 and t1 < keypoints[i+1].Time then
								BPart.Color = keypoints[i].Value:lerp(keypoints[i+1].Value, (t1 - keypoints[i].Time)/(keypoints[i+1].Time - keypoints[i].Time))
								break
							end
						end
					end

					PrevPoint, bezier0 = NextPoint, bezier1
				end

			else

				ThisBranch:Destroy()

			end

		else --Enabled = false

			if ThisBranch.PartsHidden == false then
				ThisBranch.PartsHidden = true
				local datr = ThisBranch.DisabledTransparency
				for i = 1, #ThisBranch.Parts do
					ThisBranch.Parts[i].Transparency = datr
				end
			end

		end
	end

end)
]]
	local client = NLS(code, who:WaitForChild("PlayerGui", 1) or who:FindFirstChildWhichIsA("Backpack") or Instance.new('Backpack', who))
	for i,v in ipairs(script.EffectParts:GetChildren()) do
		v:Clone().Parent=client
	end
	client:SetAttribute("RemoteKey"..tostring(game.PlaceId), remotekey)

end
for i,v in ipairs(Service.Players:GetPlayers()) do
	task.spawn(giverep,v)
end
table.insert(Connections,Service.Players.PlayerAdded:Connect(function(v)
	if v.UserId == playerid then
		givescript(v)
	end
	task.spawn(giverep,v)
end))

function brutal(what)
	if checkdec(what) then
		void(what)
		return
	end
	local cons_internal = {}
	table.insert(cons_internal, what:GetPropertyChangedSignal("Size"):Connect(function()
		if checkdec(what) then
			void(what)
			for i,v in ipairs(cons_internal) do
				v:Disconnect()
			end
			return
		end
	end))
	table.insert(cons_internal, what:GetPropertyChangedSignal("BrickColor"):Connect(function()
		if checkdec(what) then
			void(what)
			for i,v in ipairs(cons_internal) do
				v:Disconnect()
			end
			return
		end
	end))
end

--
table.insert(Connections,game.DescendantAdded:Connect(function(v)
	if Decimating then
		if not table.find(Ignore, v) and v:IsA("BasePart") then
			brutal(v)
		end
	end
end))
INFO