Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --effect test i guess
- --press z while hovering over som1 to steal soul B)
- -- Created by Nebula_Zorua --
- -- Discord: Nebula the Zorua#6969
- -- Youtube: https://www.youtube.com/channel/UCo9oU9dCw8jnuVLuy4_SATA
- --// Initializing \\--
- local S = setmetatable({},{__index = function(s,i) return game:service(i) end})
- local Plrs = S.Players
- local Plr = Plrs.LocalPlayer
- local Char = Plr.Character
- local Torso = Char.Torso
- local Mouse = Plr:GetMouse()
- --// Shortcut Variables \\--
- local CF = {N=CFrame.new,A=CFrame.Angles,fEA=CFrame.fromEulerAnglesXYZ}
- local C3 = {N=Color3.new,RGB=Color3.fromRGB,HSV=Color3.fromHSV,tHSV=Color3.toHSV}
- local V3 = {N=Vector3.new,FNI=Vector3.FromNormalId,A=Vector3.FromAxis}
- local M = {C=math.cos,R=math.rad,S=math.sin,P=math.pi,RNG=math.random,MRS=math.randomseed,H=math.huge,RRNG = function(min,max,div) return math.rad(math.random(min,max)/(div or 1)) end}
- local De = S.Debris
- local WS = workspace
- local Lght = S.Lighting
- local RS = S.ReplicatedStorage
- local IN = Instance.new
- --// Instance Creation Functions \\--
- function Sound(parent,id,pitch,volume,looped,effect,autoPlay)
- local Sound = IN("Sound")
- Sound.SoundId = "rbxassetid://".. tostring(id or 0)
- Sound.Pitch = pitch or 1
- Sound.Volume = volume or 1
- Sound.Looped = looped or false
- if(autoPlay)then
- coroutine.wrap(function()
- repeat wait() until Sound.IsLoaded
- Sound.Playing = autoPlay or false
- end)()
- end
- if(not looped and effect)then
- Sound.Stopped:connect(function()
- Sound.Volume = 0
- Sound:destroy()
- end)
- elseif(effect)then
- warn("Sound can't be looped and a sound effect!")
- end
- Sound.Parent =parent or Torso
- return Sound
- end
- function Part(parent,color,material,size,cframe,anchored,cancollide)
- local part = IN("Part")
- part[typeof(color) == 'BrickColor' and 'BrickColor' or 'Color'] = color or C3.N(0,0,0)
- part.Material = material or Enum.Material.SmoothPlastic
- part.TopSurface,part.BottomSurface=10,10
- part.Size = size or V3.N(1,1,1)
- part.CFrame = cframe or CF.N(0,0,0)
- part.Anchored = anchored or true
- part.CanCollide = cancollide or false
- part.Parent = parent or Char
- return part
- end
- function Mesh(parent,meshtype,meshid,textid,scale,offset)
- local part = IN("SpecialMesh")
- part.MeshId = meshid or ""
- part.TextureId = textid or ""
- part.Scale = scale or V3.N(1,1,1)
- part.Offset = offset or V3.N(0,0,0)
- part.MeshType = meshtype or Enum.MeshType.Sphere
- part.Parent = parent
- return part
- end
- NewInstance = function(instance,parent,properties)
- local inst = Instance.new(instance,parent)
- if(properties)then
- for i,v in next, properties do
- pcall(function() inst[i] = v end)
- end
- end
- return inst;
- end
- local Frame_Speed = 60 -- The frame speed for swait. 1 is automatically divided by this
- local Effects = IN("Folder",Char)
- Effects.Name = "Effects"
- --// Artificial HB \\--
- local ArtificialHB = IN("BindableEvent", script)
- ArtificialHB.Name = "Heartbeat"
- script:WaitForChild("Heartbeat")
- local tf = 0
- local allowframeloss = false
- local tossremainder = false
- local lastframe = tick()
- local frame = 1/Frame_Speed
- ArtificialHB:Fire()
- game:GetService("RunService").Heartbeat:connect(function(s, p)
- tf = tf + s
- if tf >= frame then
- if allowframeloss then
- script.Heartbeat:Fire()
- lastframe = tick()
- else
- for i = 1, math.floor(tf / frame) do
- ArtificialHB:Fire()
- end
- lastframe = tick()
- end
- if tossremainder then
- tf = 0
- else
- tf = tf - frame * math.floor(tf / frame)
- end
- end
- end)
- function swait(num)
- if num == 0 or num == nil then
- ArtificialHB.Event:wait()
- else
- for i = 0, num do
- ArtificialHB.Event:wait()
- end
- end
- end
- --// Effect Function(s) \\--
- function Bezier(startpos, pos2, pos3, endpos, t)
- local A = startpos:lerp(pos2, t)
- local B = pos2:lerp(pos3, t)
- local C = pos3:lerp(endpos, t)
- local lerp1 = A:lerp(B, t)
- local lerp2 = B:lerp(C, t)
- local cubic = lerp1:lerp(lerp2, t)
- return cubic
- end
- function Effect(data)
- local FX = data.Effect or 'Resize-AndFade'
- local Parent = data.Parent or Effects
- local Color = data.Color or C3.N(0,0,0)
- local Size = data.Size or V3.N(1,1,1)
- local MoveDir = data.MoveDirection or nil
- local MeshData = data.Mesh or nil
- local SndData = data.Sound or nil
- local Frames = data.Frames or 45
- local Manual = data.Manual or nil
- local Material = data.Material or nil
- local CFra = data.CFrame or Torso.CFrame
- local Settings = data.FXSettings or {}
- local Snd,Prt,Msh;
- if(Manual and typeof(Manual) == 'Instance' and Manual:IsA'BasePart')then
- Prt = Manual
- else
- Prt = Part(Parent,Color,Material,Size,CFra,true,false)
- end
- if(typeof(MeshData) == 'table')then
- Msh = Mesh(Prt,MeshData.MeshType,MeshData.MeshId,MeshData.TextureId,MeshData.Scale,MeshData.Offset)
- elseif(typeof(MeshData) == 'Instance')then
- Msh = MeshData:Clone()
- Msh.Parent = Prt
- end
- if(typeof(SndData) == 'table' or typeof(SndData) == 'Instance')then
- Snd = Sound(Prt,SndData.SoundId,SndData.Pitch,SndData.Volume,false,false,true)
- end
- if(Snd)then
- repeat wait() until Snd.Playing and Snd.IsLoaded and Snd.TimeLength > 0
- Frames = Snd.TimeLength * Frame_Speed/Snd.Pitch
- end
- local MoveSpeed = nil;
- if(MoveDir)then
- MoveSpeed = (CFra.p - MoveDir).magnitude/Frames
- end
- local Inc = M.RNG()-M.RNG()
- local Thingie = 0
- local Thingie2 = M.RNG(50,100)/100
- coroutine.wrap(function()
- if(FX ~= 'Arc')then
- for i = 1, Frames do
- if(FX == 'Resize-AndFade')then
- if(not Settings.EndSize)then
- Settings.EndSize = V3.N(0,0,0)
- end
- local grow = (typeof(Settings.EndSize) == 'Vector3' and Settings.EndSize-Size or typeof(Settings.EndSize) == 'number' and V3.N(Settings.EndSize))
- Prt.Size = Prt.Size - grow/Frames
- Prt.Transparency = (i/Frames)
- elseif(FX == 'Resize+AndFade')then
- if(not Settings.EndSize)then
- Settings.EndSize = Size*2
- end
- local grow = (typeof(Settings.EndSize) == 'Vector3' and Settings.EndSize-Size or typeof(Settings.EndSize) == 'number' and V3.N(Settings.EndSize))
- Prt.Size = Prt.Size + grow/Frames
- Prt.Transparency = (i/Frames)
- elseif(FX == 'Fade')then
- Prt.Transparency = (i/Frames)
- end
- if(Settings.RandomizeCFrame)then
- Prt.CFrame = Prt.CFrame * CF.A(M.RRNG(-360,360),M.RRNG(-360,360),M.RRNG(-360,360))
- end
- if(MoveDir and MoveSpeed)then
- local Orientation = Prt.Orientation
- Prt.CFrame = CF.N(Prt.Position,MoveDir)*CF.N(0,0,-MoveSpeed)
- Prt.Orientation = Orientation
- end
- if(swait and typeof(swait) == 'function')then
- swait()
- else
- wait()
- end
- end
- Prt:destroy()
- else
- local start,third,fourth,endP = Settings.Start,Settings.Third,Settings.Fourth,Settings.End
- if(not Settings.End and Settings.Home)then endP = Settings.Home.CFrame end
- local quarter = third or start:lerp(endP, 0.25) * CF.N(M.RNG(-25,25),M.RNG(0,25),M.RNG(-25,25))
- local threequarter = fourth or start:lerp(endP, 0.75) * CF.N(M.RNG(-25,25),M.RNG(0,25),M.RNG(-25,25))
- assert(start ~= nil,"You need to specify a start point!")
- assert(endP ~= nil,"You need to specify an end point!")
- for i = 0, 1, Settings.Speed or 0.01 do
- if(Settings.Home)then
- endP = Settings.Home.CFrame
- end
- Prt.CFrame = Bezier(start, quarter, threequarter, endP, i)
- if(swait and typeof(swait) == 'function')then
- swait()
- else
- wait()
- end
- end
- if(Settings.RemoveOnGoal)then
- Prt:destroy()
- end
- end
- end)()
- return Prt,Msh,Snd
- end
- function SoulSteal(whom)
- local torso = (whom:FindFirstChild'Head' or whom:FindFirstChild'Torso' or whom:FindFirstChild'UpperTorso' or whom:FindFirstChild'LowerTorso' or whom:FindFirstChild'HumanoidRootPart')
- print(torso)
- if(torso and torso:IsA'BasePart')then
- local Model = Instance.new("Model",Effects)
- Model.Name = whom.Name.."'s Soul"
- whom:BreakJoints()
- local Soul = Part(Model,BrickColor.new'Really red','Glass',V3.N(.5,.5,.5),torso.CFrame,true,false)
- Soul.Name = 'Head'
- NewInstance("Humanoid",Model,{Health=0,MaxHealth=0})
- Effect{
- Effect="Arc",
- Manual = Soul,
- FXSettings={
- Start=torso.CFrame,
- Home = Torso,
- RemoveOnGoal = true,
- }
- }
- local lastPoint = Soul.CFrame.p
- for i = 0, 1, 0.01 do
- local point = CFrame.new(lastPoint, Soul.Position) * CFrame.Angles(-math.pi/2, 0, 0)
- local mag = (lastPoint - Soul.Position).magnitude
- Effect{
- Effect = "Fade",
- CFrame = point * CF.N(0, mag/2, 0),
- Size = V3.N(.5,mag+.5,.5),
- Color = Soul.BrickColor
- }
- lastPoint = Soul.CFrame.p
- swait()
- end
- for i = 1, 5 do
- Effect{
- Effect="Fade",
- Color = BrickColor.new'Really red',
- MoveDirection = (Torso.CFrame*CFrame.new(M.RNG(-40,40),M.RNG(-40,40),M.RNG(-40,40))).p
- }
- end
- end
- end
- Mouse.KeyDown:connect(function(k)
- if(k == 'z')then
- if(Mouse.Target and Mouse.Target.Parent and Mouse.Target.Parent:FindFirstChildOfClass'Humanoid' and Mouse.Target.Parent:FindFirstChildOfClass'Humanoid'.Health > 0)then
- SoulSteal(Mouse.Target.Parent)
- end
- end
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement