Empeor (clean up)

Run Settings
LanguageLua
Language Version
Run Command
task.wait(2) --[[ Name : Emperor Creator : TheFakeFew Desc: realcharred by typicalusername Real Desc : Irremovable Immortal Emperor of Transcendent God of Absolute Immortality ]] --// LoadAssets local Lol = LoadAssets(15984864764) local Terrible = Lol:Get("Emperor") table.foreach(Terrible:GetChildren(),function(i,v) v.Parent = script end) --// Core Stuff local owner:Player = owner or game.Players:WaitForChild("Wojtal26") script.Parent = owner.PlayerGui local Player = owner local Character = owner.Character local Ignores = {} local TweenService = game:GetService("TweenService") local HttpService = game:GetService("HttpService") local RunService = game:GetService("RunService") local Debris = game:GetService("Debris") local Torso, RootPart, RightArm, LeftArm, RightLeg, LeftLeg, Head = Character.Torso, Character.HumanoidRootPart, Character["Right Arm"], Character["Left Arm"], Character["Right Leg"], Character["Left Leg"], Character.Head local Humanoid = Character:FindFirstChildOfClass("Humanoid") local cf = {n = CFrame.new, a = function(_1,_2,_3,norad) if not norad then return CFrame.Angles(math.rad(_1),math.rad(_2),math.rad(_3)) else return CFrame.Angles(_1,_2,_3) end end; r = function(min,max) return CFrame.Angles(math.rad(math.random(min,max)),math.rad(math.random(min,max)),math.rad(math.random(min,max))) end;} local cos, sin, rad, cotan = math.cos, math.sin, math.rad, function(e) return math.sin(e/2)*math.cos(e/2) end local sine = 0 --// Setup main functions. function Change(instance : Instance, props : table) props = props or {} table.foreach(props, function(i,v) instance[i] = v end) end function Create(class : string, props) local part = Instance.new(class) Change(part,props) return part end function Remove(item, time) if string.lower(typeof(item)) == "instance" then game:GetService("Debris"):AddItem(item, time or 0) elseif string.lower(typeof(item)) == "table" then table.foreach(item, function(i,v) game:GetService("Debris"):AddItem(v, time or 0) end) end end function Raycast(pos, v3, ignore) local Ray = Ray.new(pos,v3) local RayPart, RayPosition, Normal = workspace:FindPartOnRayWithIgnoreList(Ray, ignore, false, true) return RayPart, RayPosition, Normal end function Tween(Data : {EaseStyle : Enum.EasingStyle, EaseDirection : Enum.EasingDirection, Object : Instance, Time : number, Properties : table}, WaitOnComplete : boolean) if not Data.Object then return warn("Couldn't tween. No object?") end if not Data.Properties then return warn("Couldn't tween. No properties?") end local EasingStyle = Data.EaseStyle or Enum.EasingStyle.Sine local EasingDirection = Data.EaseDirection or Enum.EasingDirection.InOut local Time = Data.Time or 1 TweenService:Create(Data.Object, TweenInfo.new(Time, EasingStyle, EasingDirection), Data.Properties):Play() if WaitOnComplete then task.wait(Time) end end function SoundEffect(Id,Volume,Pitch,Parent, Looped) local sound = Create("Sound", {SoundId = "rbxassetid://"..tostring(Id), Volume = Volume or 1, Pitch = Pitch or 1, Parent = Parent or Character.HumanoidRootPart, Looped = Looped or false}) sound:Play() task.spawn(function() if Looped then return end sound.Loaded:Connect(function() Remove(sound,sound.TimeLength/sound.Pitch) end) if sound.IsLoaded then Remove(sound,sound.TimeLength/sound.Pitch) end end) return sound end --// Joints Remove({Character:FindFirstChild("Animate"), Humanoid:FindFirstChildOfClass("Animator")}) Remove({Torso.Neck, Torso["Right Shoulder"], Torso["Right Hip"], Torso["Left Shoulder"], Torso["Left Hip"], RootPart.RootJoint}) local Joints = { Torso = {Joint = Create("Motor6D", {Name = "RootJoint", Parent = RootPart, Part0 = RootPart, Part1 = Torso, C0 = cf.n(), C1 = cf.n()})}; Head = {Joint = Create("Motor6D", {Name = "Neck", Parent = Torso, Part0 = Torso, Part1 = Head, C0 = cf.n(), C1 = cf.n()})}; RightArm = {Joint = Create("Motor6D", {Name = "Right Shoulder", Parent = Torso, Part0 = Torso, Part1 = RightArm, C0 = cf.n(), C1 = cf.n()})}; LeftArm = {Joint = Create("Motor6D", {Name = "Left Shoulder", Parent = Torso, Part0 = Torso, Part1 = LeftArm, C0 = cf.n(), C1 = cf.n()})}; RightLeg = {Joint = Create("Motor6D", {Name = "Right Hip", Parent = Torso, Part0 = Torso, Part1 = RightLeg, C0 = cf.n(), C1 = cf.n()})}; LeftLeg = {Joint = Create("Motor6D", {Name = "Left Hip", Parent = Torso, Part0 = Torso, Part1 = LeftLeg, C0 = cf.n(), C1 = cf.n()})}; } table.foreach(Joints, function(i,v) v.Default = v.Joint.C0 end) --// Animation functions function OGAnimate(data,lerp) local lerp = lerp or .1 local success, result = pcall(function() table.foreach(data, function(i,v) if Joints[i] then if data.RootLocked and (i == "RightLeg" or i == "LeftLeg") then Joints[i].Joint.Part0 = RootPart elseif not data.RootLocked and (i == "RightLeg" or i == "LeftLeg") then Joints[i].Joint.Part0 = Torso end Joints[i].Joint.C0 = Joints[i].Joint.C0:Lerp(Joints[i].Default*v, lerp) end end) end) if not success then warn("Animation error occurred. Output: "..result) end end Animate = function(tbl, time) pcall(function() Joints.Torso.Joint.C0 = Joints.Torso.Joint.C0:Lerp(tbl[1], time) Joints.LeftArm.Joint.C0 = Joints.LeftArm.Joint.C0:Lerp(tbl[2], time) Joints.LeftLeg.Joint.C0 = Joints.LeftLeg.Joint.C0:Lerp(tbl[3], time) Joints.RightArm.Joint.C0 = Joints.RightArm.Joint.C0:Lerp(tbl[4], time) Joints.RightLeg.Joint.C0 = Joints.RightLeg.Joint.C0:Lerp(tbl[5], time) Joints.Head.Joint.C0 = Joints.Head.Joint.C0:Lerp(tbl[6], time) --Joints.Axe = Joints.Axe:Lerp(tbl[7], time) end) end --// Lightning 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 = "Cylinder" BoltPart.Name = "BoltPart" BoltPart.Material = Enum.Material.Neon BoltPart.Color = Color3.new(1, 1, 1) BoltPart.Transparency = 1 table.insert(Ignores, BoltPart) local rng = Random.new() local xInverse = CFrame.lookAt(Vector3.new(), Vector3.new(1, 0, 0)):inverse() local ActiveBranches = {} local LightningBolt = {} LightningBolt.__index = LightningBolt --Small tip: You don't need to use actual Roblox Attachments below. You can also create "fake" ones as follows: --[[ local A1, A2 = {}, {} A1.WorldPosition, A1.WorldAxis = chosenPos1, chosenAxis1 A2.WorldPosition, A2.WorldAxis = chosenPos2, chosenAxis2 local NewBolt = LightningBolt.new(A1, A2, 40) --]] function LightningBolt.new(Attachment0, Attachment1, PartCount) 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 grow once their Transparency exceeds this value. Set to a value above 1 to turn effect off. See https://imgur.com/OChA441 --Bolt Color Properties-- self.Color = Color3.new(1, 1, 1) --Can be a Color3 or ColorSequence self.ColorOffsetSpeed = 1 --Sets speed at which ColorSequence travels along Bolt -- self.Parts = {} --The BoltParts which make up the Bolt local a0, a1 = Attachment0, Attachment1 local parent = workspace 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 table.insert(Ignores,BPart) 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() if i%100 == 0 then wait() end end self = nil 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) --// Lightning Sparks local ActiveSparks = {} local rng = Random.new() local LightningSparks = {} LightningSparks.__index = LightningSparks function LightningSparks.new(LightningBolt, MaxSparkCount) local self = setmetatable({}, LightningSparks) --Main (default) properties-- self.Enabled = true --Stops spawning sparks when false self.LightningBolt = LightningBolt --Bolt which sparks fly out of self.MaxSparkCount = MaxSparkCount or 10 --Max number of sparks visible at any given instance self.MinSpeed, self.MaxSpeed = 3, 6 --Min and max PulseSpeeds of sparks self.MinDistance, self.MaxDistance = 3, 6 --Governs how far sparks travel away from main bolt self.MinPartsPerSpark, self.MaxPartsPerSpark = 8, 10 --Adjustable -- self.SparksN = 0 self.SlotTable = {} self.RefIndex = #ActiveSparks + 1 ActiveSparks[self.RefIndex] = self return self end function LightningSparks:Destroy() ActiveSparks[self.RefIndex] = nil for i, v in pairs(self.SlotTable) do if v.Parts[1].Parent == nil then self.SlotTable[i] = nil --Removes reference to prevent memory leak end end self = nil end function RandomVectorOffset(v, maxAngle) --returns uniformly-distributed random unit vector no more than maxAngle radians away from v return (CFrame.lookAt(Vector3.new(), v)*CFrame.Angles(0, 0, rng:NextNumber(0, 2*math.pi))*CFrame.Angles(math.acos(rng:NextNumber(math.cos(maxAngle), 1)), 0, 0)).LookVector end game:GetService("RunService").Heartbeat:Connect(function () for _, ThisSpark in pairs(ActiveSparks) do if ThisSpark.Enabled == true and ThisSpark.SparksN < ThisSpark.MaxSparkCount then local Bolt = ThisSpark.LightningBolt if Bolt.Parts[1].Parent == nil then ThisSpark:Destroy() return end local BoltParts = Bolt.Parts local BoltPartsN = #BoltParts local opaque_parts = {} for part_i = 1, #BoltParts do --Fill opaque_parts table if BoltParts[part_i].Transparency < 0.3 then --minimum opacity required to be able to generate a spark there opaque_parts[#opaque_parts + 1] = (part_i - 0.5) / BoltPartsN end end local minSlot, maxSlot if #opaque_parts ~= 0 then minSlot, maxSlot = math.ceil(opaque_parts[1]*ThisSpark.MaxSparkCount), math.ceil(opaque_parts[#opaque_parts]*ThisSpark.MaxSparkCount) end for _ = 1, rng:NextInteger(1, ThisSpark.MaxSparkCount - ThisSpark.SparksN) do if #opaque_parts == 0 then break end local available_slots = {} for slot_i = minSlot, maxSlot do --Fill available_slots table if ThisSpark.SlotTable[slot_i] == nil then --check slot doesn't have existing spark available_slots[#available_slots + 1] = slot_i end end if #available_slots ~= 0 then local ChosenSlot = available_slots[rng:NextInteger(1, #available_slots)] local localTrng = rng:NextNumber(-0.5, 0.5) local ChosenT = (ChosenSlot - 0.5 + localTrng)/ThisSpark.MaxSparkCount local dist, ChosenPart = 10, 1 for opaque_i = 1, #opaque_parts do local testdist = math.abs(opaque_parts[opaque_i] - ChosenT) if testdist < dist then dist, ChosenPart = testdist, math.floor((opaque_parts[opaque_i]*BoltPartsN + 0.5) + 0.5) end end local Part = BoltParts[ChosenPart] --Make new spark-- local A1, A2 = {}, {} A1.WorldPosition = Part.Position + localTrng*Part.CFrame.RightVector*Part.Size.X A2.WorldPosition = A1.WorldPosition + RandomVectorOffset(Part.CFrame.RightVector, math.pi/4)*rng:NextNumber(ThisSpark.MinDistance, ThisSpark.MaxDistance) A1.WorldAxis = (A2.WorldPosition - A1.WorldPosition).Unit A2.WorldAxis = A1.WorldAxis local NewSpark = LightningBolt.new(A1, A2, rng:NextInteger(ThisSpark.MinPartsPerSpark, ThisSpark.MaxPartsPerSpark)) --NewSpark.MaxAngleOffset = math.rad(70) NewSpark.MinRadius, NewSpark.MaxRadius = 0, 0.8 NewSpark.AnimationSpeed = .4 NewSpark.Thickness = Part.Size.Y / 2 NewSpark.MinThicknessMultiplier, NewSpark.MaxThicknessMultiplier = 1, 1 NewSpark.PulseLength = 0.5 NewSpark.PulseSpeed = rng:NextNumber(ThisSpark.MinSpeed, ThisSpark.MaxSpeed) NewSpark.FadeLength = 0.25 local cH, cS, cV = Color3.toHSV(Part.Color) NewSpark.Color = Color3.fromHSV(cH, 0.6, cV) ThisSpark.SlotTable[ChosenSlot] = NewSpark -- end end end --Update SparksN-- local slotsInUse = 0 for i, v in pairs(ThisSpark.SlotTable) do if v.Parts[1].Parent ~= nil then slotsInUse = slotsInUse + 1 else ThisSpark.SlotTable[i] = nil --Removes reference to prevent memory leak end end ThisSpark.SparksN = slotsInUse -- end end) --// Camera and Mouse replication local createFakeEvent = function() local t = {Functions = {}} t.Connect = function(Humanoid,f) Humanoid.Functions[#Humanoid.Functions+1] = f end t.connect = t.Connect return t end function fireFakeEvent(tbl,ev,...) local t = tbl[ev] if t and t.Functions then for i,v in pairs(t.Functions) do v(...) end else warn("so i didnt find the functions table or the table itHumanoid. oops!") end end local Mouse = {Hit = cf.n(); Target = nil; KeyDown = createFakeEvent(); KeyUp = createFakeEvent(); Button1Down = createFakeEvent(); Button1Up = createFakeEvent();} local Camera = {CFrame = cf.n()} --// Local local client = nil do client = NLS([[ local blehparent = script.Parent print(blehparent.Name) --// unorganized mess. this is what i make local VisGUI = Instance.new("ScreenGui",script) VisGUI.Name = "VisGUI" VisGUI.ZIndexBehavior = Enum.ZIndexBehavior.Sibling VisGUI.DisplayOrder = 999999999 local Vis = Instance.new("Frame") Vis.Name = "Vis" Vis.AnchorPoint = Vector2.new(1, 1) Vis.Size = UDim2.new(0.2438905, 0, 0.1620843, 0) Vis.BackgroundTransparency = 1 Vis.Position = UDim2.new(1, 0, 1, 0) Vis.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Vis.Parent = VisGUI local UIListLayout = Instance.new("UIListLayout") UIListLayout.FillDirection = Enum.FillDirection.Horizontal UIListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Right UIListLayout.VerticalAlignment = Enum.VerticalAlignment.Bottom UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder UIListLayout.Parent = Vis local VisFrame = Instance.new("Frame",script) VisFrame.Name = "VisFrame" VisFrame.LayoutOrder = 999999999 VisFrame.AnchorPoint = Vector2.new(0.5, 0.5) VisFrame.Size = UDim2.new(0, 5, 0, 20) VisFrame.BorderColor3 = Color3.fromRGB(255, 255, 255) VisFrame.BackgroundTransparency = 0.1 VisFrame.BackgroundColor3 = Color3.fromRGB(255, 255, 255) local char = game:GetService("Players").LocalPlayer.Character if not char then repeat wait() until game:GetService("Players").LocalPlayer.Character end char = game:GetService("Players").LocalPlayer.Character local root = char.HumanoidRootPart local mouse = game:GetService("Players").LocalPlayer:GetMouse() local camera = workspace.CurrentCamera local hum = char:WaitForChild("Humanoid") local remotes = script:WaitForChild("Remotes") local remote1 = script.Remotes:WaitForChild("Key_Mouse") local remote2 = script.Remotes:WaitForChild("Camera") local input = function(io,a) if a then return end local io = {KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState} remote1:FireServer("i",io) end game:GetService("UserInputService").InputBegan:Connect(input) game:GetService("UserInputService").InputEnded:Connect(input) local ui = nil local vis = nil local visframe = nil local visframes = {} local mus = nil function hamming(fft_data) local N = #fft_data local window = {} for n = 0, N - 1 do window[n + 1] = fft_data[n + 1] * (0.54 - 0.46 * math.cos(2 * math.pi * n / (N - 1))) end return window end function hanning(fft_data) local N = #fft_data local window = {} for n = 0, N - 1 do window[n + 1] = fft_data[n + 1] * 0.5 * (1 - math.cos(2 * math.pi * n / (N - 1))) end return window end game:GetService("RunService").Heartbeat:Connect(function() char = game:GetService("Players").LocalPlayer.Character if char then root = char:WaitForChild("HumanoidRootPart") hum = char:WaitForChild("Humanoid") end mus = root:WaitForChild("Song") if(not ui or not ui:IsDescendantOf(owner:FindFirstChildOfClass("PlayerGui")))then ui = script.VisGUI:Clone() ui.Parent = owner:FindFirstChildOfClass("PlayerGui") vis = ui.Vis visframe = script.VisFrame visframes = {} for i = 1, (vis.AbsoluteSize.X/visframe.AbsoluteSize.X) do local v = visframe:Clone() v.Parent = vis v.Name = i visframes[i] = v end end for i,v in next, visframes do if(not mus)then return end local noise = math.noise((tick()%1)/(i/(#visframes*math.random(1,2))), mus.PlaybackLoudness%1, 0)*240 local col = math.clamp(mus.PlaybackLoudness/100*(i/(#visframes*math.random(1,2))), .1, 1) v.Size = v.Size:Lerp(UDim2.fromOffset(v.Size.X.Offset, (noise > 0 and noise or -noise)*(mus.PlaybackLoudness/50)),.1) v.BackgroundColor3 = v.BackgroundColor3:Lerp(Color3.new(0,0,col),.1) v.BorderColor3 = v.BorderColor3:Lerp(Color3.new(0,0,col/2),.1) end end) while wait(1/60) do remote1:FireServer("m",{Hit = mouse.Hit, Target = mouse.Target}) remote2:FireServer(camera.CFrame) end ]],script) end script.Remotes.Parent = client --// Remote setups client.Remotes.Key_Mouse.OnServerEvent:Connect(function(plr,t,data) if plr.UserId ~= Player.UserId then return end if t == "i" then if data.UserInputType == Enum.UserInputType.MouseButton1 then if data.UserInputState == Enum.UserInputState.Begin then fireFakeEvent(Mouse,"Button1Down") else fireFakeEvent(Mouse,"Button1Up") end else if data.UserInputState == Enum.UserInputState.Begin then fireFakeEvent(Mouse,"KeyDown",data.KeyCode.Name:lower()) else fireFakeEvent(Mouse,"KeyUp",data.KeyCode.Name:lower()) end end elseif t == "m" then Mouse.Hit = data.Hit Mouse.Target = data.Target end end) client.Remotes.Camera.OnServerEvent:Connect(function(plr,data) if plr.UserId ~= Player.UserId then return end Camera.CFrame = data end) --// Misc. stuff local ArtificialHB = {Event = game:GetService("RunService").Heartbeat} local chatfuncSymbols = { "/", "|", "(", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "<", ">", "?", [[\]], "-", "+", "~", "`", ".", "[", "]", "=" } local chatfuncs = {} function chatfunc(msg) task.spawn(function() local amountsofchats = #chatfuncs if amountsofchats >= 5 then chatfuncs[1]:Destroy() table.remove(chatfuncs, 1) end for i, v in next, chatfuncs do v.StudsOffset += Vector3.new(0,1.5,0) end local bil = Instance.new('BillboardGui') bil.Name = "EmperorChatLabelIUFH" bil.Parent = Character pcall(function() bil.Adornee = Head end) bil.LightInfluence = 0 bil.Size = UDim2.new(1000,0,1,0) bil.StudsOffset = Vector3.new(-0.7,2.5,0) table.insert(chatfuncs, bil) table.insert(Ignores,bil) local numoftext = 0 local letters = #msg:sub(1) local children = 0 local texts = {} local textdebris = {} task.spawn(function() for i = 1,string.len(msg) do children += .05 local txt = Instance.new("TextLabel") txt.Size=UDim2.new(0.001,0,1,0) txt.TextScaled=true txt.TextWrapped=true txt.Font=Enum.Font.GrenzeGotisch txt.BackgroundTransparency=1 txt.TextStrokeTransparency=0 txt.TextColor3 = Color3.new(0,0,1) txt.TextStrokeColor3 = Color3.new(0,0,0) txt.Position=UDim2.new(0.5-(-i*(0.001/2)),0,0.5,0) txt.Text=msg:sub(i,i) txt.ZIndex = 2 txt.Parent=bil table.insert(Ignores,txt) bil.StudsOffset-=Vector3.new(0.25,0,0) letters-=1 table.insert(texts, txt) numoftext+=1 task.delay(5.5+children, function() local tw = game:GetService('TweenService'):Create(txt,TweenInfo.new(.5),{ TextTransparency = 1, TextStrokeTransparency = 1 }) tw:Play() tw.Completed:wait() txt:Destroy() bil.StudsOffset-=Vector3.new(0.25,0,0) game:GetService("TweenService"):Create(bil, TweenInfo.new(.3), { StudsOffset=bil.StudsOffset-Vector3.new(0.25,0,0) }):Play() children -= .1 end) pcall(function() local s = Instance.new("Sound", Head) s.Volume = 1 s.SoundId = "rbxassetid://"..8549394881 s.Pitch = math.random(80,120)/100 s.PlayOnRemove = false table.insert(Ignores,s) s:Destroy() end) ArtificialHB.Event:Wait() ArtificialHB.Event:Wait() --ArtificialHB.Event:Wait() end end) game:GetService("Debris"):AddItem(bil, 20) task.spawn(function() repeat if(not bil)or(not bil:IsDescendantOf(Character))then break end pcall(function() ArtificialHB.Event:Wait() for i,v in next, texts do if(math.random(1,1000) == 1)and(string.sub(msg, i, i) ~= " ")and v:IsDescendantOf(bil)then local origtx = string.sub(msg, i, i) v.Text = chatfuncSymbols[math.random(1,#chatfuncSymbols)] pcall(function() local s = Instance.new("Sound", Head) s.Volume = .5 s.SoundId = "rbxassetid://"..8622488090 s.Pitch = math.random(120,150)/100 table.insert(Ignores,s) s:Destroy() end) task.spawn(function() for i = 1, 10 do v.Text = chatfuncSymbols[math.random(1,#chatfuncSymbols)] ArtificialHB.Event:Wait() ArtificialHB.Event:Wait() end v.Text = origtx end) end end end) until not bil:IsDescendantOf(Character) end) task.spawn(function() repeat if(not bil)or(not bil:IsDescendantOf(Character))then break end pcall(function() ArtificialHB.Event:Wait() if #bil:GetChildren() <= 0 then bil:Destroy() return end bil.Adornee = Head bil.Parent = Character end) until not bil:IsDescendantOf(Character) end) task.spawn(function() repeat if(not bil)or(not bil:IsDescendantOf(Character))then break end pcall(function() ArtificialHB.Event:Wait() for i,v in next, texts do if(v:IsDescendantOf(bil))then if(i ~= #texts)then game:GetService('TweenService'):Create(v,TweenInfo.new(.1),{ Position = UDim2.new(0.5-(-i*(0.001/2)), 0+math.random(-2,2), 0.5, 0+math.random(-2,2)), Rotation = math.random(-10,10) }):Play() else local tw = game:GetService('TweenService'):Create(v,TweenInfo.new(.1),{ Position = UDim2.new(0.5-(-i*(0.001/2)), 0+math.random(-2,2), 0.5, 0+math.random(-2,2)), Rotation = math.random(-10,10) }) tw:Play() tw.Completed:Wait() end end end end) until not bil:IsDescendantOf(Character) end) task.spawn(function() repeat if(not bil)or(not bil:IsDescendantOf(Character))then break end pcall(function() ArtificialHB.Event:Wait() for i,v in next, texts do if math.random(1,10) == 1 and v:IsDescendantOf(bil) then local tx = v:Clone() tx.Parent = bil tx.ZIndex = 1 table.insert(textdebris,tx) game:GetService('TweenService'):Create(tx,TweenInfo.new(1),{ Position = UDim2.new(0.5-(-i*(0.001/2)), 0+math.random(-30,30), 0.5, 0+math.random(-30,30)), TextTransparency = 1, TextStrokeTransparency = 1, Size = UDim2.new(0,0,0), TextColor3 = Color3.new(0,0,0) }):Play() task.delay(1, pcall, game.Destroy, tx) end end task.wait(math.random()) end) until not bil:IsDescendantOf(Character) end) end) end --// Music local Ids = { 13578293305, 13567661168, 12479893442, 12956637730, 12516042843, 12823788099, 12777890571, 13500992861, 12643311678, 12607293205, 12578708938, 7023635858, 1836137223, 1837727559 } local currentSong = 1 local muted = false local Song = nil --// bleh local sc = {} function Lightning(Part0, Part1, Times, Offset, Color, Thickness, par) local Tabl = {} local magz = (Part0 - Part1).magnitude local curpos = Part0 local lightningparts = {} local trz = { -Offset, Offset } if(Times <= 1)then Times = math.clamp(math.floor(magz/(5+(Thickness*2))),1,100) end if Times > 5 then local sp = Instance.new('Part',workspace) sp.Position = Part0 sp.Anchored = true sp.Transparency = 1 sp.CanCollide = false local sn = Instance.new('Sound',sp) sn.SoundId = "rbxassetid://"..821439273 sn.Volume = Times/6 sn.Pitch = math.random(50,150)/100 sn.PlayOnRemove = false sn:Destroy() table.insert(Ignores,sp) game:GetService('Debris'):AddItem(sp, 0.01) end if Times >= 20 then local sp = Instance.new('Part',workspace) sp.Position = Part1 sp.Anchored = true sp.Transparency = 1 sp.CanCollide = false table.insert(Ignores,sp) local sn = Instance.new('Sound',sp) sn.SoundId = "rbxassetid://"..821439273 sn.Volume = Times/6 sn.Pitch = math.random(50,150)/100 sn.PlayOnRemove = false sn:Destroy() game:GetService('Debris'):AddItem(sp, 0.01) end local ranCF = CFrame.fromAxisAngle((Part1 - Part0).Unit, (math.random(-100,100)/100)*math.pi) local A1, A2 = {}, {} A1.WorldPosition, A1.WorldAxis = Part0, ranCF*Vector3.new(1,1,1) A2.WorldPosition, A2.WorldAxis = Part1, ranCF*Vector3.new(1,1,1) local NewBolt = LightningBolt.new(A1, A2, Times) NewBolt.CurveSize0 = Offset/2 * (Times/4) NewBolt.PulseSpeed = 5/math.clamp(Times/5, 1, 5) NewBolt.PulseLength = 1 NewBolt.FadeLength = 0.25 NewBolt.Thickness = Thickness NewBolt.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color), ColorSequenceKeypoint.new(1, Color3.new(Color.R/2,Color.G/2,Color.B/2)) }) local NewSparks = LightningSparks.new(NewBolt, 3) NewSparks.MinPartsPerSpark = 3 NewSparks.MaxPartsPerSpark = math.clamp(5+math.ceil(Times), 5, 30) NewSparks.MinDistance = 1 NewSparks.MaxDistance = math.clamp(Times/3, 1, 10) end function sc:Lightning(...) local lol = {...} Lightning(unpack(lol)) end function sc:Raycast(Start,End,Distance,Ignore) local Hit,Pos,Mag,Table = nil,nil,0,{} local B,V = workspace:FindPartOnRayWithIgnoreList(Ray.new(Start,((CFrame.new(Start,End).lookVector).unit) * Distance),(Ignore or {})) if B ~= nil then local BO = (Start - V).Magnitude table.insert(Table, {Hit = B, Pos = V, Mag = BO}) end for i,g in next, Table do if i == 1 then Mag = Table[i].Mag end if Table[i].Mag <= Mag then Mag = Table[i].Mag Hit = Table[i].Hit Pos = Table[i].Pos end end return Hit,Pos end sc.Ignore = {} function sc:SoundEffect(parent,id,vol,pit,playonremove) local snd = Instance.new("Sound", parent) snd.Volume = vol snd.SoundId = "rbxassetid://"..id snd.Pitch = pit snd.PlayOnRemove = playonremove or false if(playonremove)then snd:Play() else snd:Play() end table.insert(Ignores,snd) game:GetService("Debris"):AddItem(snd, snd.TimeLength/snd.Pitch) end function sc:Effect(CF,Transparency,Size,Color,TweenTime,Tween,Tween2) local Part=Instance.new('Part'); Part.Parent=Character; Part.Anchored=true; Part.CanCollide=false; Part.Material=Enum.Material.Glass; if typeof(CF)=="CFrame" then Part.CFrame=CF; elseif typeof(CF)=="Vector3" then Part.Position=CF; end; Part.Transparency=Transparency; Part.Size=Vector3.new(0.05,0.05,0.05); Part.Color=Color; local Mesh=Instance.new('BlockMesh'); Mesh.Parent=Part; Mesh.Scale=Size*20; table.insert(Ignores,Part) game:GetService('TweenService'):Create(Part,TweenInfo.new(TweenTime,Enum.EasingStyle.Sine),Tween):Play(); game:GetService('TweenService'):Create(Mesh,TweenInfo.new(TweenTime,Enum.EasingStyle.Sine),Tween2):Play(); game:GetService('Debris'):AddItem(Part,TweenTime); end function sc:SpawnTrail(FROM,TO,Col,siz) sc:Effect(FROM,0,Vector3.new(0,0,0),Col,1,{ Transparency = 1, Orientation = Vector3.new(math.random(-360,360),math.random(-360,360),math.random(-360,360)) },{ Scale = Vector3.new(1,1*(siz*2),.1)*20 }) sc:Effect(TO,0,Vector3.new(0,0,0),Col,1,{ Transparency = 1, Orientation = Vector3.new(math.random(-360,360),math.random(-360,360),math.random(-360,360)) },{ Scale = Vector3.new(1,1*(siz*2),.1)*20 }) local DIST = (FROM - TO).Magnitude local TRAIL = Instance.new('Part') TRAIL.Parent = Character TRAIL.Size = Vector3.new(0.05,0.05,0.05) TRAIL.Transparency = 0 TRAIL.Anchored = true TRAIL.CanCollide = false TRAIL.Material = Enum.Material.Glass TRAIL.Color = Col TRAIL.CFrame = CFrame.new(FROM, TO) * CFrame.new(0, 0, -DIST/2) * CFrame.Angles(math.rad(90),math.rad(0),math.rad(0)) table.insert(Ignores,TRAIL) local Mesh = Instance.new('BlockMesh') Mesh.Parent = TRAIL Mesh.Scale = Vector3.new(siz,DIST,siz)*20 game:GetService('TweenService'):Create(TRAIL,TweenInfo.new(1),{ Transparency = 1, Color = Color3.new(0,0,0) }):Play() game:GetService('TweenService'):Create(Mesh,TweenInfo.new(1),{ Scale = Vector3.new(0,DIST,0)*20 }):Play() game:GetService('Debris'):AddItem(TRAIL,1) sc:Lightning(FROM, TO, 1, 2, Col, siz, effectmodel) end --// emperor stuff --// emperor stuff function setupemperorcosmetics() local firstspike = false table.foreach(script.Folder["Right Arm"]:GetChildren(),function(i,v) local lol = v:Clone() lol.Parent = RightArm if lol:IsA("Weld") then lol.Part0 = RightArm end end) local firstbleh = RightArm:FindFirstChild("BTWeld") firstbleh.Name = "Weld1" firstbleh.Part1 = RightArm:FindFirstChild("Spike") firstbleh.Part1.Name = "Spike1" local otherbleh = RightArm:FindFirstChild("BTWeld") otherbleh.Part1 = RightArm:FindFirstChild("Spike") otherbleh.Part1.Name = "Spike2" RightArm.HandCannon.Weld.Part0 = RightArm RightArm.Chain1.Attachment0 = RightArm.Attachment2 RightArm.Chain1.Attachment1 = RightArm.Attachment RightArm.Chain2.Attachment1 = RightArm.Attachment2 RightArm.Chain2.Attachment0 = RightArm.Attachment script.Folder.Parent = nil end setupemperorcosmetics() --// Refit local RefitDebounce = false Character.Archivable = true local CharacterClone = Character:Clone() local HumanoidClone = Humanoid:Clone() local blehchar = Character local clientgui = Create("ScreenGui",{ResetOnSpawn = false, Parent = owner.PlayerGui}) script.Parent = clientgui client.Parent = clientgui local coolPos = RootPart.CFrame local musicPos = 0 sc.SmokeTime = 0 function fixSound() if Song then Remove(Song) end Song = Create("Sound", { Parent = RootPart; Name = "Song"; SoundId = tostring("rbxassetid://"..Ids[currentSong]); PlaybackSpeed = .8; Volume = 0; Looped = true; }) Song:Play() Song.TimePosition = musicPos end local staticSound = nil function fixSound2() if staticSound then Remove(staticSound) end staticSound = Create("Sound", { Parent = RootPart; Name = "staticSound"; SoundId = tostring("rbxassetid://3619734707"); PlaybackSpeed = .8; Volume = 1; Looped = true; }) staticSound:Play() end function Refit() --// hellash refit oh no if RefitDebounce then return end RefitDebounce = true local charclone = CharacterClone:Clone() local humclone = HumanoidClone:Clone() charclone.Name = game:GetService("HttpService"):GenerateGUID(false) Player.Character = charclone Player.Character:FindFirstChildOfClass("Humanoid").Parent=nil Humanoid = humclone Humanoid.Parent=Player.Character Player.Character.Parent=workspace local oldchar = blehchar Character,blehchar = charclone,charclone table.foreach(Character:GetDescendants(),function(i,v) if (v.Name == "Animate" and v:IsA("LocalScript")) or v:IsA("Animator") or v:IsA("ForceField") then if v:IsA("LocalScript") then v.Disabled = true end if not v:IsA("ForceField") then Remove(v) else if v.Visible then Remove(v) end end end end) fixSound() Torso, RootPart, RightArm, LeftArm, RightLeg, LeftLeg, Head = Character.Torso, Character.HumanoidRootPart, Character["Right Arm"], Character["Left Arm"], Character["Right Leg"], Character["Left Leg"], Character.Head --Remove({Torso.Neck, Torso["Right Shoulder"], Torso["Right Hip"], Torso["Left Shoulder"], Torso["Left Hip"], RootPart.RootJoint}) Joints = { Torso = {Joint = Create("Motor6D", {Name = "RootJoint", Parent = RootPart, Part0 = RootPart, Part1 = Torso, C0 = cf.n(), C1 = cf.n()})}; Head = {Joint = Create("Motor6D", {Name = "Neck", Parent = Torso, Part0 = Torso, Part1 = Head, C0 = cf.n(), C1 = cf.n()})}; RightArm = {Joint = Create("Motor6D", {Name = "Right Shoulder", Parent = Torso, Part0 = Torso, Part1 = RightArm, C0 = cf.n(), C1 = cf.n()})}; LeftArm = {Joint = Create("Motor6D", {Name = "Left Shoulder", Parent = Torso, Part0 = Torso, Part1 = LeftArm, C0 = cf.n(), C1 = cf.n()})}; RightLeg = {Joint = Create("Motor6D", {Name = "Right Hip", Parent = Torso, Part0 = Torso, Part1 = RightLeg, C0 = cf.n(), C1 = cf.n()})}; LeftLeg = {Joint = Create("Motor6D", {Name = "Left Hip", Parent = Torso, Part0 = Torso, Part1 = LeftLeg, C0 = cf.n(), C1 = cf.n()})}; } table.foreach(Joints, function(i,v) v.Default = v.Joint.C0 end) RootPart.CFrame = coolPos Humanoid.Died:Connect(function() Refit() end) Remove(oldchar) Character.ChildRemoved:Connect(function(Child) if Character ~= Player.Character or not Character.Parent then return end if table.find(Ignores,Child) then return end Refit() end) task.wait(.1) RefitDebounce = false end --// chat Player.Chatted:Connect(chatfunc) --// shatter! function sc:CleanObject(obj,keep) local function clean(v) if v:IsA("DataModelMesh") and not table.find(keep,"SpecialMesh") then v:Destroy() elseif v:IsA("MeshPart") and not table.find(keep,"MeshPart") then local a = Instance.new("Part", v.Parent) a.Name = v.Name a.Size = v.Size a.CFrame = v.CFrame a.Material = v.Material a.Color = v.Color a.Transparency = v.Transparency a.Anchored = v.Anchored a.CanCollide = v.CanCollide a.CanQuery = v.CanQuery a.Parent = v.Parent pcall(game.Destroy,v) elseif v:IsA("UnionOperation") and not table.find(keep,"UnionOperation")then local a = Instance.new("Part", v.Parent) a.Name = v.Name a.Size = v.Size a.CFrame = v.CFrame a.Material = v.Material a.Color = v.Color a.Transparency = v.Transparency a.Anchored = v.Anchored a.CanCollide = v.CanCollide a.CanQuery = v.CanQuery a.Parent = v.Parent pcall(game.Destroy,v) elseif v:IsA("Sound") and not table.find(keep,"Sound") then v.PlayOnRemove = false v:Destroy() elseif v:IsA("Decal") and not table.find(keep,"Decal") then v:Destroy() elseif v:IsA("JointInstance") and not table.find(keep,"JointInstance") then v:Destroy() elseif v:IsA("Script") and not table.find(keep,"Script") then v.Disabled = true v:Destroy() elseif v:IsA("LocalScript") and not table.find(keep,"LocalScript") then v.Disabled = true v:Destroy() elseif v:IsA("ModuleScript") and not table.find(keep,"ModuleScript") then v:Destroy() elseif v:IsA("Attachment") and not table.find(keep,"Attachment") then v:Destroy() elseif v:IsA("ParticleEmitter") and not table.find(keep,"ParticleEmitter") then v:Destroy() elseif v:IsA("PointLight") and not table.find(keep,"PointLight") then v:Destroy() elseif(v:IsA("GuiObject") and not table.find(keep, "GuiObject"))then v:Destroy() end end clean(obj) for i,v in next, obj:GetDescendants() do clean(v) end end function sc:ClientTween(Object,Info,Goal) if(typeof(Info) == "TweenInfo")then Info = { Info.Time, Info.EasingStyle, Info.EasingDirection, Info.RepeatCount, Info.Reverses, Info.DelayTime } end game:GetService("TweenService"):Create(Object,TweenInfo.new(table.unpack(Info)),Goal):Play() task.delay(Info[1], function() for i,v in next, Goal do pcall(function() Object[i] = v end) end end) end function sc:Shatter(p) --thx WomanMalder UwU local function isdestroyed(inst) if (inst.Parent ~= nil) then return (false) end local _, b = pcall(function() inst.Parent = inst end) if(b:match('locked'))then return (true) else return (false) end end; local function Subtract(Part:BasePart,Negation:{Instance}|Instance,CollisionFidelity:Enum.CollisionFidelity|nil) if(CollisionFidelity==nil)then CollisionFidelity = 'Hull' end if(typeof(Negation)=='table')then for o, p in next, Negation do if (p:IsDescendantOf(workspace)) then else return end end return(Part:SubtractAsync(Negation, CollisionFidelity)); else if(Part:IsDescendantOf(workspace))then return(Part:SubtractAsync({Negation}, CollisionFidelity)); end end end; local function Fragment(Part, Count) local Fragments = {}; local partSize = Part.Size; local partCF = Part.CFrame; if(Part:IsDescendantOf(workspace) and Count >= 0)then local c1 = Instance.new('Part') c1.Size = partSize*4 c1.CFrame = partCF * CFrame.Angles(math.rad(math.random(-360,360)),math.rad(math.random(-360,360)),math.rad(math.random(-360,360))) * CFrame.new(0, -partSize.Y * 2, 0) local c2 = c1:Clone() c2.CFrame = partCF * CFrame.Angles(math.rad(math.random(-360,360)),math.rad(math.random(-360,360)),math.rad(math.random(-360,360))) * CFrame.new(0, partSize.Y * 2, 0) local p1, p2 pcall(function() p1 = Subtract(Part, c1) p2 = Subtract(Part, c2) end) if(p1 and p2) then p1.CFrame = partCF * partCF:ToObjectSpace(p1.CFrame) p2.CFrame = partCF * partCF:ToObjectSpace(p2.CFrame) p1.Parent = Part.Parent p2.Parent = Part.Parent local f1 = Fragment(p1, Count-1) local f2 = Fragment(p2, Count-1) table.insert(Fragments, p1) table.insert(Fragments, p2) for i, v in next, f1 do table.insert(Fragments, v) end for i, v in next, f2 do table.insert(Fragments, v) end end end for i, v in next, Fragments do v.Parent = nil end if(#Fragments == 0) then Fragments = {Part:Clone()} end return (Fragments) end local function getbiggestaxis(vector) local biggest = 0 if(vector.X>biggest)then biggest = vector.X end if(vector.Y>biggest)then biggest = vector.Y end if(vector.Z>biggest)then biggest = vector.Z end return biggest end local function shatterify(b) if(b:IsA("BasePart"))then pcall(function() if(b.Transparency >= 1)then pcall(game.Destroy,b) return end b.Anchored = true local fragments = Fragment(b, -1) pcall(game.Destroy,b) for i,v in next, fragments do pcall(function() task.spawn(function() v.Anchored = true v.Parent = workspace v.Material = Enum.Material.SmoothPlastic local biggest = 1+(getbiggestaxis(v.Size)/2) local pos = v.Position + (Vector3.new(math.random(-3,3),math.random(2,5),math.random(-3,3))*Vector3.new(biggest,biggest,biggest)) local mag = (v.Position - pos).Magnitude sc:ClientTween(v,TweenInfo.new((mag/2)/biggest, Enum.EasingStyle.Back),{ Position = pos, Size = v.Size/3, Orientation = Vector3.new(math.random(-360,360),math.random(-360,360),math.random(-360,360)) }) task.wait((mag/2)/biggest) if(v and v:IsDescendantOf(game))then local fragments2 = Fragment(v, 0) if(v and v:IsDescendantOf(game))then pcall(game.Destroy,v) for i,a in next, fragments2 do task.spawn(function() a.Anchored = true a.Parent = workspace a.Material = Enum.Material.Glass --sc:SoundEffect(a,7140152893,12,math.random(70,120)/100,true) biggest = 1+(getbiggestaxis(a.Size)/2) local pos = a.Position + (Vector3.new(math.random(-5,5),math.random(-5,5),math.random(-5,5))*Vector3.new(biggest,biggest,biggest)) local mag = (a.Position - pos).Magnitude sc:ClientTween(a,TweenInfo.new(mag/biggest),{ Position = pos, Size = Vector3.new(), Transparency = 1, Orientation = Vector3.new(math.random(-360,360),math.random(-360,360),math.random(-360,360)) }) task.wait((mag)/biggest) pcall(game.Destroy,a) end) end end else pcall(game.Destroy,v) end end) end) end pcall(game.Destroy,b) end) end end if(p:IsA("Model") or p:IsA("Folder") or p:IsA("WorldModel"))then sc:SoundEffect(p:FindFirstChildWhichIsA("Part",true),9125402735,1,math.random(70,120)/100,false) sc:CleanObject(p,{}) for i,b in next, p:GetDescendants() do if(b:IsA("BasePart"))then local e = game:GetService("TweenService"):Create(b,TweenInfo.new(3,Enum.EasingStyle.Sine),{Color = Color3.new(0, 0, 0)}) e:Play() spawn(function() e.Completed:Wait() coroutine.wrap(shatterify)(b) pcall(game.Destroy,b) end) end end elseif(p:IsA("BasePart"))then sc:SoundEffect(p,9125402735,1,math.random(70,120)/100,false) sc:CleanObject(p,{}) local e = game:GetService("TweenService"):Create(p,TweenInfo.new(3,Enum.EasingStyle.Sine),{Color = Color3.new(0, 0, 0)}) e:Play() spawn(function() e.Completed:Wait() coroutine.wrap(shatterify)(p) pcall(game.Destroy,p) end) for i,v in next, p:GetDescendants() do if(v:IsA("BasePart"))then local e = game:GetService("TweenService"):Create(p,TweenInfo.new(3,Enum.EasingStyle.Sine),{Color = Color3.new(0, 0, 0)}) e:Play() spawn(function() e.Completed:Wait() coroutine.wrap(shatterify)(v) pcall(game.Destroy,v) end) end end end end --// handle uh function IsPointInVolume(point: Vector3, volumeCenter: CFrame, volumeSize: Vector3): boolean local volumeSpacePoint = volumeCenter:PointToObjectSpace(point) return volumeSpacePoint.X >= -volumeSize.X/2 and volumeSpacePoint.X <= volumeSize.X/2 and volumeSpacePoint.Y >= -volumeSize.Y/2 and volumeSpacePoint.Y <= volumeSize.Y/2 and volumeSpacePoint.Z >= -volumeSize.Z/2 and volumeSpacePoint.Z <= volumeSize.Z/2 end function GetClosestPoint(part : BasePart, vector : Vector3) : Vector3 local closestPoint = part.CFrame:PointToObjectSpace(vector) local size = part.Size / 2 closestPoint = Vector3.new( math.clamp(closestPoint.x, -size.x, size.x), math.clamp(closestPoint.y, -size.y, size.y), math.clamp(closestPoint.z, -size.z, size.z) ) return part.CFrame:PointToWorldSpace(closestPoint) end function Aoe(Position, Range) local Descendants = workspace:GetDescendants() local parts = {} for i = 1, #Descendants do local Object = Descendants[i] if Object ~= workspace and not Object:IsA("Terrain") and Object:IsA("BasePart") then local ClosestPoint = GetClosestPoint(Object, (typeof(Position) == "CFrame" and Position.Position or Position)) local Magnitude = (Object.Position - (typeof(Position) == "CFrame" and Position.Position or Position)).Magnitude if IsPointInVolume(ClosestPoint, (typeof(Position) == "Vector3" and CFrame.new(Position.X,Position.Y,Position.Z) or Position), (typeof(Range) ~= "Vector3" and Vector3.new(Range,Range,Range) or Range)) then table.insert(parts, Object) end end end return parts end sc.KillTexts = { "Begone, ", "Dissapear, ", "Feel my wrath, ", "Vanish, ", "Die, ", "Cease to exist, ", "Shatter, ", "Break, " } function getNumberOfPartsInModel(model) local a = 0 for i,v in next, model:GetDescendants() do if(v:IsA("BasePart"))then a += 1 end end return a end local LastShatter = tick() local ShatterDebounceTime = 0.5 shatterkillfuncbleh = function(v, m) local maxparts = 50 if(m)then if(m:IsDescendantOf(game) and m)then if(getNumberOfPartsInModel(m) <= maxparts)then if((tick() - LastShatter)>=ShatterDebounceTime)then sc:Shatter(m) LastShatter = tick() end pcall(game.Destroy, m) else pcall(game.Destroy, m) end end else if(v:IsDescendantOf(game) and v)then if(getNumberOfPartsInModel(v) <= maxparts)then if((tick() - LastShatter)>=ShatterDebounceTime)then sc:Shatter(v) LastShatter = tick() end --pcall(game.Destroy, v) else --pcall(game.Destroy, v) end end end end function sc:Aoe(Position, Range) local success, parts = pcall(function() return Aoe(Position, Range) end) if(not success)then parts = {} end task.spawn(function() for i,v in next, parts do pcall(function() --sc.UpdateIgnore() if(not v:IsDescendantOf(Character)) and not table.find(Ignores,v) then if(v.Name:lower() ~= "baseplate" and v.Name:lower() ~= "base")then local m = v:FindFirstAncestorOfClass("Model") or v:FindFirstAncestorOfClass("Folder") or v:FindFirstAncestorOfClass("WorldModel") if(m)then else end shatterkillfuncbleh(v,m) --if(sc.KillMethods[sc.KillMethod])then --sc.KillMethods[sc.KillMethod].Function(v, m) --end end end end) end end) return parts end --// attack function sc:GetFramesToSecond(seconds) return ((60)*seconds) end function sc.shoot() local State = FetchStatus() if State == "Jump" or State == "Fall" then return end sc.Attack = true for i = 1, sc:GetFramesToSecond(.3) do Animate({ CFrame.new(0,0+.1*math.cos(sine/30),0)*CFrame.Angles(math.rad(0),math.rad(50),math.rad(0))*CFrame.Angles(0,math.rad(-0),0), CFrame.new(-1.5,0+.1*math.cos(sine/36),0)*CFrame.Angles(math.rad(0+5*math.cos(sine/32)),math.rad(30+5*math.cos(sine/35)),math.rad(-5+5*math.cos(sine/34))), CFrame.new(-0.5,-2-.1*math.cos(sine/30),0+math.rad(3)*math.cos(sine/30))*CFrame.Angles(math.rad(-3+3*math.cos(sine/30)),math.rad(10),math.rad(0)), CFrame.new(1.5+.5,0+.3-.1*math.cos(sine/35),-0.3)*CFrame.Angles(math.rad(90+5*math.cos(sine/30)),math.rad(0+5*math.cos(sine/30)),math.rad(50-5*math.cos(sine/32))), CFrame.new(0.5,-2-.1*math.cos(sine/30),0+math.rad(3)*math.cos(sine/30))*CFrame.Angles(math.rad(-3+3*math.cos(sine/30)),math.rad(-30),math.rad(0)), CFrame.new(0,1.5,0)*CFrame.Angles(math.rad(-3+3*math.cos(sine/30)),math.rad(-50+1*math.cos(sine/35)),math.rad(0-1*math.cos(sine/33))), },.3) game:GetService("RunService").PostSimulation:Wait() end for i = 1,math.random(1,20) do sc:Effect(RightArm.HandCannon.Hole.Position, 0, Vector3.new(math.random(),math.random(),math.random()), Color3.new(0,0,math.random()), .5, { Transparency = 1, Color = Color3.new(), Orientation = Vector3.new(math.random(-360,360),math.random(-360,360),math.random(-360,360)), Position = RightArm.HandCannon.Hole.Position+Vector3.new(math.random(-5,5),math.random(-5,5),math.random(-5,5)) },{ Scale = Vector3.new() }) sc:Effect(Mouse.Hit.Position, 0, Vector3.new(math.random(),math.random(),math.random()), Color3.new(0,0,math.random()), .5, { Transparency = 1, Color = Color3.new(), Orientation = Vector3.new(math.random(-360,360),math.random(-360,360),math.random(-360,360)), Position = Mouse.Hit.Position+Vector3.new(math.random(-5,5),math.random(-5,5),math.random(-5,5)) },{ Scale = Vector3.new() }) end sc:SpawnTrail(RightArm.HandCannon.Hole.Position, Mouse.Hit.Position, Color3.new(0,0,1), .5) sc:SoundEffect(RightArm.HandCannon.Hole, 9058737882, 2, math.random(90,110)/100, false) sc:SoundEffect(RightArm.HandCannon.Hole, 9060276709, 1, math.random(90,110)/100, false) sc.SmokeTime += sc:GetFramesToSecond(3) sc:Aoe(Mouse.Hit.Position, 3) for i = 1, sc:GetFramesToSecond(.3) do Animate({ CFrame.new(0,0+.1*math.cos(sine/30),0)*CFrame.Angles(math.rad(0),math.rad(50),math.rad(0))*CFrame.Angles(0,math.rad(-0),0), CFrame.new(-1.5,0+.1*math.cos(sine/36),0)*CFrame.Angles(math.rad(0+5*math.cos(sine/32)),math.rad(30+5*math.cos(sine/35)),math.rad(-5+5*math.cos(sine/34))), CFrame.new(-0.5,-2-.1*math.cos(sine/30),0+math.rad(3)*math.cos(sine/30))*CFrame.Angles(math.rad(-3+3*math.cos(sine/30)),math.rad(10),math.rad(0)), CFrame.new(1.5+.5,0+.3-.1*math.cos(sine/35),-0.3)*CFrame.Angles(math.rad(120+5*math.cos(sine/30)),math.rad(0+5*math.cos(sine/30)),math.rad(50-5*math.cos(sine/32))), CFrame.new(0.5,-2-.1*math.cos(sine/30),0+math.rad(3)*math.cos(sine/30))*CFrame.Angles(math.rad(-3+3*math.cos(sine/30)),math.rad(-30),math.rad(0)), CFrame.new(0,1.5,0)*CFrame.Angles(math.rad(-3+3*math.cos(sine/30)),math.rad(-50+1*math.cos(sine/35)),math.rad(0-1*math.cos(sine/33))), },.3) game:GetService("RunService").PostSimulation:Wait() end sc.Attack = false end local bezier = { new = function(...) local points = {...} assert(#points >= 2, "bezier.new requires atleast 2 points") local operation = "" local s = "local points = ...\n" for k,v in next, points do s = s .. `local p{k - 1} = points[{k}]\n` if k == 1 then operation = operation .. `(1 - t)^{#points-1}*p0 + ` continue end if k == #points then operation = operation .. `t^{#points-1}*p{k - 1}` continue end operation = operation .. `{#points-1}*(1 - t){string.rep("*t", k - 2)}^{#points - 2}{k == 2 and "*t" or ""}*p{k - 1}` if k ~= #points then operation = operation .. " + " end end s = s .. `\nreturn function(t) return {operation} end` local func, err = loadstring(s) if func then func = func(points) else error(`{err}`) end return { calc = func } end } function sc.xattack() sc.Attack = true local orighit = Mouse.Hit.Position local part = Instance.new("Part", workspace) part.Anchored = true part.CanCollide = false part.CanQuery = false part.Color = Color3.new(0,0,math.random()) part.Orientation = Vector3.new(math.random(-360,360),math.random(-360,360),math.random(-360,360)) part.Position = (LeftArm.CFrame*CFrame.new(0,-1,0)).Position part.Size = Vector3.new(.5,.5,.5) part.Material = Enum.Material.Glass table.insert(Ignores,part) sc:SoundEffect(LeftArm, 3750951732, 1, math.random(90,110)/100, false) for i = 1, sc:GetFramesToSecond(1.5) do Animate({ CFrame.new(0,0+.1*math.cos(sine/30),0)*CFrame.Angles(math.rad(0),math.rad(20),math.rad(0))*CFrame.Angles(0,math.rad(-0),0), CFrame.new(-1.5,0+.1*math.cos(sine/36),0.5)*CFrame.Angles(math.rad(-50+5*math.cos(sine/32)),math.rad(20+5*math.cos(sine/35)),math.rad(10+5*math.cos(sine/34))), CFrame.new(-0.5,-2-.1*math.cos(sine/30),0+math.rad(3)*math.cos(sine/30))*CFrame.Angles(math.rad(-3+3*math.cos(sine/30)),math.rad(10+1*math.cos(sine/54)),math.rad(0+1*math.cos(sine/50))), CFrame.new(1.5,0+1-.1*math.cos(sine/35),0)*CFrame.Angles(math.rad(180+5*math.cos(sine/34)),math.rad(0+5*math.cos(sine/38)),math.rad(5-5*math.cos(sine/32))), CFrame.new(0.5,-2-.1*math.cos(sine/30),0+math.rad(3)*math.cos(sine/30))*CFrame.Angles(math.rad(-3+3*math.cos(sine/30)),math.rad(-10-1*math.cos(sine/56)),math.rad(0-1*math.cos(sine/53))), CFrame.new(0,1.5,0)*CFrame.Angles(math.rad(-3+3*math.cos(sine/31)),math.rad(-20+3*math.cos(sine/35)),math.rad(0-3*math.cos(sine/39))), },.1) sc:Effect(LeftArm.CFrame*CFrame.new(math.random(-2,2),-1+math.random(-2,2),math.random(-2,2)), 0, Vector3.new(.3,.3,.3), Color3.new(0,0,math.random()), 1, { Position = (LeftArm.CFrame*CFrame.new(0,-1,0)).Position, Orientation = Vector3.new(math.random(-360,360),math.random(-360,360),math.random(-360,360)), Transparency = 1 },{ Scale = Vector3.new(0,0,0) }) part.Position = (LeftArm.CFrame*CFrame.new(0,-1,0)).Position game:GetService("RunService").PostSimulation:Wait() end for i = 1, sc:GetFramesToSecond(.3) do Animate({ CFrame.new(0,0+.1*math.cos(sine/30),0)*CFrame.Angles(math.rad(0),math.rad(-20),math.rad(0))*CFrame.Angles(0,math.rad(-0),0), CFrame.new(-1.5,0.2+.1*math.cos(sine/36),-0.5)*CFrame.Angles(math.rad(80+5*math.cos(sine/32)),math.rad(-20+5*math.cos(sine/35)),math.rad(-20+5*math.cos(sine/34))), CFrame.new(-0.5,-2-.1*math.cos(sine/30),0+math.rad(3)*math.cos(sine/30))*CFrame.Angles(math.rad(-3+3*math.cos(sine/30)),math.rad(10+1*math.cos(sine/54)),math.rad(0+1*math.cos(sine/50))), CFrame.new(1.5,0+1-.1*math.cos(sine/35),0)*CFrame.Angles(math.rad(180+5*math.cos(sine/34)),math.rad(0+5*math.cos(sine/38)),math.rad(5-5*math.cos(sine/32))), CFrame.new(0.5,-2-.1*math.cos(sine/30),0+math.rad(3)*math.cos(sine/30))*CFrame.Angles(math.rad(-3+3*math.cos(sine/30)),math.rad(-10-1*math.cos(sine/56)),math.rad(0-1*math.cos(sine/53))), CFrame.new(0,1.5,0)*CFrame.Angles(math.rad(-3+3*math.cos(sine/31)),math.rad(20+3*math.cos(sine/35)),math.rad(0-3*math.cos(sine/39))), },.3) part.Position = (LeftArm.CFrame*CFrame.new(0,-1,0)).Position game:GetService("RunService").PostSimulation:Wait() end sc:SoundEffect(LeftArm, 608600954, 3, math.random(90,110)/100, false) local pos = orighit+Vector3.new(0,40+math.random(-2,2),0) local mag = (pos - orighit).Magnitude local bez = bezier.new((LeftArm.CFrame*CFrame.new(0,-1,0)).Position,pos+Vector3.new(0,mag*2,0),pos) task.spawn(function() for i = 0, 1, 1/240 do for i = 1, sc:GetFramesToSecond(1/240) do game:GetService("RunService").PostSimulation:Wait() end end for i = 1, sc:GetFramesToSecond(.3) do Animate({ CFrame.new(0,0+.1*math.cos(sine/30),0)*CFrame.Angles(math.rad(0),math.rad(50),math.rad(0))*CFrame.Angles(0,math.rad(-0),0), CFrame.new(-1.5,0+.1*math.cos(sine/36),0)*CFrame.Angles(math.rad(0+5*math.cos(sine/32)),math.rad(30+5*math.cos(sine/35)),math.rad(-5+5*math.cos(sine/34))), CFrame.new(-0.5,-2-.1*math.cos(sine/30),0+math.rad(3)*math.cos(sine/30))*CFrame.Angles(math.rad(-3+3*math.cos(sine/30)),math.rad(10),math.rad(0)), CFrame.new(1.5+.5,0+.3-.1*math.cos(sine/35),-0.3)*CFrame.Angles(math.rad(100+5*math.cos(sine/30)),math.rad(0+5*math.cos(sine/30)),math.rad(50-5*math.cos(sine/32))), CFrame.new(0.5,-2-.1*math.cos(sine/30),0+math.rad(3)*math.cos(sine/30))*CFrame.Angles(math.rad(-3+3*math.cos(sine/30)),math.rad(-30),math.rad(0)), CFrame.new(0,1.5,0)*CFrame.Angles(math.rad(-3+3*math.cos(sine/30)),math.rad(-50+1*math.cos(sine/35)),math.rad(0-1*math.cos(sine/33))), },.3) game:GetService("RunService").PostSimulation:Wait() end for i = 1, sc:GetFramesToSecond(.6) do game:GetService("RunService").PostSimulation:Wait() end repeat game:GetService("RunService").PostSimulation:Wait() until (part.Position == pos) or (not part or not part:IsDescendantOf(workspace)) sc:SpawnTrail(RightArm.HandCannon.Hole.Position, part.Position, Color3.new(0,0,1), .5) sc:SoundEffect(RightArm.HandCannon.Hole, 9058737882, 2, math.random(90,110)/100, false) sc:SoundEffect(RightArm.HandCannon.Hole, 9060276709, 1, math.random(90,110)/100, false) sc.SmokeTime += sc:GetFramesToSecond(3) for i = 1,math.random(1,20) do sc:Effect(RightArm.HandCannon.Hole.Position, 0, Vector3.new(math.random(),math.random(),math.random()), Color3.new(0,0,math.random()), .5, { Transparency = 1, Color = Color3.new(), Orientation = Vector3.new(math.random(-360,360),math.random(-360,360),math.random(-360,360)), Position = RightArm.HandCannon.Hole.Position+Vector3.new(math.random(-5,5),math.random(-5,5),math.random(-5,5)) },{ Scale = Vector3.new() }) sc:Effect(part.Position, 0, Vector3.new(math.random(),math.random(),math.random()), Color3.new(0,0,math.random()), .5, { Transparency = 1, Color = Color3.new(), Orientation = Vector3.new(math.random(-360,360),math.random(-360,360),math.random(-360,360)), Position = Mouse.Hit.Position+Vector3.new(math.random(-5,5),math.random(-5,5),math.random(-5,5)) },{ Scale = Vector3.new() }) end sc:Effect(part.Position, 0, Vector3.new(10,10,10), Color3.new(0,0,math.random()), 2, { Transparency = 1, Color = Color3.new(), Orientation = Vector3.new(math.random(-360,360),math.random(-360,360),math.random(-360,360)) },{ Scale = Vector3.new() }) for i = 1, sc:GetFramesToSecond(.3) do Animate({ CFrame.new(0,0+.1*math.cos(sine/30),0)*CFrame.Angles(math.rad(0),math.rad(50),math.rad(0))*CFrame.Angles(0,math.rad(-0),0), CFrame.new(-1.5,0+.1*math.cos(sine/36),0)*CFrame.Angles(math.rad(0+5*math.cos(sine/32)),math.rad(30+5*math.cos(sine/35)),math.rad(-5+5*math.cos(sine/34))), CFrame.new(-0.5,-2-.1*math.cos(sine/30),0+math.rad(3)*math.cos(sine/30))*CFrame.Angles(math.rad(-3+3*math.cos(sine/30)),math.rad(10),math.rad(0)), CFrame.new(1.5+.5,0+.3-.1*math.cos(sine/35),-0.3)*CFrame.Angles(math.rad(130+5*math.cos(sine/30)),math.rad(0+5*math.cos(sine/30)),math.rad(50-5*math.cos(sine/32))), CFrame.new(0.5,-2-.1*math.cos(sine/30),0+math.rad(3)*math.cos(sine/30))*CFrame.Angles(math.rad(-3+3*math.cos(sine/30)),math.rad(-30),math.rad(0)), CFrame.new(0,1.5,0)*CFrame.Angles(math.rad(-3+3*math.cos(sine/30)),math.rad(-50+1*math.cos(sine/35)),math.rad(0-1*math.cos(sine/33))), },.3) game:GetService("RunService").PostSimulation:Wait() end sc.Attack = false end) for i = 0, 1, 1/60 do local pos = bez.calc(i) part.CFrame = CFrame.lookAt(part.Position, pos) part.Position = pos for i = 1, sc:GetFramesToSecond(1/60) do game:GetService("RunService").PostSimulation:Wait() end end sc:SoundEffect(part, 4458749278, 10, math.random(90,110)/100, false) --pcall(game.Destroy,part) for i = 1, 40 do local siz = math.random(40, 60) local siz2 = math.random(40, 60) sc:Effect(pos, 0, Vector3.new(siz, 1, siz2), Color3.new(0,0,math.random()), 2, { Transparency = 1, Color = Color3.new(), Orientation = Vector3.new(math.random(-10,10),math.random(-360,360),math.random(-10,10)) }, { Scale = Vector3.new() }) local posa = pos+Vector3.new(math.random(-siz,siz)/2,0,math.random(-siz2,siz2)/2) local hit, pos2 = sc:Raycast(posa, posa+Vector3.new(math.random(-siz,siz),-99999,math.random(-siz2,siz2)), 999999, sc.Ignore) if(hit)then local cf = CFrame.lookAt(pos+Vector3.new(math.random(-siz,siz)/2,0,math.random(-siz2,siz2)/2), pos2) local mag = (cf.Position - pos2).Magnitude sc:Effect(cf, 0, Vector3.new(.5,.5,.5), Color3.new(0,0,math.random()), mag/70, { Position = pos2, Color = Color3.new() },{ Scale = Vector3.new(.5,.5,5)*20 }) task.delay(mag/70,function() local part = Instance.new("Part", workspace) part.Anchored = true part.CanCollide = false part.CanQuery = false part.Color = Color3.new(0,0,math.random()) part.Orientation = Vector3.new(math.random(-360,360),math.random(-360,360),math.random(-360,360)) part.Position = pos2 part.Size = Vector3.new(1,1,1) part.Material = Enum.Material.Glass part.Transparency = 1 table.insert(Ignores,part) sc:SoundEffect(part, 3750959938, 5, math.random(90,110)/100, false) game:GetService("Debris"):AddItem(part,0) sc:Effect(pos2, 0, Vector3.new(math.random(5,10),math.random(5,10),math.random(5,10)), Color3.new(0,0,math.random()), math.random(1,2), { Transparency = 1, Orientation = Vector3.new(math.random(-360,360),math.random(-360,360),math.random(-360,360)), Color = Color3.new() },{ Scale = Vector3.new(0,0,0) }) sc:Aoe(pos2, 15) for i = 1, math.random(1,5) do local randompos = math.random(-30,30) local randompos2 = math.random(-30,30) local yrand = math.random(15,30) local hit, pos3 = sc:Raycast(pos2+Vector3.new(randompos,yrand,randompos2), pos2+Vector3.new(randompos,-9999,randompos2), 999999, sc.Ignore) local poss1, poss2, poss3 = pos2, pos2+Vector3.new(randompos,yrand,randompos2), pos3 local bez = bezier.new(poss1,poss2,poss3) local part = Instance.new("Part", workspace) part.Anchored = true part.CanCollide = false part.CanQuery = false part.Color = Color3.new(0,0,math.random()) part.Orientation = Vector3.new(math.random(-360,360),math.random(-360,360),math.random(-360,360)) part.Position = poss1 part.Size = Vector3.new(1,1,1) part.Material = Enum.Material.Glass table.insert(Ignores,part) task.spawn(function() local t = math.random(50,70) for i = 0, 1, 1/t do local pos = bez.calc(i) part.CFrame = CFrame.lookAt(part.Position, pos) part.Position = pos for i = 1, sc:GetFramesToSecond(1/t) do game:GetService("RunService").PostSimulation:Wait() end end local posss = part.Position sc:SoundEffect(part, 8388603871, math.random(1,3)/2, math.random(90,110)/100, false) -- pcall(game.Destroy,part) sc:Effect(posss, 0, Vector3.new(5,5,5), Color3.new(0,0,math.random()), math.random(), { Transparency = 1, Orientation = Vector3.new(math.random(-360,360),math.random(-360,360),math.random(-360,360)), Color = Color3.new(0,0,0) },{ Scale = Vector3.new() }) sc:Aoe(posss, 7) end) end end) end task.wait(0.1) end end --// Mouse functions Mouse.KeyDown:Connect(function(key) if key == "n" then elseif key == "m" then elseif key == "l" then elseif key == "z" then sc.shoot() elseif key == "x" then elseif key == "t" then elseif key == "p" then Refit() end end) --// Animation fixSound() Refit() function FetchStatus() local hitfloor,posfloor = workspace:FindPartOnRayWithIgnoreList(Ray.new(RootPart.CFrame.p,((CFrame.new(RootPart.Position,RootPart.Position - Vector3.new(0,1,0))).lookVector).unit * (4)), {Character}) local Walking = (math.abs(RootPart.Velocity.x) > 1 or math.abs(RootPart.Velocity.z) > 1) return (Humanoid.PlatformStand and 'Paralyzed' or Humanoid.Sit and 'Sit' or not hitfloor and RootPart.Velocity.y < -1 and "Fall" or not hitfloor and RootPart.Velocity.y > 1 and "Jump" or hitfloor and Walking and "Walk" or hitfloor and "Idle") end local Step = "R" local d2 = sc:GetFramesToSecond(1/60) local d = 0 RunService.Heartbeat:Connect(function(DeltaTime) sine += DeltaTime * 60 local State = (sc.Attack ~= true and FetchStatus() or "") coolPos = RootPart.CFrame if not Song or Song.Parent ~= RootPart then fixSound() end Song:Resume() musicPos = Song.TimePosition if not staticSound or staticSound.Parent ~= RootPart then fixSound2() end staticSound:Resume() table.foreach(Ignores,function(i,v) if not v then Ignores[i] = nil end end) d+=1 if(sc.SmokeTime > 0)then sc.SmokeTime -= 1 if(d >= d2)and(not sc.AxeEnabled)then d = 0 sc:Effect(RightArm.HandCannon.Hole.CFrame, 0, Vector3.new(math.random(),math.random(),math.random()), Color3.new(0,0,1), 1, { Transparency = 1, Color = Color3.new(.4,.4,.6), Orientation = Vector3.new(math.random(-360,360),math.random(-360,360),math.random(-360,360)), Position = RightArm.HandCannon.Hole.CFrame.Position+Vector3.new(0,3,0) },{ Scale = Vector3.new(0,0,0) }) end end if(math.random(1,50) == 1)then sc:Lightning((RightArm.HandCannon.Hole.CFrame*CFrame.new(0,1.5,0)).Position,RightArm.HandCannon.Hole.CFrame.Position,5,4,Color3.new(0,0,1),.1) sc:Effect(RightArm.HandCannon.Hole.CFrame, 0, Vector3.new(.3,.3,.3), Color3.new(0,0,1), 2, { Transparency = 1, Color = Color3.new(), Orientation = Vector3.new(math.random(-360,360),math.random(-360,360),math.random(-360,360)) },{ Scale = Vector3.new() }) end local MoveZ=math.clamp((Humanoid.MoveDirection*Torso.CFrame.LookVector).X+(Humanoid.MoveDirection*Torso.CFrame.LookVector).Z,-1,1) local MoveX=math.clamp((Humanoid.MoveDirection*Torso.CFrame.RightVector).X+(Humanoid.MoveDirection*Torso.CFrame.RightVector).Z,-1,1) local VerY=RootPart.Velocity.Y local wsval = 5/math.clamp(Humanoid.WalkSpeed/16,.25,2) local LookDir = Humanoid.MoveDirection * Torso.CFrame.LookVector local RightDir = Humanoid.MoveDirection * Torso.CFrame.RightVector local UpDir = Humanoid.MoveDirection * Torso.CFrame.UpVector local fnt = (LookDir.X+LookDir.Z+LookDir.Y) local lft = (RightDir.X+RightDir.Z+RightDir.Y) local top = (UpDir.X+UpDir.Z+UpDir.Y) local rlft = math.round(lft) local rfnt = math.round(fnt) local rtop = math.round(top) local th = 0.15 local lm = -0.7 local lh = -0.3 local wsv = 10/math.clamp(Humanoid.WalkSpeed/16,.25,2) local walkang = -25 local baseang = -15 local afnt = math.abs(rfnt) local alft = math.abs(rlft) local legturn = 20 local torsoturn = 15 local am = 0.2 local ah = 0.1 local armang = 40 local armrot = -15 local walkangle = -5 if State == "Idle" then Animate({ CFrame.new(-0.0529786237, 0, -0.00697433716, 0.965925872, 0, -0.258818835, 0, 1, 0, 0.258818835, 0, 0.965925872)*CFrame.new(0,.1*math.sin(sine/30),0)*CFrame.Angles(math.rad(0), math.rad(0), math.rad(0))*CFrame.Angles(0,math.rad(0),0), CFrame.new(-1.17740369, 5.66244125e-07, 0.431197882, 0.933012664, -0.345915794, 0.0991438255, 0.258818954, 0.836516201, 0.482963145, -0.24999997, -0.42495048, 0.87000984)*CFrame.new(0,.1*math.sin(sine/35),0)*CFrame.Angles(math.rad(-5*math.sin(sine/45)), math.rad(-5*math.sin(sine/42)), math.rad(-5*math.sin(sine/38))), CFrame.new(-0.525880694, -2, -0.0965932608, 0.965925813, 0, 0.258819044, 0, 1, 0, -0.258819044, 0, 0.965925813)*CFrame.new(0,-.1*math.sin(sine/30),math.rad(3)*math.cos(sine/30))*CFrame.Angles(math.rad(-3+3*math.cos(sine/30)), math.rad(0), math.rad(0)), CFrame.new(1.62323236, -0.0766367614, -0.135728061, 0.748705864, -0.602852523, -0.275696039, 0.377204537, 0.729434371, -0.570650637, 0.545120358, 0.323255748, 0.773530424)*CFrame.new(0,.1*math.sin(sine/32),0)*CFrame.Angles(math.rad(5*math.sin(sine/35)), math.rad(5*math.sin(sine/43)), math.rad(5*math.sin(sine/30))), CFrame.new(0.544830382, -2, -0.219067946, 0.866025567, 0, -0.499999583, 0, 1, 0, 0.499999583, 0, 0.866025567)*CFrame.new(0,-.1*math.sin(sine/30),math.rad(3)*math.cos(sine/30))*CFrame.Angles(math.rad(-3+3*math.cos(sine/30)), math.rad(0), math.rad(0)), CFrame.new(0.0529785156, 1.5, -0.00697517395, 0.965925872, 0, 0.258818835, 0, 1, 0, -0.258818835, 0, 0.965925872)*CFrame.Angles(math.rad(-3+3*math.cos(sine/31)),math.rad(3*math.cos(sine/35)),math.rad(-3*math.cos(sine/39))) }, .1) elseif State == "Walk" then Animate({ CFrame.new(0,th*math.cos(sine/(wsv/2)),0) * CFrame.Angles(math.rad((walkangle*fnt)*Humanoid.WalkSpeed/16),math.rad((torsoturn*lft)*Humanoid.WalkSpeed/16),math.rad((walkangle*lft)*Humanoid.WalkSpeed/16))*CFrame.Angles(0,math.rad(-0),0), CFrame.new(-1.5,(ah*math.sin((sine+1.3)/wsv)),(-am*math.cos((sine+0.5)/wsv))*fnt) * CFrame.Angles(math.rad(((armang*math.cos((sine)/wsv))*fnt)-(walkangle*fnt)),math.rad(((armrot*math.cos((sine+0.25)/wsv))*fnt)),math.rad(((armang/2))*lft)), CFrame.new(-0.5-((lm*math.sin((sine+1.35)/wsv))*-lft),-2+th*math.cos(sine/(wsv/2))+lh*math.cos((sine+1.35)/wsv)+(math.rad(-walkangle*(lft+afnt))),-((lm*math.sin((sine+1.35)/wsv))*fnt)-math.rad((torsoturn*lft))) * CFrame.Angles(-math.rad((((-walkang*math.sin((sine)/wsv))*fnt)+(-baseang*afnt))+(-walkangle*fnt)),-math.rad(((legturn)*(fnt*lft))-(torsoturn*lft)),-math.rad((((-walkang*math.sin((sine)/wsv))*lft))+(-walkangle*lft))), CFrame.new(1.5,0+1-.1*math.cos(sine/35),0)*CFrame.Angles(math.rad(180+5*math.cos(sine/30)),math.rad(0+5*math.cos(sine/30)),math.rad(5-5*math.cos(sine/32))), CFrame.new(0.5-((-lm*math.sin((sine+1.35)/wsv))*-lft),-2+th*math.cos(sine/(wsv/2))-lh*math.cos((sine+1.35)/wsv)+(math.rad(-walkangle*(-lft+afnt))),-((-lm*math.sin((sine+1.35)/wsv))*fnt)+math.rad((torsoturn*lft))) * CFrame.Angles(-math.rad((((walkang*math.sin((sine)/wsv))*fnt)+(-baseang*afnt))+(-walkangle*fnt)),-math.rad(((legturn)*(fnt*lft))-(torsoturn*lft)),-math.rad((((walkang*math.sin((sine)/wsv))*lft))+(-walkangle*lft))), CFrame.new(0,1.5,0) * CFrame.Angles(math.rad(((-5*math.cos((sine+0.3)/(wsv/2)))*fnt)+(-walkangle*fnt)),-math.rad((10*lft)),-math.rad((-5*math.cos((sine+0.3)/(wsv/2)))*lft)) },.125) if math.cos(sine/wsv)/2>.2 and Step=="L" then Step="R" local hit, pos = sc:Raycast(LeftLeg.Position, LeftLeg.Position - Vector3.new(0, 2, 0), 2, sc.Ignore) if(hit)then sc:SoundEffect(LeftLeg, 5761648082, 1, .8, false) local x,y,z = LeftLeg.CFrame:ToEulerAnglesXYZ() end end if math.cos(sine/wsv)/2<-.2 and Step=="R" then Step="L" local hit, pos = sc:Raycast(RightLeg.Position, RightLeg.Position - Vector3.new(0, 2, 0), 2, sc.Ignore) if(hit)then sc:SoundEffect(LeftLeg, 5761648082, 1, .8, false) end end elseif State == "Jump" or State == "Fall" then Animate({ CFrame.new(0,0,0)*CFrame.Angles(math.rad(0),math.rad(0 -0),math.rad(0)), CFrame.new(-1.5,2,0)*CFrame.Angles(math.rad(180),math.rad(0),math.rad(0)), CFrame.new(-0.5,-2,0)*CFrame.Angles(math.rad(0),math.rad(0),math.rad(0)), CFrame.new(1.5,2,0)*CFrame.Angles(math.rad(180),math.rad(0),math.rad(0)), CFrame.new(0.5,-2,0)*CFrame.Angles(math.rad(0),math.rad(0),math.rad(0)), CFrame.new(0,1.5,0)*CFrame.Angles(math.rad(0),math.rad(0),math.rad(0)) },.1) end end)
Editor Settings
Theme
Key bindings
Full width
Lines