View difference between Paste ID: 4WRzcZUt and qKrgPjB1
SHOW: | | - or go back to the newest paste.
1-
--effect test i guess
1+
2-
--press z while hovering over som1 to steal soul B)
2+
3-
-- Created by Nebula_Zorua --
3+
4-
-- Discord: Nebula the Zorua#6969
4+
5-
-- Youtube: https://www.youtube.com/channel/UCo9oU9dCw8jnuVLuy4_SATA
5+
6
local Torso = Char.Torso
7
local Mouse = Plr:GetMouse()
8
9
--// Shortcut Variables \\--
10
local CF = {N=CFrame.new,A=CFrame.Angles,fEA=CFrame.fromEulerAnglesXYZ}
11
local C3 = {N=Color3.new,RGB=Color3.fromRGB,HSV=Color3.fromHSV,tHSV=Color3.toHSV}
12
local V3 = {N=Vector3.new,FNI=Vector3.FromNormalId,A=Vector3.FromAxis}
13
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}
14
local De = S.Debris
15
local WS = workspace
16
local Lght = S.Lighting
17
local RS = S.ReplicatedStorage
18
local IN = Instance.new
19
--// Instance Creation Functions \\--
20
21
function Sound(parent,id,pitch,volume,looped,effect,autoPlay)
22
	local Sound = IN("Sound")
23
	Sound.SoundId = "rbxassetid://".. tostring(id or 0)
24
	Sound.Pitch = pitch or 1
25
	Sound.Volume = volume or 1
26
	Sound.Looped = looped or false
27
	if(autoPlay)then
28
		coroutine.wrap(function()
29
			repeat wait() until Sound.IsLoaded
30
			Sound.Playing = autoPlay or false
31
		end)()
32
	end
33
	if(not looped and effect)then
34
		Sound.Stopped:connect(function()
35
			Sound.Volume = 0
36
			Sound:destroy()
37
		end)
38
	elseif(effect)then
39
		warn("Sound can't be looped and a sound effect!")
40
	end
41
	Sound.Parent =parent or Torso
42
	return Sound
43
end
44
function Part(parent,color,material,size,cframe,anchored,cancollide)
45
	local part = IN("Part")
46
	part[typeof(color) == 'BrickColor' and 'BrickColor' or 'Color'] = color or C3.N(0,0,0)
47
	part.Material = material or Enum.Material.SmoothPlastic
48
	part.TopSurface,part.BottomSurface=10,10
49
	part.Size = size or V3.N(1,1,1)
50
	part.CFrame = cframe or CF.N(0,0,0)
51
	part.Anchored = anchored or true
52
	part.CanCollide = cancollide or false
53
	part.Parent = parent or Char
54
	return part
55
end
56
function Mesh(parent,meshtype,meshid,textid,scale,offset)
57
	local part = IN("SpecialMesh")
58
	part.MeshId = meshid or ""
59
	part.TextureId = textid or ""
60
	part.Scale = scale or V3.N(1,1,1)
61
	part.Offset = offset or V3.N(0,0,0)
62
	part.MeshType = meshtype or Enum.MeshType.Sphere
63
	part.Parent = parent
64
	return part
65
end
66
67
NewInstance = function(instance,parent,properties)
68
	local inst = Instance.new(instance,parent)
69
	if(properties)then
70
		for i,v in next, properties do
71
			pcall(function() inst[i] = v end)
72
		end
73
	end
74
	return inst;
75
end
76
77
local Frame_Speed = 60 -- The frame speed for swait. 1 is automatically divided by this
78
79
local Effects = IN("Folder",Char)
80
Effects.Name = "Effects"
81
--// Artificial HB \\--
82
83
local ArtificialHB = IN("BindableEvent", script)
84
ArtificialHB.Name = "Heartbeat"
85
86
script:WaitForChild("Heartbeat")
87
88
local tf = 0
89
local allowframeloss = false
90
local tossremainder = false
91
local lastframe = tick()
92
local frame = 1/Frame_Speed
93
ArtificialHB:Fire()
94
95
game:GetService("RunService").Heartbeat:connect(function(s, p)
96
	tf = tf + s
97
	if tf >= frame then
98
		if allowframeloss then
99
			script.Heartbeat:Fire()
100
			lastframe = tick()
101
		else
102
			for i = 1, math.floor(tf / frame) do
103
				ArtificialHB:Fire()
104
			end
105
			lastframe = tick()
106
		end
107
		if tossremainder then
108
			tf = 0
109
		else
110
			tf = tf - frame * math.floor(tf / frame)
111
		end
112
	end
113
end)
114
115
function swait(num)
116
	if num == 0 or num == nil then
117
		ArtificialHB.Event:wait()
118
	else
119
		for i = 0, num do
120
			ArtificialHB.Event:wait()
121
		end
122
	end
123
end
124
125
126
--// Effect Function(s) \\--
127
128
function Bezier(startpos, pos2, pos3, endpos, t)
129
	local A = startpos:lerp(pos2, t)
130
	local B  = pos2:lerp(pos3, t)
131
	local C = pos3:lerp(endpos, t)
132
	local lerp1 = A:lerp(B, t)
133
	local lerp2 = B:lerp(C, t)
134
	local cubic = lerp1:lerp(lerp2, t)
135
	return cubic
136
end
137
138
function Effect(data)
139
	local FX = data.Effect or 'Resize-AndFade'
140
	local Parent = data.Parent or Effects
141
	local Color = data.Color or C3.N(0,0,0)
142
	local Size = data.Size or V3.N(1,1,1)
143
	local MoveDir = data.MoveDirection or nil
144
	local MeshData = data.Mesh or nil
145
	local SndData = data.Sound or nil
146
	local Frames = data.Frames or 45
147
	local Manual = data.Manual or nil
148
	local Material = data.Material or nil
149
	local CFra = data.CFrame or Torso.CFrame
150
	local Settings = data.FXSettings or {}
151
	local Snd,Prt,Msh;
152
	if(Manual and typeof(Manual) == 'Instance' and Manual:IsA'BasePart')then
153
		Prt = Manual
154
	else
155
		Prt = Part(Parent,Color,Material,Size,CFra,true,false)
156
	end
157
	if(typeof(MeshData) == 'table')then
158
		Msh = Mesh(Prt,MeshData.MeshType,MeshData.MeshId,MeshData.TextureId,MeshData.Scale,MeshData.Offset)
159
	elseif(typeof(MeshData) == 'Instance')then
160
		Msh = MeshData:Clone()
161
		Msh.Parent = Prt
162
	end
163
	if(typeof(SndData) == 'table' or typeof(SndData) == 'Instance')then
164
		Snd = Sound(Prt,SndData.SoundId,SndData.Pitch,SndData.Volume,false,false,true)
165
	end
166
	if(Snd)then
167
		repeat wait() until Snd.Playing and Snd.IsLoaded and Snd.TimeLength > 0
168
		Frames = Snd.TimeLength * Frame_Speed/Snd.Pitch
169
	end
170
	local MoveSpeed = nil;
171
	if(MoveDir)then
172
		MoveSpeed = (CFra.p - MoveDir).magnitude/Frames
173
	end
174
	local Inc = M.RNG()-M.RNG()
175
	local Thingie = 0
176
	local Thingie2 = M.RNG(50,100)/100
177
178
	coroutine.wrap(function()
179
		if(FX ~= 'Arc')then
180
			for i = 1, Frames do
181
				if(FX == 'Resize-AndFade')then
182
					if(not Settings.EndSize)then
183
						Settings.EndSize = V3.N(0,0,0)
184
					end
185
					local grow = (typeof(Settings.EndSize) == 'Vector3' and Settings.EndSize-Size or typeof(Settings.EndSize) == 'number' and V3.N(Settings.EndSize))
186
					Prt.Size = Prt.Size - grow/Frames
187
					Prt.Transparency = (i/Frames)
188
				elseif(FX == 'Resize+AndFade')then
189
					if(not Settings.EndSize)then
190
						Settings.EndSize = Size*2
191
					end
192
					local grow = (typeof(Settings.EndSize) == 'Vector3' and Settings.EndSize-Size or typeof(Settings.EndSize) == 'number' and V3.N(Settings.EndSize))
193
					Prt.Size = Prt.Size + grow/Frames
194
					Prt.Transparency = (i/Frames)
195
				elseif(FX == 'Fade')then
196
					Prt.Transparency = (i/Frames)
197
				end
198
				if(Settings.RandomizeCFrame)then
199
					Prt.CFrame = Prt.CFrame * CF.A(M.RRNG(-360,360),M.RRNG(-360,360),M.RRNG(-360,360))
200
				end
201
				if(MoveDir and MoveSpeed)then
202
					local Orientation = Prt.Orientation
203
					Prt.CFrame = CF.N(Prt.Position,MoveDir)*CF.N(0,0,-MoveSpeed)
204
					Prt.Orientation = Orientation
205
				end
206
				if(swait and typeof(swait) == 'function')then
207
					swait()
208
				else
209
					wait()
210
				end
211
			end
212
			Prt:destroy() 
213
		else
214
			local start,third,fourth,endP = Settings.Start,Settings.Third,Settings.Fourth,Settings.End
215
			if(not Settings.End and Settings.Home)then endP = Settings.Home.CFrame end
216
			local quarter = third or start:lerp(endP, 0.25) * CF.N(M.RNG(-25,25),M.RNG(0,25),M.RNG(-25,25))
217
			local threequarter = fourth or start:lerp(endP, 0.75) * CF.N(M.RNG(-25,25),M.RNG(0,25),M.RNG(-25,25))
218
			assert(start ~= nil,"You need to specify a start point!")
219
			assert(endP ~= nil,"You need to specify an end point!")
220
			for i = 0, 1, Settings.Speed or 0.01 do
221
				if(Settings.Home)then
222
					endP = Settings.Home.CFrame
223
				end
224
				Prt.CFrame = Bezier(start, quarter, threequarter, endP, i)
225
				if(swait and typeof(swait) == 'function')then
226
					swait()
227
				else
228
					wait()
229
				end
230
			end
231
			if(Settings.RemoveOnGoal)then
232
				Prt:destroy()
233
			end
234
		end
235
	end)()
236
	return Prt,Msh,Snd
237
end	
238
239
240
function SoulSteal(whom)
241
	local torso = (whom:FindFirstChild'Head' or whom:FindFirstChild'Torso' or whom:FindFirstChild'UpperTorso' or whom:FindFirstChild'LowerTorso' or whom:FindFirstChild'HumanoidRootPart')
242
	print(torso)
243
	if(torso and torso:IsA'BasePart')then
244
		local Model = Instance.new("Model",Effects)
245
		Model.Name = whom.Name..""
246
		whom:Remove()
247
		local Soul = Part(Model,Color3.new(math.random(), math.random(), math.random(), math.random(),  math.random(),  math.random()),'Neon',V3.N(.5,.5,.5),torso.CFrame,true,false)
248
		Soul.Name = 'Head'
249
        NewInstance("Humanoid",Model,{Health=0,MaxHealth=0})
250
		Effect{
251
			Effect="Arc",
252-
		Model.Name = whom.Name.."'s Soul"
252+
253-
		whom:BreakJoints()
253+
254-
		local Soul = Part(Model,BrickColor.new'Really red','Glass',V3.N(.5,.5,.5),torso.CFrame,true,false)
254+
255
				Home = Torso,
256-
		NewInstance("Humanoid",Model,{Health=0,MaxHealth=0})
256+
257
			}
258
		}
259
		local lastPoint = Soul.CFrame.p
260
	
261
		for i = 0, 1, 0.01 do 
262
				local point = CFrame.new(lastPoint, Soul.Position) * CFrame.Angles(-math.pi/2, 0, 0)
263
				local mag = (lastPoint - Soul.Position).magnitude
264
				Effect{
265
					Effect = "Fade",
266
					CFrame = point * CF.N(0, mag/2, 0),
267
					Size = V3.N(.5,mag+.5,.5),
268
					Color = Soul.BrickColor
269
				}
270
				lastPoint = Soul.CFrame.p
271
			swait()
272
		end
273
		for i = 1, 5 do
274
			Effect{
275
				Effect="Fade",
276
				Color = Color3.new(math.random(), math.random(), math.random(), math.random(),  math.random(),  math.random()),
277
				MoveDirection = (Torso.CFrame*CFrame.new(M.RNG(-40,40),M.RNG(-40,40),M.RNG(-40,40))).p
278
			}	
279
		end
280
	end
281
end
282
Mouse.MouseClick:connect(function(k)
283-
				Color = BrickColor.new'Really red',
283+
284
			SoulSteal(Mouse.Target.Parent)
285
		end
286
	end
287
end)
288
end)