View difference between Paste ID: FFUHk5G2 and YBUFFbFP
SHOW: | | - or go back to the newest paste.
1
--https://github.com/Mokiros/roblox-FE-compatibility
2
if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
3
local Player,game,owner = owner,game
4
local RealPlayer = Player
5
do
6
	print("FE Compatibility code V2 by Mokiros")
7
	local RealPlayer = RealPlayer
8
	script.Parent = RealPlayer.Character
9
10
	--Fake event to make stuff like Mouse.KeyDown work
11
	local Disconnect_Function = function(this)
12
		this[1].Functions[this[2]] = nil
13
	end
14
	local Disconnect_Metatable = {__index={disconnect=Disconnect_Function,Disconnect=Disconnect_Function}}
15
	local FakeEvent_Metatable = {__index={
16
		Connect = function(this,f)
17
			local i = tostring(math.random(0,10000))
18
			while this.Functions[i] do
19
				i = tostring(math.random(0,10000))
20
			end
21
			this.Functions[i] = f
22
			return setmetatable({this,i},Disconnect_Metatable)
23
		end
24
	}}
25
	FakeEvent_Metatable.__index.connect = FakeEvent_Metatable.__index.Connect
26
	local function fakeEvent()
27
		return setmetatable({Functions={}},FakeEvent_Metatable)
28
	end
29
30
	--Creating fake input objects with fake variables
31
    local FakeMouse = {Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent(),Button2Up=fakeEvent(),Button2Down=fakeEvent()}
32
    FakeMouse.keyUp = FakeMouse.KeyUp
33
    FakeMouse.keyDown = FakeMouse.KeyDown
34
	local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
35
	local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
36
		CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
37
	end}
38
	--Merged 2 functions into one by checking amount of arguments
39
	CAS.UnbindAction = CAS.BindAction
40
41
	--This function will trigger the events that have been :Connect()'ed
42
	local function TriggerEvent(self,ev,...)
43
		for _,f in pairs(self[ev].Functions) do
44
			f(...)
45
		end
46
	end
47
	FakeMouse.TriggerEvent = TriggerEvent
48
	UIS.TriggerEvent = TriggerEvent
49
50
	--Client communication
51
	local Event = Instance.new("RemoteEvent")
52
	Event.Name = "UserInput_Event"
53
	Event.OnServerEvent:Connect(function(plr,io)
54
	    if plr~=RealPlayer then return end
55
		FakeMouse.Target = io.Target
56
		FakeMouse.Hit = io.Hit
57
		if not io.isMouse then
58
			local b = io.UserInputState == Enum.UserInputState.Begin
59
			if io.UserInputType == Enum.UserInputType.MouseButton1 then
60
				return FakeMouse:TriggerEvent(b and "Button1Down" or "Button1Up")
61
			end
62
			if io.UserInputType == Enum.UserInputType.MouseButton2 then
63
				return FakeMouse:TriggerEvent(b and "Button2Down" or "Button2Up")
64
			end
65
			for _,t in pairs(CAS.Actions) do
66
				for _,k in pairs(t.Keys) do
67
					if k==io.KeyCode then
68
						t.Function(t.Name,io.UserInputState,io)
69
					end
70
				end
71
			end
72
			FakeMouse:TriggerEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
73
			UIS:TriggerEvent(b and "InputBegan" or "InputEnded",io,false)
74
	    end
75
	end)
76
	Event.Parent = NLS([==[local Event = script:WaitForChild("UserInput_Event")
77
	local Mouse = owner:GetMouse()
78
	local UIS = game:GetService("UserInputService")
79
	local input = function(io,RobloxHandled)
80
		if RobloxHandled then return end
81
		--Since InputObject is a client-side instance, we create and pass table instead
82
		Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target})
83
	end
84
	UIS.InputBegan:Connect(input)
85
	UIS.InputEnded:Connect(input)
86
	local h,t
87
	--Give the server mouse data every second frame, but only if the values changed
88
	--If player is not moving their mouse, client won't fire events
89
	local HB = game:GetService("RunService").Heartbeat
90
	while true do
91
		if h~=Mouse.Hit or t~=Mouse.Target then
92
			h,t=Mouse.Hit,Mouse.Target
93
			Event:FireServer({isMouse=true,Target=t,Hit=h})
94
		end
95
		--Wait 2 frames
96
		for i=1,2 do
97
			HB:Wait()
98
		end
99
	end]==],script)
100
101
	----Sandboxed game object that allows the usage of client-side methods and services
102
	--Real game object
103
	local RealGame = game
104
105
	--Metatable for fake service
106
	local FakeService_Metatable = {
107
		__index = function(self,k)
108
			local s = rawget(self,"_RealService")
109
			if s then
110
				return typeof(s[k])=="function"
111
				and function(_,...)return s[k](s,...)end or s[k]
112
			end
113
		end,
114
		__newindex = function(self,k,v)
115
			local s = rawget(self,"_RealService")
116
			if s then s[k]=v end
117
		end
118
	}
119
	local function FakeService(t,RealService)
120
		t._RealService = typeof(RealService)=="string" and RealGame:GetService(RealService) or RealService
121
		return setmetatable(t,FakeService_Metatable)
122
	end
123
124
	--Fake game object
125
	local FakeGame = {
126
		GetService = function(self,s)
127
			return rawget(self,s) or RealGame:GetService(s)
128
		end,
129
		Players = FakeService({
130
			LocalPlayer = FakeService({GetMouse=function(self)return FakeMouse end},Player)
131
		},"Players"),
132
		UserInputService = FakeService(UIS,"UserInputService"),
133
		ContextActionService = FakeService(CAS,"ContextActionService"),
134
		RunService = FakeService({
135
			_btrs = {},
136
			RenderStepped = RealGame:GetService("RunService").Heartbeat,
137
			BindToRenderStep = function(self,name,_,fun)
138
				self._btrs[name] = self.Heartbeat:Connect(fun)
139
			end,
140
			UnbindFromRenderStep = function(self,name)
141
				self._btrs[name]:Disconnect()
142
			end,
143
		},"RunService")
144
	}
145
	rawset(FakeGame.Players,"localPlayer",FakeGame.Players.LocalPlayer)
146
	FakeGame.service = FakeGame.GetService
147
	FakeService(FakeGame,game)
148
	--Changing owner to fake player object to support owner:GetMouse()
149
	game,owner = FakeGame,FakeGame.Players.LocalPlayer
150
end
151
152
Player = owner
153
	Character = Player.Character
154
	local txt = Instance.new("BillboardGui", Character)
155
	txt.Adornee = Character.Head
156
	txt.Name = "_status"
157
	txt.Size = UDim2.new(2, 0, 1.2, 0)
158
	txt.StudsOffset = Vector3.new(-9, 8, 0)
159
	local text = Instance.new("TextLabel", txt)
160
	text.Size = UDim2.new(10, 0, 7, 0)
161
	text.FontSize = "Size24"
162
	text.TextScaled = true
163
	text.TextTransparency = 0
164
	text.BackgroundTransparency = 1 
165
	text.TextTransparency = 0
166
	text.TextStrokeTransparency = 0
167
	text.Font = "Antique"
168
	text.TextStrokeColor3 = Color3.new(242, 243, 243)
169
        text.Text = "The Legendary Warden"
170
script.Name = "Banisher Gun V3 / 1"
171
--//====================================================\\--
172
--||			   CREATED BY SHACKLUSTER
173
--\\====================================================//--
174
175
script:ClearAllChildren()
176
wait(0.2)
177
178
Player = game:GetService("Players").LocalPlayer
179
PlayerGui = Player.PlayerGui
180
Cam = workspace.CurrentCamera
181
Backpack = Player.Backpack
182
Character = Player.Character
183
Humanoid = Character.Humanoid
184
Mouse = Player:GetMouse()
185
RootPart = Character["HumanoidRootPart"]
186
Torso = Character["Torso"]
187
Head = Character["Head"]
188
RightArm = Character["Right Arm"]
189
LeftArm = Character["Left Arm"]
190
RightLeg = Character["Right Leg"]
191
LeftLeg = Character["Left Leg"]
192
RootJoint = RootPart["RootJoint"]
193
Neck = Torso["Neck"]
194
RightShoulder = Torso["Right Shoulder"]
195
LeftShoulder = Torso["Left Shoulder"]
196
RightHip = Torso["Right Hip"]
197
LeftHip = Torso["Left Hip"]
198
local TIME = 0
199
local sick = Instance.new("Sound",Torso)
200
201
202
for i,v in pairs(Character:GetChildren()) do
203
	if v.ClassName == "Shirt" or v.ClassName == "Pants" or v.ClassName == "CharacterMesh" then
204
		v:Destroy()
205
	end
206
end
207
208
for i,v in pairs(Character:GetChildren()) do
209
	if v.ClassName == "Accessory" or v.ClassName == "Hat" then
210
		v:Destroy()
211
	end
212
end
213
214
local Shirt = Instance.new("Shirt",Character)
215
local Pants = Instance.new("Pants",Character)
216
Shirt.ShirtTemplate = "rbxassetid://189496457"
217
Pants.PantsTemplate = "rbxassetid://189691361"
218
219
IT = Instance.new
220
CF = CFrame.new
221
VT = Vector3.new
222
RAD = math.rad
223
C3 = Color3.new
224
UD2 = UDim2.new
225
BRICKC = BrickColor.new
226
ANGLES = CFrame.Angles
227
EULER = CFrame.fromEulerAnglesXYZ
228
COS = math.cos
229
ACOS = math.acos
230
SIN = math.sin
231
ASIN = math.asin
232
ABS = math.abs
233
MRANDOM = math.random
234
FLOOR = math.floor
235
236
Player = game:GetService("Players").LocalPlayer
237
PlayerGui = Player.PlayerGui
238
Cam = workspace.CurrentCamera
239
Backpack = Player.Backpack
240
Character = Player.Character
241
Humanoid = Character.Humanoid
242
Mouse = Player:GetMouse()
243
RootPart = Character["HumanoidRootPart"]
244
Torso = Character["Torso"]
245
Head = Character["Head"]
246
RightArm = Character["Right Arm"]
247
LeftArm = Character["Left Arm"]
248
RightLeg = Character["Right Leg"]
249
LeftLeg = Character["Left Leg"]
250
RootJoint = RootPart["RootJoint"]
251
Neck = Torso["Neck"]
252
RightShoulder = Torso["Right Shoulder"]
253
LeftShoulder = Torso["Left Shoulder"]
254
RightHip = Torso["Right Hip"]
255
LeftHip = Torso["Left Hip"]
256
warn("Anti-Death Loaded (edited by promlg112)")
257
258
IT = Instance.new
259
CF = CFrame.new
260
VT = Vector3.new
261
RAD = math.rad
262
C3 = Color3.new
263
UD2 = UDim2.new
264
BRICKC = BrickColor.new
265
ANGLES = CFrame.Angles
266
EULER = CFrame.fromEulerAnglesXYZ
267
COS = math.cos
268
ACOS = math.acos
269
SIN = math.sin
270
ASIN = math.asin
271
ABS = math.abs
272
MRANDOM = math.random
273
FLOOR = math.floor
274
275
local Speed = 55
276
local Rooted = false
277
local Effects = IT("Folder", Character)
278
Effects.Name = "Effects"
279
local UNANCHOR = true
280
local HITPOS = nil
281
local HITFLOOR = nil
282
local LEFTWINGS = {}
283
local RIGHTWINGS = {}
284
local BODY = {}
285
286
for _, c in pairs(Character:GetChildren()) do
287
	if c.ClassName == "Part" then
288
		table.insert(BODY,{c,Character})
289
		for _, q in pairs(c:GetChildren()) do
290
			if q.ClassName == "Motor6D" or q.ClassName == "Weld" or q.ClassName == "ManualWeld" then
291
				table.insert(BODY,{q,c})
292
			end
293
		end
294
	end
295
end
296
297
function refit()
298
	Character.Parent = workspace
299
	for e = 1, #BODY do
300
		if BODY[e] ~= nil then
301
			local STUFF = BODY[e]
302
			local PART = STUFF[1]
303
			local PARENT = STUFF[2]
304
			PART.Parent = PARENT
305
		end
306
	end
307
end
308
309
Humanoid.HealthChanged:connect(function()
310
	Humanoid.Parent = nil
311
	Humanoid.MaxHealth = "inf"
312
	Humanoid.Health = "inf"
313
	refit()
314
	Humanoid.Parent = Character
315
end)
316
317
Humanoid.Died:connect(function()
318
	Humanoid.Parent = nil
319
	Humanoid.MaxHealth = "inf"
320
	Humanoid.Health = "inf"
321
	refit()
322
	Humanoid.Parent = Character
323
end)
324
--//=================================\\
325
--||		  CUSTOMIZATION
326
--\\=================================//
327
328
Player_Size = 1 --Size of the player.
329
Animation_Speed = 3
330
Frame_Speed = 1 / 60 -- (1 / 30) OR (1 / 60)
331
332
local Speed = 16
333
local Effects2 = {}
334
335
--//=================================\\
336
--|| 	  END OF CUSTOMIZATION
337
--\\=================================//
338
339
	local function weldBetween(a, b)
340
	    local weldd = Instance.new("ManualWeld")
341
	    weldd.Part0 = a
342
	    weldd.Part1 = b
343
	    weldd.C0 = CFrame.new()
344
	    weldd.C1 = b.CFrame:inverse() * a.CFrame
345
	    weldd.Parent = a
346
	    return weldd
347
	end
348
--//=================================\\
349
--|| 	      PARTICLES N STUFF
350
--\\=================================//
351
352
local particleemitter = Instance.new('ParticleEmitter', LeftArm)
353
        particleemitter.VelocitySpread = 350
354
        particleemitter.Lifetime = NumberRange.new(1)
355
        particleemitter.Speed = NumberRange.new(0)
356
cringememe= {}
357
for i=0, 19 do
358
  cringememe[#cringememe + 1] = NumberSequenceKeypoint.new(i/19, math.random(1, 1))
359
end
360
particleemitter.Size = NumberSequence.new(cringememe)
361
        particleemitter.Rate = 20
362
        particleemitter.LockedToPart = true
363
        particleemitter.Transparency = NumberSequence.new({NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.8, 0), NumberSequenceKeypoint.new(1, 1)})
364
        particleemitter.LightEmission = 1
365
        particleemitter.Texture = "rbxassetid://0"
366
        particleemitter.Color = ColorSequence.new(BrickColor.new("White").Color)
367
368
        local particleemitter = Instance.new('ParticleEmitter', Torso)
369
        particleemitter.VelocitySpread = 250
370
        particleemitter.Lifetime = NumberRange.new(3)
371
        particleemitter.Speed = NumberRange.new(1.5)
372
youAreATHOT = {}
373
for i=0, 19 do
374
  youAreATHOT[#youAreATHOT + 1] = NumberSequenceKeypoint.new(i/19, math.random(1, 1))
375
end
376
particleemitter.Size = NumberSequence.new(youAreATHOT)
377
        particleemitter.Rate = 20
378
        particleemitter.LockedToPart = false
379
        particleemitter.Transparency = NumberSequence.new({NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.8, 0), NumberSequenceKeypoint.new(1, 1)})
380
        particleemitter.LightEmission = 1
381
        particleemitter.Texture = "rbxassetid://0"
382
        particleemitter.Color = ColorSequence.new(BrickColor.new("White").Color)
383
384
        local particleemitter = Instance.new('ParticleEmitter', RightArm)
385
        particleemitter.VelocitySpread = 350
386
        particleemitter.Lifetime = NumberRange.new(2)
387
        particleemitter.Speed = NumberRange.new(0)
388
cringememe2= {}
389
for i=0, 19 do
390
  cringememe2[#cringememe2 + 1] = NumberSequenceKeypoint.new(i/19, math.random(1, 1))
391
end
392
particleemitter.Size = NumberSequence.new(cringememe2)
393
        particleemitter.Rate = 20
394
        particleemitter.LockedToPart = true
395
        particleemitter.Transparency = NumberSequence.new({NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.8, 0), NumberSequenceKeypoint.new(1, 1)})
396
        particleemitter.LightEmission = 1
397
        particleemitter.Texture = "rbxassetid://0"
398
        particleemitter.Color = ColorSequence.new(BrickColor.new("White").Color)
399
400
        local particleemitter = Instance.new('ParticleEmitter', RightLeg)
401
        particleemitter.VelocitySpread = 350
402
        particleemitter.Lifetime = NumberRange.new(1)
403
        particleemitter.Speed = NumberRange.new(0)
404
cringememe3= {}
405
for i=0, 19 do
406
  cringememe3[#cringememe3 + 1] = NumberSequenceKeypoint.new(i/19, math.random(1, 1))
407
end
408
particleemitter.Size = NumberSequence.new(cringememe3)
409
        particleemitter.Rate = 30
410
        particleemitter.LockedToPart = true
411
        particleemitter.Transparency = NumberSequence.new({NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.8, 0), NumberSequenceKeypoint.new(1, 1)})
412
        particleemitter.LightEmission = 1
413
        particleemitter.Texture = "rbxassetid://0"
414
        particleemitter.Color = ColorSequence.new(BrickColor.new("White").Color)
415
416
        local particleemitter = Instance.new('ParticleEmitter', LeftLeg)
417
        particleemitter.VelocitySpread = 350
418
        particleemitter.Lifetime = NumberRange.new(1)
419
        particleemitter.Speed = NumberRange.new(0)
420
cringememe4= {}
421
for i=0, 19 do
422
  cringememe4[#cringememe4 + 1] = NumberSequenceKeypoint.new(i/19, math.random(1, 1))
423
end
424
particleemitter.Size = NumberSequence.new(cringememe4)
425
        particleemitter.Rate = 30
426
        particleemitter.LockedToPart = true
427
        particleemitter.Transparency = NumberSequence.new({NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.8, 0), NumberSequenceKeypoint.new(1, 1)})
428
        particleemitter.LightEmission = 1
429
        particleemitter.Texture = "rbxassetid://0"
430
        particleemitter.Color = ColorSequence.new(BrickColor.new("White").Color)
431
--//=================================\\
432
--|| 	      USEFUL VALUES
433
--\\=================================//
434
435
Animation_Speed = 3
436
Frame_Speed = 1 / 60 -- (1 / 30) OR (1 / 60)
437
local Speed = 35
438
local ROOTC0 = CF(0, 0, 0) * ANGLES(RAD(-90), RAD(0), RAD(180))
439
local NECKC0 = CF(0, 1, 0) * ANGLES(RAD(-90), RAD(0), RAD(180))
440
local RIGHTSHOULDERC0 = CF(-0.5, 0, 0) * ANGLES(RAD(0), RAD(90), RAD(0))
441
local LEFTSHOULDERC0 = CF(0.5, 0, 0) * ANGLES(RAD(0), RAD(-90), RAD(0))
442
local DAMAGEMULTIPLIER = 1
443
local ANIM = "Idle"
444
local ATTACK = false
445
local EQUIPPED = false
446
local HOLD = false
447
local COMBO = 1
448
local Rooted = false
449
local SINE = 0
450
local KEYHOLD = false
451
local CHANGE = 2 / Animation_Speed
452
local WALKINGANIM = false
453
local VALUE1 = false
454
local VALUE2 = false
455
local ROBLOXIDLEANIMATION = IT("Animation")
456
ROBLOXIDLEANIMATION.Name = "Roblox Idle Animation"
457
ROBLOXIDLEANIMATION.AnimationId = "http://www.roblox.com/asset/?id=180435571"
458
--ROBLOXIDLEANIMATION.Parent = Humanoid
459
local WEAPONGUI = IT("ScreenGui", PlayerGui)
460
WEAPONGUI.Name = "Weapon GUI"
461
local Effects = IT("Folder", Character)
462
Effects.Name = "Effects"
463
local ANIMATOR = Humanoid.Animator
464
local ANIMATE = Character.Animate
465
local UNANCHOR = true
466
local LAUGHS = {834001699,834001752,834001797,834001828}
467
468
Animation_Speed = 3
469
local FORCERESET = false
470
Frame_Speed = 1 / 60 -- (1 / 30) OR (1 / 60)
471
local Speed = 16
472
local ROOTC0 = CF(0, 0, 0) * ANGLES(RAD(-90), RAD(0), RAD(180))
473
local NECKC0 = CF(0, 1, 0) * ANGLES(RAD(-90), RAD(0), RAD(180))
474
local RIGHTSHOULDERC0 = CF(-0.5, 0, 0) * ANGLES(RAD(0), RAD(90), RAD(0))
475
local LEFTSHOULDERC0 = CF(0.5, 0, 0) * ANGLES(RAD(0), RAD(-90), RAD(0))
476
local DAMAGEMULTIPLIER = 1
477
local ANIM = "Idle"
478
local ATTACK = false
479
local EQUIPPED = false
480
local HOLD = true
481
local COMBO = 3
482
local Rooted = false
483
local SINE = 5
484
local KEYHOLD = false
485
local CHANGE = 2 / Animation_Speed
486
local WALKINGANIM = false
487
local VALUE1 = false
488
local VALUE2 = false
489
local ROBLOXIDLEANIMATION = IT("Animation")
490
ROBLOXIDLEANIMATION.Name = "Roblox Idle Animation"
491
ROBLOXIDLEANIMATION.AnimationId = "http://www.roblox.com/asset/?id=180435571"
492
--ROBLOXIDLEANIMATION.Parent = Humanoid
493
local WEAPONGUI = IT("ScreenGui", PlayerGui)
494
WEAPONGUI.Name = "BanishV4Gui"
495
local Weapon = IT("Model")
496
Weapon.Name = "Adds"
497
local Effects = IT("Folder", Weapon)
498
Effects.Name = "Effects"
499
local ANIMATOR = Humanoid.Animator
500
local ANIMATE = Character:FindFirstChild("Animate")
501
local UNANCHOR = true
502
local TOBANISH = {}
503
script.Parent = PlayerGui
504
505
--//=================================\\
506
--\\=================================//
507
508
509
--//=================================\\
510
--|| SAZERENOS' ARTIFICIAL HEARTBEAT
511
--\\=================================//
512
513
ArtificialHB = Instance.new("BindableEvent", script)
514
ArtificialHB.Name = "ArtificialHB"
515
516
script:WaitForChild("ArtificialHB")
517
518
frame = Frame_Speed
519
tf = 0
520
allowframeloss = false
521
tossremainder = false
522
lastframe = tick()
523
script.ArtificialHB:Fire()
524
525
game:GetService("RunService").Heartbeat:connect(function(s, p)
526
	tf = tf + s
527
	if tf >= frame then
528
		if allowframeloss then
529
			script.ArtificialHB:Fire()
530
			lastframe = tick()
531
		else
532
			for i = 1, math.floor(tf / frame) do
533
				script.ArtificialHB:Fire()
534
			end
535
		lastframe = tick()
536
		end
537
		if tossremainder then
538
			tf = 0
539
		else
540
			tf = tf - frame * math.floor(tf / frame)
541
		end
542
	end
543
end)
544
545
--//=================================\\
546
--\\=================================//
547
548
--//=================================\\
549
--|| 	      SOME FUNCTIONS
550
--\\=================================//
551
function Raycast(POSITION, DIRECTION, RANGE, IGNOREDECENDANTS)
552
	return workspace:FindPartOnRay(Ray.new(POSITION, DIRECTION.unit * RANGE), IGNOREDECENDANTS)
553
end
554
555
function PositiveAngle(NUMBER)
556
	if NUMBER >= 0 then
557
		NUMBER = 0
558
	end
559
	return NUMBER
560
end
561
562
function NegativeAngle(NUMBER)
563
	if NUMBER <= 0 then
564
		NUMBER = 0
565
	end
566
	return NUMBER
567
end
568
569
function Swait(NUMBER)
570
	if NUMBER == 0 or NUMBER == nil then
571
		ArtificialHB.Event:wait()
572
	else
573
		for i = 1, NUMBER do
574
			ArtificialHB.Event:wait()
575
		end
576
	end
577
end
578
579
function CreateMesh(MESH, PARENT, MESHTYPE, MESHID, TEXTUREID, SCALE, OFFSET)
580
	local NEWMESH = IT(MESH)
581
	if MESH == "SpecialMesh" then
582
		NEWMESH.MeshType = MESHTYPE
583
		if MESHID ~= "nil" and MESHID ~= "" then
584
			NEWMESH.MeshId = "http://www.roblox.com/asset/?id="..MESHID
585
		end
586
		if TEXTUREID ~= "nil" and TEXTUREID ~= "" then
587
			NEWMESH.TextureId = "http://www.roblox.com/asset/?id="..TEXTUREID
588
		end
589
	end
590
	NEWMESH.Offset = OFFSET or VT(0, 0, 0)
591
	NEWMESH.Scale = SCALE
592
	NEWMESH.Parent = PARENT
593
	return NEWMESH
594
end
595
596
function CreatePart(FORMFACTOR, PARENT, MATERIAL, REFLECTANCE, TRANSPARENCY, BRICKCOLOR, NAME, SIZE, ANCHOR)
597
	local NEWPART = IT("Part")
598
	NEWPART.formFactor = FORMFACTOR
599
	NEWPART.Reflectance = REFLECTANCE
600
	NEWPART.Transparency = TRANSPARENCY
601
	NEWPART.CanCollide = false
602
	NEWPART.Locked = true
603
	NEWPART.Anchored = true
604
	if ANCHOR == false then
605
		NEWPART.Anchored = false
606
	end
607
	NEWPART.BrickColor = BRICKC(tostring(BRICKCOLOR))
608
	NEWPART.Name = NAME
609
	NEWPART.Size = SIZE
610
	NEWPART.Position = Torso.Position
611
	NEWPART.Material = MATERIAL
612
	NEWPART:BreakJoints()
613
	NEWPART.Parent = PARENT
614
	return NEWPART
615
end
616
617
	local function weldBetween(a, b)
618
	    local weldd = Instance.new("ManualWeld")
619
	    weldd.Part0 = a
620
	    weldd.Part1 = b
621
	    weldd.C0 = CFrame.new()
622
	    weldd.C1 = b.CFrame:inverse() * a.CFrame
623
	    weldd.Parent = a
624
	    return weldd
625
	end
626
627
628
function QuaternionFromCFrame(cf)
629
	local mx, my, mz, m00, m01, m02, m10, m11, m12, m20, m21, m22 = cf:components()
630
	local trace = m00 + m11 + m22
631
	if trace > 0 then 
632
		local s = math.sqrt(1 + trace)
633
		local recip = 0.5 / s
634
		return (m21 - m12) * recip, (m02 - m20) * recip, (m10 - m01) * recip, s * 0.5
635
	else
636
		local i = 0
637
		if m11 > m00 then
638
			i = 1
639
		end
640
		if m22 > (i == 0 and m00 or m11) then
641
			i = 2
642
		end
643
		if i == 0 then
644
			local s = math.sqrt(m00 - m11 - m22 + 1)
645
			local recip = 0.5 / s
646
			return 0.5 * s, (m10 + m01) * recip, (m20 + m02) * recip, (m21 - m12) * recip
647
		elseif i == 1 then
648
			local s = math.sqrt(m11 - m22 - m00 + 1)
649
			local recip = 0.5 / s
650
			return (m01 + m10) * recip, 0.5 * s, (m21 + m12) * recip, (m02 - m20) * recip
651
		elseif i == 2 then
652
			local s = math.sqrt(m22 - m00 - m11 + 1)
653
			local recip = 0.5 / s return (m02 + m20) * recip, (m12 + m21) * recip, 0.5 * s, (m10 - m01) * recip
654
		end
655
	end
656
end
657
 
658
function QuaternionToCFrame(px, py, pz, x, y, z, w)
659
	local xs, ys, zs = x + x, y + y, z + z
660
	local wx, wy, wz = w * xs, w * ys, w * zs
661
	local xx = x * xs
662
	local xy = x * ys
663
	local xz = x * zs
664
	local yy = y * ys
665
	local yz = y * zs
666
	local zz = z * zs
667
	return CFrame.new(px, py, pz, 1 - (yy + zz), xy - wz, xz + wy, xy + wz, 1 - (xx + zz), yz - wx, xz - wy, yz + wx, 1 - (xx + yy))
668
end
669
 
670
function QuaternionSlerp(a, b, t)
671
	local cosTheta = a[1] * b[1] + a[2] * b[2] + a[3] * b[3] + a[4] * b[4]
672
	local startInterp, finishInterp;
673
	if cosTheta >= 0.0001 then
674
		if (1 - cosTheta) > 0.0001 then
675
			local theta = ACOS(cosTheta)
676
			local invSinTheta = 1 / SIN(theta)
677
			startInterp = SIN((1 - t) * theta) * invSinTheta
678
			finishInterp = SIN(t * theta) * invSinTheta
679
		else
680
			startInterp = 1 - t
681
			finishInterp = t
682
		end
683
	else
684
		if (1 + cosTheta) > 0.0001 then
685
			local theta = ACOS(-cosTheta)
686
			local invSinTheta = 1 / SIN(theta)
687
			startInterp = SIN((t - 1) * theta) * invSinTheta
688
			finishInterp = SIN(t * theta) * invSinTheta
689
		else
690
			startInterp = t - 1
691
			finishInterp = t
692
		end
693
	end
694
	return a[1] * startInterp + b[1] * finishInterp, a[2] * startInterp + b[2] * finishInterp, a[3] * startInterp + b[3] * finishInterp, a[4] * startInterp + b[4] * finishInterp
695
end
696
697
function Clerp(a, b, t)
698
	local qa = {QuaternionFromCFrame(a)}
699
	local qb = {QuaternionFromCFrame(b)}
700
	local ax, ay, az = a.x, a.y, a.z
701
	local bx, by, bz = b.x, b.y, b.z
702
	local _t = 1 - t
703
	return QuaternionToCFrame(_t * ax + t * bx, _t * ay + t * by, _t * az + t * bz, QuaternionSlerp(qa, qb, t))
704
end
705
706
function CreateFrame(PARENT, TRANSPARENCY, BORDERSIZEPIXEL, POSITION, SIZE, COLOR, BORDERCOLOR, NAME)
707
	local frame = IT("Frame")
708
	frame.BackgroundTransparency = TRANSPARENCY
709
	frame.BorderSizePixel = BORDERSIZEPIXEL
710
	frame.Position = POSITION
711
	frame.Size = SIZE
712
	frame.BackgroundColor3 = COLOR
713
	frame.BorderColor3 = BORDERCOLOR
714
	frame.Name = NAME
715
	frame.Parent = PARENT
716
	return frame
717
end
718
719
function CreateLabel(PARENT, TEXT, TEXTCOLOR, TEXTFONTSIZE, TEXTFONT, TRANSPARENCY, BORDERSIZEPIXEL, STROKETRANSPARENCY, NAME)
720
	local label = IT("TextLabel")
721
	label.BackgroundTransparency = 1
722
	label.Size = UD2(1, 0, 1, 0)
723
	label.Position = UD2(0, 0, 0, 0)
724
	label.TextColor3 = TEXTCOLOR
725
	label.TextStrokeTransparency = STROKETRANSPARENCY
726
	label.TextTransparency = TRANSPARENCY
727
	label.FontSize = TEXTFONTSIZE
728
	label.Font = TEXTFONT
729
	label.BorderSizePixel = BORDERSIZEPIXEL
730
	label.TextScaled = false
731
	label.Text = TEXT
732
	label.Name = NAME
733
	label.Parent = PARENT
734
	return label
735
end
736
737
function NoOutlines(PART)
738
	PART.TopSurface, PART.BottomSurface, PART.LeftSurface, PART.RightSurface, PART.FrontSurface, PART.BackSurface = 10, 10, 10, 10, 10, 10
739
end
740
741
function CreateWeldOrSnapOrMotor(TYPE, PARENT, PART0, PART1, C0, C1)
742
	local NEWWELD = IT(TYPE)
743
	NEWWELD.Part0 = PART0
744
	NEWWELD.Part1 = PART1
745
	NEWWELD.C0 = C0
746
	NEWWELD.C1 = C1
747
	NEWWELD.Parent = PARENT
748
	return NEWWELD
749
end
750
751
local S = IT("Sound")
752
function CreateSound(ID, PARENT, VOLUME, PITCH, DOESLOOP)
753
	local NEWSOUND = nil
754
	coroutine.resume(coroutine.create(function()
755
		NEWSOUND = S:Clone()
756
		NEWSOUND.Parent = PARENT
757
		NEWSOUND.Volume = VOLUME
758
		NEWSOUND.Pitch = PITCH
759
		NEWSOUND.SoundId = "http://www.roblox.com/asset/?id="..ID
760
		NEWSOUND:play()
761
		if DOESLOOP == true then
762
			NEWSOUND.Looped = true
763
		else
764
			repeat wait(1) until NEWSOUND.Playing == false
765
			NEWSOUND:remove()
766
		end
767
	end))
768
	return NEWSOUND
769
end
770
771
772
local EyeSizes={
773
	NumberSequenceKeypoint.new(0,2,0),
774
	NumberSequenceKeypoint.new(1,0,0)
775
}
776
local EyeTrans={
777
	NumberSequenceKeypoint.new(0,0.5,0),
778
	NumberSequenceKeypoint.new(1,1,0)
779
}
780
local PE=Instance.new("ParticleEmitter",nil)
781
PE.LightEmission=.8
782
PE.Color = ColorSequence.new(BRICKC("Institutional White").Color,BRICKC("Institutional White").Color)
783
PE.Size=NumberSequence.new(EyeSizes)
784
PE.Transparency=NumberSequence.new(EyeTrans)
785
PE.Lifetime=NumberRange.new(0.35,1)
786
PE.Rotation=NumberRange.new(0,360)
787
PE.Rate=100
788
PE.VelocitySpread = 10000
789
PE.Acceleration = Vector3.new(0,85,0)
790
PE.Drag = 5
791
PE.Speed = NumberRange.new(0.1,5)
792
PE.Texture="http://www.roblox.com/asset/?id=1460745664"
793
PE.ZOffset = 0.5
794
PE.Name = "PE"
795
PE.Enabled = false
796
797
function Fire(art)
798
	local PARTICLES = PE:Clone()
799
	PARTICLES.Parent = art
800
	PARTICLES.Enabled = true
801
	return PARTICLES
802
end
803
804
function CFrameFromTopBack(at, top, back)
805
	local right = top:Cross(back)
806
	return CF(at.x, at.y, at.z, right.x, top.x, back.x, right.y, top.y, back.y, right.z, top.z, back.z)
807
end
808
809
--WACKYEFFECT({EffectType = "", Size = VT(1,1,1), Size2 = VT(0,0,0), Transparency = 0, Transparency2 = 1, CFrame = CF(), MoveToPos = nil, RotationX = 0, RotationY = 0, RotationZ = 0, Material = "Neon", Color = C3(242, 243, 243), SoundID = nil, SoundPitch = nil, SoundVolume = nil})
810
function WACKYEFFECT(Table)
811
	local TYPE = (Table.EffectType or "Sphere")
812
	local SIZE = (Table.Size or VT(1,1,1))
813
	local ENDSIZE = (Table.Size2 or VT(0,0,0))
814
	local TRANSPARENCY = (Table.Transparency or 0)
815
	local ENDTRANSPARENCY = (Table.Transparency2 or 1)
816
	local CFRAME = (Table.CFrame or Torso.CFrame)
817
	local MOVEDIRECTION = (Table.MoveToPos or nil)
818
	local ROTATION1 = (Table.RotationX or 0)
819
	local ROTATION2 = (Table.RotationY or 0)
820
	local ROTATION3 = (Table.RotationZ or 0)
821
	local MATERIAL = (Table.Material or "Neon")
822
	local COLOR = (Table.Color or C3(242, 243, 243))
823
	local TIME = (Table.Time or 45)
824
	local SOUNDID = (Table.SoundID or nil)
825
	local SOUNDPITCH = (Table.SoundPitch or nil)
826
	local SOUNDVOLUME = (Table.SoundVolume or nil)
827
	coroutine.resume(coroutine.create(function()
828
		local PLAYSSOUND = false
829
		local SOUND = nil
830
		local EFFECT = CreatePart(3, Effects, MATERIAL, 0, TRANSPARENCY, BRICKC("Institutional White"), "Effect", VT(1,1,1), true)
831
		if SOUNDID ~= nil and SOUNDPITCH ~= nil and SOUNDVOLUME ~= nil then
832
			PLAYSSOUND = true
833
			SOUND = CreateSound(SOUNDID, EFFECT, SOUNDVOLUME, SOUNDPITCH, false)
834
		end
835
		EFFECT.Color = COLOR
836
		local MSH = nil
837
		if TYPE == "Sphere" then
838
			MSH = CreateMesh("SpecialMesh", EFFECT, "Sphere", "", "", SIZE, VT(0,0,0))
839
		elseif TYPE == "Block" or TYPE == "Box" then
840
			MSH = IT("BlockMesh",EFFECT)
841
			MSH.Scale = SIZE
842
		elseif TYPE == "Wave" then
843
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "20329976", "", SIZE, VT(0,0,-SIZE.X/8))
844
		elseif TYPE == "Ring" then
845
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "559831844", "", VT(SIZE.X,SIZE.X,0.1), VT(0,0,0))
846
		elseif TYPE == "Slash" then
847
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "662586858", "", VT(SIZE.X/10,0,SIZE.X/10), VT(0,0,0))
848
		elseif TYPE == "Round Slash" then
849
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "662585058", "", VT(SIZE.X/10,0,SIZE.X/10), VT(0,0,0))
850
		elseif TYPE == "Swirl" then
851
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "1051557", "", SIZE, VT(0,0,0))
852
		elseif TYPE == "Skull" then
853
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "4770583", "", SIZE, VT(0,0,0))
854
		elseif TYPE == "Crystal" then
855
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "9756362", "", SIZE, VT(0,0,0))
856
		end
857
		if MSH ~= nil then
858
			local MOVESPEED = nil
859
			if MOVEDIRECTION ~= nil then
860
				MOVESPEED = (CFRAME.p - MOVEDIRECTION).Magnitude/TIME
861
			end
862
			local GROWTH = SIZE - ENDSIZE
863
			local TRANS = TRANSPARENCY - ENDTRANSPARENCY
864
			if TYPE == "Block" then
865
				EFFECT.CFrame = CFRAME*ANGLES(RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)))
866
			else
867
				EFFECT.CFrame = CFRAME
868
			end
869
			for LOOP = 1, TIME+1 do
870
				Swait()
871
				MSH.Scale = MSH.Scale - GROWTH/TIME
872
				if TYPE == "Wave" then
873
					MSH.Offset = VT(0,0,-MSH.Scale.X/8)
874
				end
875
				EFFECT.Transparency = EFFECT.Transparency - TRANS/TIME
876
				if TYPE == "Block" then
877
					EFFECT.CFrame = CFRAME*ANGLES(RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)))
878
				else
879
					EFFECT.CFrame = EFFECT.CFrame*ANGLES(RAD(ROTATION1),RAD(ROTATION2),RAD(ROTATION3))
880
				end
881
				if MOVEDIRECTION ~= nil then
882
					local ORI = EFFECT.Orientation
883
					EFFECT.CFrame = CF(EFFECT.Position,MOVEDIRECTION)*CF(0,0,-MOVESPEED)
884
					EFFECT.Orientation = ORI
885
				end
886
			end
887
			if PLAYSSOUND == false then
888
				EFFECT:remove()
889
			else
890
				repeat wait(1) until SOUND.Playing == false
891
				EFFECT:remove()
892
			end
893
		else
894
			if PLAYSSOUND == false then
895
				EFFECT:remove()
896
			else
897
				repeat Swait() until SOUND.Playing == false
898
				EFFECT:remove()
899
			end
900
		end
901
	end))
902
end
903
904
function MakeForm(PART,TYPE)
905
	if TYPE == "Cyl" then
906
		local MSH = IT("CylinderMesh",PART)
907
	elseif TYPE == "Ball" then
908
		local MSH = IT("SpecialMesh",PART)
909
		MSH.MeshType = "Sphere"
910
	elseif TYPE == "Wedge" then
911
		local MSH = IT("SpecialMesh",PART)
912
		MSH.MeshType = "Wedge"
913
	end
914
end
915
916
Debris = game:GetService("Debris")
917
918
function CastProperRay(StartPos, EndPos, Distance, Ignore)
919
	local DIRECTION = CF(StartPos,EndPos).lookVector
920
	return Raycast(StartPos, DIRECTION, Distance, Ignore)
921
end
922
923
local HATWELD = nil
924
function Pose(WhichPose,Speed,Time,Magic,Gyro,Tors)
925
	PLAYMAINANIM = false
926
	if WhichPose == "Cast1" then
927
		for i=0, Time, 0.1 / Animation_Speed do
928
			Swait()
929
			if Magic == true then
930
				WACKYEFFECT({Time = 15, EffectType = "Crystal", Size = VT(1,1,1)*1.5, Size2 = VT(0,4,0), Transparency = 0, Transparency2 = 1, CFrame = RightArm.CFrame*CF(0,-1,0)*ANGLES(RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360))), MoveToPos = nil, RotationX = 0, RotationY = 0, RotationZ = 0, Material = "Glass", Color = BRICKC"Institutional White".Color, SoundID = nil, SoundPitch = nil, SoundVolume = nil})
931
			end
932
			if Gyro ~= nil and Gyro ~= false then
933
				Gyro.cframe = CF(RootPart.Position,Mouse.Hit.p)
934
			end
935
			RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, 0 + 0.05 * COS(SINE / 12)) * ANGLES(RAD(0), RAD(0), RAD(35)), Speed / Animation_Speed)
936
			Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(5 - 6.5 * SIN(SINE / 12)), RAD(0), RAD(-35)), Speed / Animation_Speed)
937
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.65 + 0.15 * COS(SINE / 12) - 0.05 * COS(SINE / 12), -0.5) * ANGLES(RAD(125), RAD(0), RAD(45)) * RIGHTSHOULDERC0, Speed / Animation_Speed)
938
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.25, 0.5 + 0.15 * COS(SINE / 12) - 0.05 * COS(SINE / 12), 0.5) * ANGLES(RAD(-45), RAD(0), RAD(45)) * LEFTSHOULDERC0, Speed / Animation_Speed)
939
			RightHip.C0 = Clerp(RightHip.C0, CF(1, -0.5, -0.5) * ANGLES(RAD(0), RAD(65), RAD(0)) * ANGLES(RAD(-3), RAD(0), RAD(-15)), Speed / Animation_Speed)
940
			LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1, -0.01) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), Speed / Animation_Speed)
941
		end
942
	elseif WhichPose == "Cast2" then
943
		for i=0, Time, 0.1 / Animation_Speed do
944
			Swait()
945
			if Magic == true then
946
				WACKYEFFECT({Time = 15, EffectType = "Crystal", Size = VT(1,1,1)*1.5, Size2 = VT(0,4,0), Transparency = 0, Transparency2 = 1, CFrame = RightArm.CFrame*CF(0,-1,0)*ANGLES(RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360))), MoveToPos = nil, RotationX = 0, RotationY = 0, RotationZ = 0, Material = "Glass", Color = BRICKC"Institutional White".Color, SoundID = nil, SoundPitch = nil, SoundVolume = nil})
947
				WACKYEFFECT({Time = 15, EffectType = "Crystal", Size = VT(1,1,1)*1.5, Size2 = VT(0,4,0), Transparency = 0, Transparency2 = 1, CFrame = LeftArm.CFrame*CF(0,-1,0)*ANGLES(RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360))), MoveToPos = nil, RotationX = 0, RotationY = 0, RotationZ = 0, Material = "Glass", Color = BRICKC"Institutional White".Color, SoundID = nil, SoundPitch = nil, SoundVolume = nil})
948
			end
949
			if Gyro ~= nil and Gyro ~= false then
950
				Gyro.cframe = CF(RootPart.Position,Mouse.Hit.p)
951
			end
952
			RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, 0 + 0.05 * COS(SINE / 12)) * ANGLES(RAD(0), RAD(0), RAD(0)), Speed / Animation_Speed)
953
			Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(-15 - 6.5 * SIN(SINE / 12)), RAD(0), RAD(0)), Speed / Animation_Speed)
954
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.65 + 0.15 * COS(SINE / 12) - 0.05 * COS(SINE / 12), -0.5) * ANGLES(RAD(120), RAD(0), RAD(15)) * RIGHTSHOULDERC0, Speed / Animation_Speed)
955
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.65 + 0.15 * COS(SINE / 12) - 0.05 * COS(SINE / 12), -0.5) * ANGLES(RAD(120), RAD(0), RAD(-15)) * LEFTSHOULDERC0, Speed / Animation_Speed)
956
			RightHip.C0 = Clerp(RightHip.C0, CF(1, -0.5, -0.5) * ANGLES(RAD(0), RAD(65), RAD(0)) * ANGLES(RAD(-3), RAD(0), RAD(-15)), Speed / Animation_Speed)
957
			LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1, -0.01) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), Speed / Animation_Speed)
958
		end
959
	elseif WhichPose == "RightArmUp" then
960
		for i=0, Time, 0.1 / Animation_Speed do
961
			Swait()
962
			if Magic == true then
963
				WACKYEFFECT({Time = 15, EffectType = "Crystal", Size = VT(1,1,1)*1.5, Size2 = VT(0,4,0), Transparency = 0, Transparency2 = 1, CFrame = RightArm.CFrame*CF(0,-1,0)*ANGLES(RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360))), MoveToPos = nil, RotationX = 0, RotationY = 0, RotationZ = 0, Material = "Glass", Color = BRICKC"Institutional White".Color, SoundID = nil, SoundPitch = nil, SoundVolume = nil})
964
			end
965
			if Gyro ~= nil and Gyro ~= false then
966
				Gyro.cframe = CF(RootPart.Position,Mouse.Hit.p)
967
			end
968
			RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, 0 + 0.05 * COS(SINE / 12)) * ANGLES(RAD(0), RAD(0), RAD(15)), Speed / Animation_Speed)
969
			Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(-5 - 6.5 * SIN(SINE / 12)), RAD(0), RAD(-15)), Speed / Animation_Speed)
970
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.65 + 0.15 * COS(SINE / 12) - 0.05 * COS(SINE / 12), -0.2) * ANGLES(RAD(125), RAD(0), RAD(25)) * RIGHTSHOULDERC0, Speed / Animation_Speed)
971
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.25, 0.5 + 0.15 * COS(SINE / 12) - 0.05 * COS(SINE / 12), 0.5) * ANGLES(RAD(-45), RAD(0), RAD(45)) * LEFTSHOULDERC0, Speed / Animation_Speed)
972
			RightHip.C0 = Clerp(RightHip.C0, CF(1, -0.5, -0.5) * ANGLES(RAD(0), RAD(65), RAD(0)) * ANGLES(RAD(-3), RAD(0), RAD(-15)), Speed / Animation_Speed)
973
			LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1, -0.01) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), Speed / Animation_Speed)
974
		end
975
	elseif WhichPose == "Taunt" then
976
		for i=0, Time, 0.1 / Animation_Speed do
977
			Swait()
978
			RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, 0 + 0.05 * COS(SINE / 12)) * ANGLES(RAD(0), RAD(0), RAD(0)), Speed / Animation_Speed)
979
			Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(-5 - 6.5 * SIN(SINE / 12)), RAD(0), RAD(0)), Speed / Animation_Speed)
980
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.25, 0.5 + 0.15 * COS(SINE / 12) - 0.05 * COS(SINE / 12), -0.5) * ANGLES(RAD(175), RAD(0), RAD(-35)) * RIGHTSHOULDERC0, Speed / Animation_Speed)
981
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.25, 0.5 + 0.15 * COS(SINE / 12) - 0.05 * COS(SINE / 12), 0.5) * ANGLES(RAD(-45), RAD(0), RAD(45)) * LEFTSHOULDERC0, Speed / Animation_Speed)
982
			RightHip.C0 = Clerp(RightHip.C0, CF(1, -0.5, -0.5) * ANGLES(RAD(0), RAD(65), RAD(0)) * ANGLES(RAD(-3), RAD(0), RAD(-15)), Speed / Animation_Speed)
983
			LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1, -0.01) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), Speed / Animation_Speed)
984
		end
985
		HATWELD.Part0 = RightArm
986
		HATWELD.C0 = CF(0,-1.1,-0.4) * ANGLES(RAD(0), RAD(0), RAD(180)) * ANGLES(RAD(-20), RAD(0), RAD(0))
987
		CreateSound(137473066,Torso,10,1,false)
988
		for i=0, Time*2, 0.1 / Animation_Speed do
989
			Swait()
990
			RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, 0 + 0.05 * COS(SINE / 12)) * ANGLES(RAD(0), RAD(0), RAD(0)), Speed / Animation_Speed)
991
			Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(35 - 6.5 * SIN(SINE / 12)), RAD(0), RAD(0)), Speed / Animation_Speed)
992
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.25, 0.5 + 0.15 * COS(SINE / 12) - 0.05 * COS(SINE / 12), 0.5) * ANGLES(RAD(145), RAD(0), RAD(45)) * RIGHTSHOULDERC0, Speed / Animation_Speed)
993
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.25, 0.5 + 0.15 * COS(SINE / 12) - 0.05 * COS(SINE / 12), 0.5) * ANGLES(RAD(5), RAD(25), RAD(-15)) * LEFTSHOULDERC0, Speed / Animation_Speed)
994
			RightHip.C0 = Clerp(RightHip.C0, CF(1, -0.5, -0.5) * ANGLES(RAD(0), RAD(65), RAD(0)) * ANGLES(RAD(-3), RAD(0), RAD(-15)), Speed / Animation_Speed)
995
			LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1, -0.01) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), Speed / Animation_Speed)
996
		end
997
		for i=0, Time, 0.1 / Animation_Speed do
998
			Swait()
999
			RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, 0 + 0.05 * COS(SINE / 12)) * ANGLES(RAD(0), RAD(0), RAD(0)), Speed / Animation_Speed)
1000
			Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(5), RAD(0), RAD(0)), Speed / Animation_Speed)
1001
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.35, 0.65, -0.5) * ANGLES(RAD(175), RAD(0), RAD(-35)) * RIGHTSHOULDERC0, Speed / Animation_Speed)
1002
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.25, 0.5 + 0.15 * COS(SINE / 12) - 0.05 * COS(SINE / 12), 0.5) * ANGLES(RAD(-45), RAD(0), RAD(45)) * LEFTSHOULDERC0, Speed / Animation_Speed)
1003
			RightHip.C0 = Clerp(RightHip.C0, CF(1, -0.5, -0.5) * ANGLES(RAD(0), RAD(65), RAD(0)) * ANGLES(RAD(-3), RAD(0), RAD(-15)), Speed / Animation_Speed)
1004
			LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1, -0.01) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), Speed / Animation_Speed)
1005
			HATWELD.C0 = Clerp(HATWELD.C0, CF(-0.5,-1.2,-0.3) * ANGLES(RAD(0), RAD(0), RAD(180)) * ANGLES(RAD(35), RAD(0), RAD(35)), Speed / Animation_Speed)
1006
		end
1007
		HATWELD.Part0 = Head
1008
		HATWELD.C0 = CF(0,0.35,0)
1009
	elseif WhichPose == "Prepare key" then
1010
		for i=0, Time, 0.1 / Animation_Speed do
1011
			Swait()
1012
			if Gyro ~= nil and Gyro ~= false then
1013
				Gyro.cframe = CF(RootPart.Position,Tors.Position)
1014
			end
1015
			RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, 0 + 0.05 * COS(SINE / 12)) * ANGLES(RAD(0), RAD(0), RAD(65)), Speed / Animation_Speed)
1016
			Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(5 - 6.5 * SIN(SINE / 12)), RAD(0), RAD(-65)), Speed / Animation_Speed)
1017
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5 + 0.15 * COS(SINE / 12) - 0.05 * COS(SINE / 12), -0.25) * ANGLES(RAD(90), RAD(0), RAD(65)) * RIGHTSHOULDERC0, Speed / Animation_Speed)
1018
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.25, 0.5 + 0.15 * COS(SINE / 12) - 0.05 * COS(SINE / 12), 0.5) * ANGLES(RAD(-45), RAD(0), RAD(45)) * LEFTSHOULDERC0, Speed / Animation_Speed)
1019
			RightHip.C0 = Clerp(RightHip.C0, CF(1, -0.5, -0.5) * ANGLES(RAD(0), RAD(65), RAD(0)) * ANGLES(RAD(-3), RAD(0), RAD(-15)), Speed / Animation_Speed)
1020
			LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1, -0.01) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), Speed / Animation_Speed)
1021
		end
1022
	elseif WhichPose == "Turn key" then
1023
		for i=0, Time, 0.1 / Animation_Speed do
1024
			Swait()
1025
			if Gyro ~= nil and Gyro ~= false then
1026
				Gyro.cframe = CF(RootPart.Position,Tors.Position)
1027
			end
1028
			RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, 0 + 0.05 * COS(SINE / 12)) * ANGLES(RAD(0), RAD(0), RAD(75)), Speed / Animation_Speed)
1029
			Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(5 - 6.5 * SIN(SINE / 12)), RAD(0), RAD(-75)), Speed / Animation_Speed)
1030
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5 + 0.15 * COS(SINE / 12) - 0.05 * COS(SINE / 12), -0.25) * ANGLES(RAD(90), RAD(0), RAD(75)) * ANGLES(RAD(0), RAD(-90), RAD(0)) * RIGHTSHOULDERC0, Speed / Animation_Speed)
1031
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.25, 0.5 + 0.15 * COS(SINE / 12) - 0.05 * COS(SINE / 12), 0.5) * ANGLES(RAD(-45), RAD(0), RAD(45)) * LEFTSHOULDERC0, Speed / Animation_Speed)
1032
			RightHip.C0 = Clerp(RightHip.C0, CF(1, -0.5, -0.5) * ANGLES(RAD(0), RAD(65), RAD(0)) * ANGLES(RAD(-3), RAD(0), RAD(-15)), Speed / Animation_Speed)
1033
			LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1, -0.01) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), Speed / Animation_Speed)
1034
		end
1035
	end
1036
	PLAYMAINANIM = true
1037
end
1038
1039
--Lightning({Color = C3(1,1,1), Start = Torso.Position, End = Mouse.Hit.p, SegmentL = 2, Thickness = 0.1, DoesFade = false, Ignore = Character, MaxDist = 400, Branches = false})
1040
function Lightning(Table)
1041
	local Color = Table.Color or C3(242, 243, 243)
1042
	local StartPos = Table.Start or Torso.Position
1043
	local EndPos = Table.End or Mouse.Hit.p
1044
	local SegmentLength = Table.SegmentL or 2
1045
	local Thickness = Table.Thickness or 0.1
1046
	local Dissapear = Table.DoesFade or false
1047
	local Parent = Table.Ignore or Character
1048
	local MaxDist = Table.MaxDist or 400
1049
	local Branches = Table.Branches or false
1050
	local HIT,HITPOS = CastProperRay(StartPos, EndPos, MaxDist, Parent)
1051
	local DISTANCE = math.ceil((StartPos - HITPOS).Magnitude/SegmentLength)
1052
	local LIGHTNINGMODEL = IT("Model",Effects)
1053
	LIGHTNINGMODEL.Name = "Lightning"
1054
	local LastBolt = nil
1055
	for E = 1, DISTANCE do
1056
		local ExtraSize = (DISTANCE-E)/15
1057
		local PART = CreatePart(3, LIGHTNINGMODEL, "Neon", 0, 0, BRICKC("Institutional White"), "LightningPart"..E, VT(Thickness+ExtraSize,SegmentLength,Thickness+ExtraSize))
1058
		PART.Color = Color
1059
		MakeForm(PART,"Cyl")
1060
		if LastBolt == nil then
1061
			PART.CFrame = CF(StartPos,HITPOS)*ANGLES(RAD(90),RAD(0),RAD(0))*CF(0,-PART.Size.Y/2,0)
1062
		else
1063
			PART.CFrame = CF(LastBolt.CFrame*CF(0,-LastBolt.Size.Y/2,0).p,CF(HITPOS)*ANGLES(RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)))*CF(0,0,SegmentLength/3+(DISTANCE-E)).p)*ANGLES(RAD(90),RAD(0),RAD(0))*CF(0,-PART.Size.Y/2,0)
1064
		end
1065
		LastBolt = PART
1066
		if Branches == true then
1067
			local CHOICE = MRANDOM(1,7+((DISTANCE-E)*2))
1068
			if CHOICE == 1 then
1069
				local LASTBRANCH = nil
1070
				for i = 1, MRANDOM(2,5) do
1071
					local ExtraSize2 = ((DISTANCE-E)/25)/i
1072
					local PART = CreatePart(3, LIGHTNINGMODEL, "Neon", 0, 0, BRICKC("Institutional White"), "Branch"..E.."-"..i, VT(Thickness+ExtraSize2,SegmentLength,Thickness+ExtraSize2))
1073
					PART.Color = Color
1074
					MakeForm(PART,"Cyl")
1075
					if LASTBRANCH == nil then
1076
						PART.CFrame = CF(LastBolt.CFrame*CF(0,-LastBolt.Size.Y/2,0).p,LastBolt.CFrame*CF(0,-LastBolt.Size.Y/2,0)*ANGLES(RAD(0),RAD(0),RAD(MRANDOM(0,360)))*CF(0,Thickness*7,0)*CF(0,0,-1).p)*ANGLES(RAD(90),RAD(0),RAD(0))*CF(0,-PART.Size.Y/2,0)
1077
					else
1078
						PART.CFrame = CF(LASTBRANCH.CFrame*CF(0,-LASTBRANCH.Size.Y/2,0).p,LASTBRANCH.CFrame*CF(0,-LASTBRANCH.Size.Y/2,0)*ANGLES(RAD(0),RAD(0),RAD(MRANDOM(0,360)))*CF(0,Thickness*3,0)*CF(0,0,-1).p)*ANGLES(RAD(90),RAD(0),RAD(0))*CF(0,-PART.Size.Y/2,0)
1079
					end
1080
					LASTBRANCH = PART
1081
				end
1082
			end
1083
		end
1084
	end
1085
	if Dissapear == true then
1086
		coroutine.resume(coroutine.create(function()
1087
			for i = 1, 10 do
1088
				Swait()
1089
				for _, c in pairs(LIGHTNINGMODEL:GetChildren()) do
1090
					if c.ClassName == "Part" then
1091
						c.Transparency = i/10
1092
					end
1093
				end
1094
			end
1095
			LIGHTNINGMODEL:remove()
1096
		end))
1097
	elseif Dissapear == false then
1098
		Debris:AddItem(LIGHTNINGMODEL,0.1)
1099
	end
1100
	return {End = LastBolt.CFrame*CF(0,0,-LastBolt.Size.Z/2).p,LastBolt = LastBolt,Model = LIGHTNINGMODEL}
1101
end
1102
1103
function PositiveAngle(NUMBER)
1104
	if NUMBER >= 0 then
1105
		NUMBER = 0
1106
	end
1107
	return NUMBER
1108
end
1109
1110
function NegativeAngle(NUMBER)
1111
	if NUMBER <= 0 then
1112
		NUMBER = 0
1113
	end
1114
	return NUMBER
1115
end
1116
1117
function Swait(NUMBER)
1118
	if NUMBER == 0 or NUMBER == nil then
1119
		ArtificialHB.Event:wait()
1120
	else
1121
		for i = 1, NUMBER do
1122
			ArtificialHB.Event:wait()
1123
		end
1124
	end
1125
end
1126
1127
function QuaternionFromCFrame(cf)
1128
	local mx, my, mz, m00, m01, m02, m10, m11, m12, m20, m21, m22 = cf:components()
1129
	local trace = m00 + m11 + m22
1130
	if trace > 0 then 
1131
		local s = math.sqrt(1 + trace)
1132
		local recip = 0.5 / s
1133
		return (m21 - m12) * recip, (m02 - m20) * recip, (m10 - m01) * recip, s * 0.5
1134
	else
1135
		local i = 0
1136
		if m11 > m00 then
1137
			i = 1
1138
		end
1139
		if m22 > (i == 0 and m00 or m11) then
1140
			i = 2
1141
		end
1142
		if i == 0 then
1143
			local s = math.sqrt(m00 - m11 - m22 + 1)
1144
			local recip = 0.5 / s
1145
			return 0.5 * s, (m10 + m01) * recip, (m20 + m02) * recip, (m21 - m12) * recip
1146
		elseif i == 1 then
1147
			local s = math.sqrt(m11 - m22 - m00 + 1)
1148
			local recip = 0.5 / s
1149
			return (m01 + m10) * recip, 0.5 * s, (m21 + m12) * recip, (m02 - m20) * recip
1150
		elseif i == 2 then
1151
			local s = math.sqrt(m22 - m00 - m11 + 1)
1152
			local recip = 0.5 / s return (m02 + m20) * recip, (m12 + m21) * recip, 0.5 * s, (m10 - m01) * recip
1153
		end
1154
	end
1155
end
1156
 
1157
function QuaternionToCFrame(px, py, pz, x, y, z, w)
1158
	local xs, ys, zs = x + x, y + y, z + z
1159
	local wx, wy, wz = w * xs, w * ys, w * zs
1160
	local xx = x * xs
1161
	local xy = x * ys
1162
	local xz = x * zs
1163
	local yy = y * ys
1164
	local yz = y * zs
1165
	local zz = z * zs
1166
	return CFrame.new(px, py, pz, 1 - (yy + zz), xy - wz, xz + wy, xy + wz, 1 - (xx + zz), yz - wx, xz - wy, yz + wx, 1 - (xx + yy))
1167
end
1168
 
1169
function QuaternionSlerp(a, b, t)
1170
	local cosTheta = a[1] * b[1] + a[2] * b[2] + a[3] * b[3] + a[4] * b[4]
1171
	local startInterp, finishInterp;
1172
	if cosTheta >= 0.0001 then
1173
		if (1 - cosTheta) > 0.0001 then
1174
			local theta = ACOS(cosTheta)
1175
			local invSinTheta = 1 / SIN(theta)
1176
			startInterp = SIN((1 - t) * theta) * invSinTheta
1177
			finishInterp = SIN(t * theta) * invSinTheta
1178
		else
1179
			startInterp = 1 - t
1180
			finishInterp = t
1181
		end
1182
	else
1183
		if (1 + cosTheta) > 0.0001 then
1184
			local theta = ACOS(-cosTheta)
1185
			local invSinTheta = 1 / SIN(theta)
1186
			startInterp = SIN((t - 1) * theta) * invSinTheta
1187
			finishInterp = SIN(t * theta) * invSinTheta
1188
		else
1189
			startInterp = t - 1
1190
			finishInterp = t
1191
		end
1192
	end
1193
	return a[1] * startInterp + b[1] * finishInterp, a[2] * startInterp + b[2] * finishInterp, a[3] * startInterp + b[3] * finishInterp, a[4] * startInterp + b[4] * finishInterp
1194
end
1195
1196
function Clerp(a, b, t)
1197
	local qa = {QuaternionFromCFrame(a)}
1198
	local qb = {QuaternionFromCFrame(b)}
1199
	local ax, ay, az = a.x, a.y, a.z
1200
	local bx, by, bz = b.x, b.y, b.z
1201
	local _t = 1 - t
1202
	return QuaternionToCFrame(_t * ax + t * bx, _t * ay + t * by, _t * az + t * bz, QuaternionSlerp(qa, qb, t))
1203
end
1204
1205
function CreateFrame(PARENT, TRANSPARENCY, BORDERSIZEPIXEL, POSITION, SIZE, COLOR, BORDERCOLOR, NAME)
1206
	local frame = IT("Frame")
1207
	frame.BackgroundTransparency = TRANSPARENCY
1208
	frame.BorderSizePixel = BORDERSIZEPIXEL
1209
	frame.Position = POSITION
1210
	frame.Size = SIZE
1211
	frame.BackgroundColor3 = COLOR
1212
	frame.BorderColor3 = BORDERCOLOR
1213
	frame.Name = NAME
1214
	frame.Parent = PARENT
1215
	return frame
1216
end
1217
1218
function CreateLabel(PARENT, TEXT, TEXTCOLOR, TEXTFONTSIZE, TEXTFONT, TRANSPARENCY, BORDERSIZEPIXEL, STROKETRANSPARENCY, NAME)
1219
	local label = IT("TextLabel")
1220
	label.BackgroundTransparency = 1
1221
	label.Size = UD2(1, 0, 1, 0)
1222
	label.Position = UD2(0, 0, 0, 0)
1223
	label.TextColor3 = TEXTCOLOR
1224
	label.TextStrokeTransparency = STROKETRANSPARENCY
1225
	label.TextTransparency = TRANSPARENCY
1226
	label.FontSize = TEXTFONTSIZE
1227
	label.Font = TEXTFONT
1228
	label.BorderSizePixel = BORDERSIZEPIXEL
1229
	label.TextScaled = false
1230
	label.Text = TEXT
1231
	label.Name = NAME
1232
	label.Parent = PARENT
1233
	return label
1234
end
1235
1236
function NoOutlines(PART)
1237
	PART.TopSurface, PART.BottomSurface, PART.LeftSurface, PART.RightSurface, PART.FrontSurface, PART.BackSurface = 10, 10, 10, 10, 10, 10
1238
end
1239
1240
1241
function CreateWeldOrSnapOrMotor(TYPE, PARENT, PART0, PART1, C0, C1)
1242
	local NEWWELD = IT(TYPE)
1243
	NEWWELD.Part0 = PART0
1244
	NEWWELD.Part1 = PART1
1245
	NEWWELD.C0 = C0
1246
	NEWWELD.C1 = C1
1247
	NEWWELD.Parent = PARENT
1248
	return NEWWELD
1249
end
1250
1251
function CreateSound(ID, PARENT, VOLUME, PITCH)
1252
	local NEWSOUND = nil
1253
	coroutine.resume(coroutine.create(function()
1254
		NEWSOUND = IT("Sound", PARENT)
1255
		NEWSOUND.Volume = VOLUME
1256
		NEWSOUND.Pitch = PITCH
1257
		NEWSOUND.SoundId = "http://www.roblox.com/asset/?id="..ID
1258
		Swait()
1259
		NEWSOUND:play()
1260
		game:GetService("Debris"):AddItem(NEWSOUND, 10)
1261
	end))
1262
	return NEWSOUND
1263
end
1264
1265
function CFrameFromTopBack(at, top, back)
1266
	local right = top:Cross(back)
1267
	return CF(at.x, at.y, at.z, right.x, top.x, back.x, right.y, top.y, back.y, right.z, top.z, back.z)
1268
end
1269
1270
function CreateWave(SIZE,WAIT,CFRAME,DOESROT,ROT,COLOR,GROW)
1271
	local wave = CreatePart(3, Effects, "Neon", 0, 0.5, BRICKC("Institutional White"), "Effect", VT(1,1,1), true)
1272
	local mesh = IT("SpecialMesh",wave)
1273
	mesh.MeshType = "FileMesh"
1274
	mesh.MeshId = "http://www.roblox.com/asset/?id=20329976"
1275
	mesh.Scale = SIZE
1276
	mesh.Offset = VT(0,0,-SIZE.X/8)
1277
	wave.CFrame = CFRAME
1278
	coroutine.resume(coroutine.create(function(PART)
1279
		for i = 1, WAIT do
1280
			Swait()
1281
			mesh.Scale = mesh.Scale + GROW
1282
			mesh.Offset = VT(0,0,-(mesh.Scale.X/8))
1283
			if DOESROT == true then
1284
				wave.CFrame = wave.CFrame * CFrame.fromEulerAnglesXYZ(0,ROT,0)
1285
			end
1286
			wave.Transparency = wave.Transparency + (0.5/WAIT)
1287
			if wave.Transparency > 0.99 then
1288
				wave:remove()
1289
			end
1290
		end
1291
	end))
1292
end
1293
1294
function CreateWave2(SIZE,WAIT,CFRAME,DOESROT,ROT,COLOR,GROW)
1295
	local wave = CreatePart(3, Effects, "Neon", 0, 0.5, BRICKC("Institutional White"), "Effect", VT(1,1,1), true)
1296
	local mesh = IT("SpecialMesh",wave)
1297
	mesh.MeshType = "FileMesh"
1298
	mesh.MeshId = "http://www.roblox.com/asset/?id=20329976"
1299
	mesh.Scale = SIZE
1300
	--mesh.Offset = VT(0,0,-SIZE.X/8)
1301
	wave.CFrame = CFRAME
1302
	coroutine.resume(coroutine.create(function(PART)
1303
		for i = 1, WAIT do
1304
			Swait()
1305
			mesh.Scale = mesh.Scale + GROW
1306
			--mesh.Offset = VT(0,0,-(mesh.Scale.X/8))
1307
			if DOESROT == true then
1308
				wave.CFrame = wave.CFrame * CFrame.fromEulerAnglesXYZ(0,ROT,0)
1309
			end
1310
			wave.Transparency = wave.Transparency + (0.5/WAIT)
1311
			if wave.Transparency > 0.99 then
1312
				wave:remove()
1313
			end
1314
		end
1315
	end))
1316
end
1317
1318
function CreateSwirl(SIZE,WAIT,CFRAME,DOESROT,ROT,COLOR,GROW)
1319
	local wave = CreatePart(3, Effects, "Neon", 0, 0.5, BRICKC("Institutional White"), "Effect", VT(1,1,1), true)
1320
	local mesh = IT("SpecialMesh",wave)
1321
	mesh.MeshType = "FileMesh"
1322
	mesh.MeshId = "http://www.roblox.com/asset/?id=1051557"
1323
	mesh.Scale = SIZE
1324
	wave.CFrame = CFRAME
1325
	coroutine.resume(coroutine.create(function(PART)
1326
		for i = 1, WAIT do
1327
			Swait()
1328
			mesh.Scale = mesh.Scale + GROW
1329
			mesh.Offset = VT(0,0,-(mesh.Scale.X/8))
1330
			if DOESROT == true then
1331
				wave.CFrame = wave.CFrame * CFrame.fromEulerAnglesXYZ(0,ROT,0)
1332
			end
1333
			wave.Transparency = wave.Transparency + (0.5/WAIT)
1334
			if wave.Transparency > 0.99 then
1335
				wave:remove()
1336
			end
1337
		end
1338
	end))
1339
end
1340
1341
1342
function Slice(SIZE,WAIT,CFRAME,COLOR,GROW)
1343
	local wave = CreatePart(3, Effects, "Neon", 0, 0.5, BRICKC("Institutional White"), "Effect", VT(1,1,1), true)
1344
	local mesh = CreateMesh("SpecialMesh", wave, "FileMesh", "448386996", "", VT(0,SIZE/10,SIZE/10), VT(0,0,0))
1345
	wave.CFrame = CFRAME
1346
	coroutine.resume(coroutine.create(function(PART)
1347
		for i = 1, WAIT do
1348
			Swait()
1349
			mesh.Scale = mesh.Scale * GROW
1350
			wave.Transparency = wave.Transparency + (0.5/WAIT)
1351
			if wave.Transparency > 0.99 then
1352
				wave:remove()
1353
			end
1354
		end
1355
	end))
1356
end
1357
1358
function MagicSphere(SIZE,WAIT,CFRAME,COLOR,GROW)
1359
	local wave = CreatePart(3, Effects, "Neon", 0, 0, BRICKC("Institutional White"), "Effect", VT(1,1,1), true)
1360
	local mesh = IT("SpecialMesh",wave)
1361
	mesh.MeshType = "Sphere"
1362
	mesh.Scale = SIZE
1363
	mesh.Offset = VT(0,0,0)
1364
	wave.CFrame = CFRAME
1365
	coroutine.resume(coroutine.create(function(PART)
1366
		for i = 1, WAIT do
1367
			Swait()
1368
			mesh.Scale = mesh.Scale + GROW
1369
			wave.Transparency = wave.Transparency + (1/WAIT)
1370
			if wave.Transparency > 0.99 then
1371
				wave:remove()
1372
			end
1373
		end
1374
	end))
1375
end
1376
1377
function MakeForm(PART,TYPE)
1378
	if TYPE == "Cyl" then
1379
		local MSH = IT("CylinderMesh",PART)
1380
	elseif TYPE == "Ball" then
1381
		local MSH = IT("SpecialMesh",PART)
1382
		MSH.MeshType = "Sphere"
1383
	elseif TYPE == "Wedge" then
1384
		local MSH = IT("SpecialMesh",PART)
1385
		MSH.MeshType = "Wedge"
1386
	end
1387
end
1388
1389
function CreateDebreeRing(FLOOR,POSITION,SIZE,BLOCKSIZE,SWAIT)
1390
	if FLOOR ~= nil then
1391
		coroutine.resume(coroutine.create(function()
1392
			local PART = CreatePart(3, Effects, "Neon", 0, 1, "Institutional White", "DebreeCenter", VT(0,0,0))
1393
			PART.CFrame = CF(POSITION)
1394
			for i = 1, 45 do
1395
				local RingPiece = CreatePart(3, Effects, "Plastic", 0, 0, "Pearl", "DebreePart", BLOCKSIZE)
1396
				RingPiece.Material = FLOOR.Material
1397
				RingPiece.Color = FLOOR.Color
1398
				RingPiece.CFrame = PART.CFrame * ANGLES(RAD(0), RAD(i*8), RAD(0)) * CF(SIZE*4, 0, 0) * ANGLES(RAD(MRANDOM(-360,360)),RAD(MRANDOM(-360,360)),RAD(MRANDOM(-360,360)))
1399
				Debris:AddItem(RingPiece,SWAIT/100)
1400
			end
1401
			PART:remove()
1402
		end))
1403
	end
1404
end
1405
1406
function CheckTableForString(Table, String)
1407
	for i, v in pairs(Table) do
1408
		if string.find(string.lower(String), string.lower(v)) then
1409
			return true
1410
		end
1411
	end
1412
	return false
1413
end
1414
1415
function CheckIntangible(Hit)
1416
	local ProjectileNames = {"Water", "Arrow", "Projectile", "Effect", "Rail", "Lightning", "Bullet"}
1417
	if Hit and Hit.Parent then
1418
		if ((not Hit.CanCollide or CheckTableForString(ProjectileNames, Hit.Name)) and not Hit.Parent:FindFirstChild("Humanoid")) then
1419
			return true
1420
		end
1421
	end
1422
	return false
1423
end
1424
1425
Debris = game:GetService("Debris")
1426
1427
function CastZapRay(StartPos, Vec, Length, Ignore, DelayIfHit)
1428
	local Direction = CFrame.new(StartPos, Vec).lookVector
1429
	local Ignore = ((type(Ignore) == "table" and Ignore) or {Ignore})
1430
	local RayHit, RayPos, RayNormal = game:GetService("Workspace"):FindPartOnRayWithIgnoreList(Ray.new(StartPos, Direction * Length), Ignore)
1431
	if RayHit and CheckIntangible(RayHit) then
1432
		if DelayIfHit then
1433
			wait()
1434
		end
1435
		RayHit, RayPos, RayNormal = CastZapRay((RayPos + (Vec * 0.01)), Vec, (Length - ((StartPos - RayPos).magnitude)), Ignore, DelayIfHit)
1436
	end
1437
	return RayHit, RayPos, RayNormal
1438
end
1439
1440
function turnto(position)
1441
	RootPart.CFrame=CFrame.new(RootPart.CFrame.p,VT(position.X,RootPart.Position.Y,position.Z)) * CFrame.new(0, 0, 0)
1442
end
1443
1444
function Raycast(POSITION, DIRECTION, RANGE, IGNOREDECENDANTS)
1445
	return workspace:FindPartOnRay(Ray.new(POSITION, DIRECTION.unit * RANGE), IGNOREDECENDANTS)
1446
end
1447
1448
function PositiveAngle(NUMBER)
1449
	if NUMBER >= 0 then
1450
		NUMBER = 0
1451
	end
1452
	return NUMBER
1453
end
1454
1455
function NegativeAngle(NUMBER)
1456
	if NUMBER <= 0 then
1457
		NUMBER = 0
1458
	end
1459
	return NUMBER
1460
end
1461
1462
function Swait(NUMBER)
1463
	if NUMBER == 0 or NUMBER == nil then
1464
		ArtificialHB.Event:wait()
1465
	else
1466
		for i = 1, NUMBER do
1467
			ArtificialHB.Event:wait()
1468
		end
1469
	end
1470
end
1471
1472
function CreateMesh(MESH, PARENT, MESHTYPE, MESHID, TEXTUREID, SCALE, OFFSET)
1473
	local NEWMESH = IT(MESH)
1474
	if MESH == "SpecialMesh" then
1475
		NEWMESH.MeshType = MESHTYPE
1476
		if MESHID ~= "nil" and MESHID ~= "" then
1477
			NEWMESH.MeshId = "http://www.roblox.com/asset/?id="..MESHID
1478
		end
1479
		if TEXTUREID ~= "nil" and TEXTUREID ~= "" then
1480
			NEWMESH.TextureId = "http://www.roblox.com/asset/?id="..TEXTUREID
1481
		end
1482
	end
1483
	NEWMESH.Offset = OFFSET or VT(0, 0, 0)
1484
	NEWMESH.Scale = SCALE
1485
	NEWMESH.Parent = PARENT
1486
	return NEWMESH
1487
end
1488
1489
function CreatePart(FORMFACTOR, PARENT, MATERIAL, REFLECTANCE, TRANSPARENCY, BRICKCOLOR, NAME, SIZE, ANCHOR)
1490
	local NEWPART = IT("Part")
1491
	NEWPART.formFactor = FORMFACTOR
1492
	NEWPART.Reflectance = REFLECTANCE
1493
	NEWPART.Transparency = TRANSPARENCY
1494
	NEWPART.CanCollide = false
1495
	NEWPART.Locked = true
1496
	NEWPART.Anchored = true
1497
	if ANCHOR == false then
1498
		NEWPART.Anchored = false
1499
	end
1500
	NEWPART.BrickColor = BRICKC(tostring(BRICKCOLOR))
1501
	NEWPART.Name = NAME
1502
	NEWPART.Size = SIZE
1503
	NEWPART.Position = Torso.Position
1504
	NEWPART.Material = MATERIAL
1505
	NEWPART:BreakJoints()
1506
	NEWPART.Parent = PARENT
1507
	return NEWPART
1508
end
1509
1510
	local function weldBetween(a, b)
1511
	    local weldd = IT("Weld")
1512
	    weldd.Part0 = a
1513
	    weldd.Part1 = b
1514
	    weldd.C0 = CF()
1515
	    weldd.C1 = b.CFrame:inverse() * a.CFrame
1516
	    weldd.Parent = a
1517
	    return weldd
1518
	end
1519
1520
1521
function QuaternionFromCFrame(cf)
1522
	local mx, my, mz, m00, m01, m02, m10, m11, m12, m20, m21, m22 = cf:components()
1523
	local trace = m00 + m11 + m22
1524
	if trace > 0 then 
1525
		local s = math.sqrt(1 + trace)
1526
		local recip = 0.5 / s
1527
		return (m21 - m12) * recip, (m02 - m20) * recip, (m10 - m01) * recip, s * 0.5
1528
	else
1529
		local i = 0
1530
		if m11 > m00 then
1531
			i = 1
1532
		end
1533
		if m22 > (i == 0 and m00 or m11) then
1534
			i = 2
1535
		end
1536
		if i == 0 then
1537
			local s = math.sqrt(m00 - m11 - m22 + 1)
1538
			local recip = 0.5 / s
1539
			return 0.5 * s, (m10 + m01) * recip, (m20 + m02) * recip, (m21 - m12) * recip
1540
		elseif i == 1 then
1541
			local s = math.sqrt(m11 - m22 - m00 + 1)
1542
			local recip = 0.5 / s
1543
			return (m01 + m10) * recip, 0.5 * s, (m21 + m12) * recip, (m02 - m20) * recip
1544
		elseif i == 2 then
1545
			local s = math.sqrt(m22 - m00 - m11 + 1)
1546
			local recip = 0.5 / s return (m02 + m20) * recip, (m12 + m21) * recip, 0.5 * s, (m10 - m01) * recip
1547
		end
1548
	end
1549
end
1550
 
1551
function QuaternionToCFrame(px, py, pz, x, y, z, w)
1552
	local xs, ys, zs = x + x, y + y, z + z
1553
	local wx, wy, wz = w * xs, w * ys, w * zs
1554
	local xx = x * xs
1555
	local xy = x * ys
1556
	local xz = x * zs
1557
	local yy = y * ys
1558
	local yz = y * zs
1559
	local zz = z * zs
1560
	return CFrame.new(px, py, pz, 1 - (yy + zz), xy - wz, xz + wy, xy + wz, 1 - (xx + zz), yz - wx, xz - wy, yz + wx, 1 - (xx + yy))
1561
end
1562
 
1563
function QuaternionSlerp(a, b, t)
1564
	local cosTheta = a[1] * b[1] + a[2] * b[2] + a[3] * b[3] + a[4] * b[4]
1565
	local startInterp, finishInterp;
1566
	if cosTheta >= 0.0001 then
1567
		if (1 - cosTheta) > 0.0001 then
1568
			local theta = ACOS(cosTheta)
1569
			local invSinTheta = 1 / SIN(theta)
1570
			startInterp = SIN((1 - t) * theta) * invSinTheta
1571
			finishInterp = SIN(t * theta) * invSinTheta
1572
		else
1573
			startInterp = 1 - t
1574
			finishInterp = t
1575
		end
1576
	else
1577
		if (1 + cosTheta) > 0.0001 then
1578
			local theta = ACOS(-cosTheta)
1579
			local invSinTheta = 1 / SIN(theta)
1580
			startInterp = SIN((t - 1) * theta) * invSinTheta
1581
			finishInterp = SIN(t * theta) * invSinTheta
1582
		else
1583
			startInterp = t - 1
1584
			finishInterp = t
1585
		end
1586
	end
1587
	return a[1] * startInterp + b[1] * finishInterp, a[2] * startInterp + b[2] * finishInterp, a[3] * startInterp + b[3] * finishInterp, a[4] * startInterp + b[4] * finishInterp
1588
end
1589
1590
function Clerp(a, b, t)
1591
	local qa = {QuaternionFromCFrame(a)}
1592
	local qb = {QuaternionFromCFrame(b)}
1593
	local ax, ay, az = a.x, a.y, a.z
1594
	local bx, by, bz = b.x, b.y, b.z
1595
	local _t = 1 - t
1596
	return QuaternionToCFrame(_t * ax + t * bx, _t * ay + t * by, _t * az + t * bz, QuaternionSlerp(qa, qb, t))
1597
end
1598
1599
function CreateFrame(PARENT, TRANSPARENCY, BORDERSIZEPIXEL, POSITION, SIZE, COLOR, BORDERCOLOR, NAME)
1600
	local frame = IT("Frame")
1601
	frame.BackgroundTransparency = TRANSPARENCY
1602
	frame.BorderSizePixel = BORDERSIZEPIXEL
1603
	frame.Position = POSITION
1604
	frame.Size = SIZE
1605
	frame.BackgroundColor3 = COLOR
1606
	frame.BorderColor3 = BORDERCOLOR
1607
	frame.Name = NAME
1608
	frame.Parent = PARENT
1609
	return frame
1610
end
1611
1612
function CreateLabel(PARENT, TEXT, TEXTCOLOR, TEXTFONTSIZE, TEXTFONT, TRANSPARENCY, BORDERSIZEPIXEL, STROKETRANSPARENCY, NAME)
1613
	local label = IT("TextLabel")
1614
	label.BackgroundTransparency = 1
1615
	label.Size = UD2(1, 0, 1, 0)
1616
	label.Position = UD2(0, 0, 0, 0)
1617
	label.TextColor3 = TEXTCOLOR
1618
	label.TextStrokeTransparency = STROKETRANSPARENCY
1619
	label.TextTransparency = TRANSPARENCY
1620
	label.FontSize = TEXTFONTSIZE
1621
	label.Font = TEXTFONT
1622
	label.BorderSizePixel = BORDERSIZEPIXEL
1623
	label.TextScaled = false
1624
	label.Text = TEXT
1625
	label.Name = NAME
1626
	label.Parent = PARENT
1627
	return label
1628
end
1629
1630
function NoOutlines(PART)
1631
	PART.TopSurface, PART.BottomSurface, PART.LeftSurface, PART.RightSurface, PART.FrontSurface, PART.BackSurface = 10, 10, 10, 10, 10, 10
1632
end
1633
1634
function CreateWeldOrSnapOrMotor(TYPE, PARENT, PART0, PART1, C0, C1)
1635
	local NEWWELD = IT(TYPE)
1636
	NEWWELD.Part0 = PART0
1637
	NEWWELD.Part1 = PART1
1638
	NEWWELD.C0 = C0
1639
	NEWWELD.C1 = C1
1640
	NEWWELD.Parent = PARENT
1641
	return NEWWELD
1642
end
1643
1644
local S = IT("Sound")
1645
function CreateSound(ID, PARENT, VOLUME, PITCH, DOESLOOP)
1646
	local NEWSOUND = nil
1647
	coroutine.resume(coroutine.create(function()
1648
		NEWSOUND = S:Clone()
1649
		NEWSOUND.Parent = PARENT
1650
		NEWSOUND.Volume = VOLUME
1651
		NEWSOUND.Pitch = PITCH
1652
		NEWSOUND.SoundId = "http://www.roblox.com/asset/?id="..ID
1653
		NEWSOUND:play()
1654
		if DOESLOOP == true then
1655
			NEWSOUND.Looped = true
1656
		else
1657
			repeat wait(1) until NEWSOUND.Playing == false
1658
			NEWSOUND:remove()
1659
		end
1660
	end))
1661
	return NEWSOUND
1662
end
1663
1664
function CFrameFromTopBack(at, top, back)
1665
	local right = top:Cross(back)
1666
	return CF(at.x, at.y, at.z, right.x, top.x, back.x, right.y, top.y, back.y, right.z, top.z, back.z)
1667
end
1668
1669
--WACKYEFFECT({EffectType = "", Size = VT(1,1,1), Size2 = VT(0,0,0), Transparency = 0, Transparency2 = 1, CFrame = CF(), MoveToPos = nil, RotationX = 0, RotationY = 0, RotationZ = 0, Material = "Neon", Color = C3(242, 243, 243), SoundID = nil, SoundPitch = nil, SoundVolume = nil})
1670
function WACKYEFFECT(Table)
1671
	local TYPE = (Table.EffectType or "Sphere")
1672
	local SIZE = (Table.Size or VT(1,1,1))
1673
	local ENDSIZE = (Table.Size2 or VT(0,0,0))
1674
	local TRANSPARENCY = (Table.Transparency or 0)
1675
	local ENDTRANSPARENCY = (Table.Transparency2 or 1)
1676
	local CFRAME = (Table.CFrame or Torso.CFrame)
1677
	local MOVEDIRECTION = (Table.MoveToPos or nil)
1678
	local ROTATION1 = (Table.RotationX or 0)
1679
	local ROTATION2 = (Table.RotationY or 0)
1680
	local ROTATION3 = (Table.RotationZ or 0)
1681
	local MATERIAL = (Table.Material or "Neon")
1682
	local COLOR = (Table.Color or C3(242, 243, 243))
1683
	local TIME = (Table.Time or 45)
1684
	local SOUNDID = (Table.SoundID or nil)
1685
	local SOUNDPITCH = (Table.SoundPitch or nil)
1686
	local SOUNDVOLUME = (Table.SoundVolume or nil)
1687
	coroutine.resume(coroutine.create(function()
1688
		local PLAYSSOUND = false
1689
		local SOUND = nil
1690
		local EFFECT = CreatePart(3, Effects, MATERIAL, 0, TRANSPARENCY, BRICKC("Institutional White"), "Effect", VT(1,1,1), true)
1691
		if SOUNDID ~= nil and SOUNDPITCH ~= nil and SOUNDVOLUME ~= nil then
1692
			PLAYSSOUND = true
1693
			SOUND = CreateSound(SOUNDID, EFFECT, SOUNDVOLUME, SOUNDPITCH, false)
1694
		end
1695
		EFFECT.Color = COLOR
1696
		local MSH = nil
1697
		if TYPE == "Sphere" then
1698
			MSH = CreateMesh("SpecialMesh", EFFECT, "Sphere", "", "", SIZE, VT(0,0,0))
1699
		elseif TYPE == "Block" then
1700
			MSH = IT("BlockMesh",EFFECT)
1701
			MSH.Scale = VT(SIZE.X,SIZE.X,SIZE.X)
1702
		elseif TYPE == "Wave" then
1703
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "20329976", "", SIZE, VT(0,0,-SIZE.X/8))
1704
		elseif TYPE == "Ring" then
1705
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "559831844", "", VT(SIZE.X,SIZE.X,0.1), VT(0,0,0))
1706
		elseif TYPE == "Slash" then
1707
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "662586858", "", VT(SIZE.X/10,0,SIZE.X/10), VT(0,0,0))
1708
		elseif TYPE == "Round Slash" then
1709
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "662585058", "", VT(SIZE.X/10,0,SIZE.X/10), VT(0,0,0))
1710
		elseif TYPE == "Swirl" then
1711
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "1051557", "", SIZE, VT(0,0,0))
1712
		elseif TYPE == "Skull" then
1713
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "4770583", "", SIZE, VT(0,0,0))
1714
		elseif TYPE == "Crystal" then
1715
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "9756362", "", SIZE, VT(0,0,0))
1716
		end
1717
		if MSH ~= nil then
1718
			local MOVESPEED = nil
1719
			if MOVEDIRECTION ~= nil then
1720
				MOVESPEED = (CFRAME.p - MOVEDIRECTION).Magnitude/TIME
1721
			end
1722
			local GROWTH = SIZE - ENDSIZE
1723
			local TRANS = TRANSPARENCY - ENDTRANSPARENCY
1724
			if TYPE == "Block" then
1725
				EFFECT.CFrame = CFRAME*ANGLES(RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)))
1726
			else
1727
				EFFECT.CFrame = CFRAME
1728
			end
1729
			for LOOP = 1, TIME+1 do
1730
				Swait()
1731
				MSH.Scale = MSH.Scale - GROWTH/TIME
1732
				if TYPE == "Wave" then
1733
					MSH.Offset = VT(0,0,-MSH.Scale.X/8)
1734
				end
1735
				EFFECT.Transparency = EFFECT.Transparency - TRANS/TIME
1736
				if TYPE == "Block" then
1737
					EFFECT.CFrame = CFRAME*ANGLES(RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)))
1738
				else
1739
					EFFECT.CFrame = EFFECT.CFrame*ANGLES(RAD(ROTATION1),RAD(ROTATION2),RAD(ROTATION3))
1740
				end
1741
				if MOVEDIRECTION ~= nil then
1742
					local ORI = EFFECT.Orientation
1743
					EFFECT.CFrame = CF(EFFECT.Position,MOVEDIRECTION)*CF(0,0,-MOVESPEED)
1744
					EFFECT.Orientation = ORI
1745
				end
1746
			end
1747
			if PLAYSSOUND == false then
1748
				EFFECT:remove()
1749
			else
1750
				SOUND.Stopped:Connect(function()
1751
					EFFECT:remove()
1752
				end)
1753
			end
1754
		else
1755
			if PLAYSSOUND == false then
1756
				EFFECT:remove()
1757
			else
1758
				repeat Swait() until SOUND.Playing == false
1759
				EFFECT:remove()
1760
			end
1761
		end
1762
	end))
1763
end
1764
1765
function MakeForm(PART,TYPE)
1766
	if TYPE == "Cyl" then
1767
		local MSH = IT("CylinderMesh",PART)
1768
	elseif TYPE == "Ball" then
1769
		local MSH = IT("SpecialMesh",PART)
1770
		MSH.MeshType = "Sphere"
1771
	elseif TYPE == "Wedge" then
1772
		local MSH = IT("SpecialMesh",PART)
1773
		MSH.MeshType = "Wedge"
1774
	end
1775
end
1776
1777
Debris = game:GetService("Debris")
1778
1779
function CastProperRay(StartPos, EndPos, Distance, Ignore)
1780
	local DIRECTION = CF(StartPos,EndPos).lookVector
1781
	return Raycast(StartPos, DIRECTION, Distance, Ignore)
1782
end
1783
1784
function turnto(position)
1785
	RootPart.CFrame=CFrame.new(RootPart.CFrame.p,VT(position.X,RootPart.Position.Y,position.Z)) * CFrame.new(0, 0, 0)
1786
end
1787
1788
function SpawnTrail(FROM,TO,BIG)
1789
	local TRAIL = CreatePart(3, Effects, "Neon", 0, 0.5, "Institutional White", "Trail", VT(0,0,0))
1790
	MakeForm(TRAIL,"Cyl")
1791
	local DIST = (FROM - TO).Magnitude
1792
	if BIG == true then
1793
		TRAIL.Size = VT(0.5,DIST,0.5)
1794
	else
1795
		TRAIL.Size = VT(0.25,DIST,0.25)
1796
	end
1797
	TRAIL.CFrame = CF(FROM, TO) * CF(0, 0, -DIST/2) * ANGLES(RAD(90),RAD(0),RAD(0))
1798
	coroutine.resume(coroutine.create(function()
1799
		for i = 1, 5 do
1800
			Swait()
1801
			TRAIL.Transparency = TRAIL.Transparency + 0.1
1802
		end
1803
		TRAIL:remove()
1804
	end))
1805
end
1806
1807
local asd = Instance.new("ParticleEmitter")
1808
asd.Color = ColorSequence.new(Color3.new(242, 243, 243
1809
), Color3.new(242, 243, 243
1810
))
1811
asd.LightEmission = .1
1812
asd.Texture = "http://www.roblox.com/asset/?ID=12419554"
1813
aaa = NumberSequence.new({NumberSequenceKeypoint.new(0, 0.6),NumberSequenceKeypoint.new(1, 2)})
1814
bbb = NumberSequence.new({NumberSequenceKeypoint.new(0, 1),NumberSequenceKeypoint.new(0.0636, 0), NumberSequenceKeypoint.new(1, 1)})
1815
asd.Transparency = bbb
1816
asd.Size = aaa
1817
asd.ZOffset = .9
1818
asd.Acceleration = Vector3.new(0, -15, 0)
1819
asd.LockedToPart = false
1820
asd.EmissionDirection = "Back"
1821
asd.Lifetime = NumberRange.new(1, 2)
1822
asd.Rotation = NumberRange.new(-100, 100)
1823
asd.RotSpeed = NumberRange.new(-100, 100)
1824
asd.Speed = NumberRange.new(10)
1825
asd.Enabled = false
1826
asd.VelocitySpread = 999
1827
1828
function getbloody(victim,amount)
1829-
	local PART = CreatePart(3, Effects, "Metal", 0, 1, "Institutional White", "Blood", victim.Size)
1829+
	local PART = CreatePart(3, Effects, "Plastic", 0, 1, "Institutional White", "Blood", victim.Size)
1830
	PART.CFrame = victim.CFrame
1831
	local HITPLAYERSOUNDS = {"356551938","264486467"}
1832
	Debris:AddItem(PART,5)
1833
	CreateSound(HITPLAYERSOUNDS[MRANDOM(1, #HITPLAYERSOUNDS)], PART, 1, (math.random(8,12)/10))
1834
	CreateSound(HITPLAYERSOUNDS[MRANDOM(1, #HITPLAYERSOUNDS)], PART, 1, (math.random(8,12)/10))
1835
	CreateSound(HITPLAYERSOUNDS[MRANDOM(1, #HITPLAYERSOUNDS)], PART, 1, (math.random(8,12)/10))
1836
	local prtcl = asd:Clone()
1837
	prtcl.Parent = PART
1838
	prtcl:Emit(amount*10)
1839
end
1840
1841
local Particle = IT("ParticleEmitter",nil)
1842
Particle.Enabled = false
1843
Particle.Transparency = NumberSequence.new({NumberSequenceKeypoint.new(0,1),NumberSequenceKeypoint.new(0.3,0.95),NumberSequenceKeypoint.new(1,1)})
1844
Particle.LightEmission = 0.5
1845
Particle.Rate = 150
1846
Particle.ZOffset = 1
1847
Particle.Rotation = NumberRange.new(-180, 180)
1848
Particle.RotSpeed = NumberRange.new(-180, 180)
1849
Particle.Texture = "http://www.roblox.com/asset/?id=304437537"
1850
Particle.Color = ColorSequence.new(C3(1,0,0),C3(0.4,0,0))
1851
1852
--ParticleEmitter({Speed = 5, Drag = 0, Size1 = 1, Size2 = 5, Lifetime1 = 1, Lifetime2 = 1.5, Parent = Torso, Emit = 100, Offset = 360, Enabled = false})
1853
function ParticleEmitter(Table)
1854
	local PRTCL = Particle:Clone()
1855
	local Speed = Table.Speed or 5
1856
	local Drag = Table.Drag or 0
1857
	local Size1 = Table.Size1 or 1
1858
	local Size2 = Table.Size2 or 5
1859
	local Lifetime1 = Table.Lifetime1 or 1
1860
	local Lifetime2 = Table.Lifetime2 or 1.5
1861
	local Parent = Table.Parent or Torso
1862
	local Emit = Table.Emit or 100
1863
	local Offset = Table.Offset or 360
1864
	local Acel = Table.Acel or VT(0,0,0)
1865
	local Enabled = Table.Enabled or false
1866
	PRTCL.Parent = Parent
1867
	PRTCL.Size = NumberSequence.new(Size1,Size2)
1868
	PRTCL.Lifetime = NumberRange.new(Lifetime1,Lifetime2)
1869
	PRTCL.Speed = NumberRange.new(Speed)
1870
	PRTCL.VelocitySpread = Offset
1871
	PRTCL.Drag = Drag
1872
	PRTCL.Acceleration = Acel
1873
	if Enabled == false then
1874
		PRTCL:Emit(Emit)
1875
		Debris:AddItem(PRTCL,Lifetime2)
1876
	else
1877
		PRTCL.Enabled = true
1878
	end
1879
	return PRTCL
1880
end
1881
1882
function Raycast(POSITION, DIRECTION, RANGE, IGNOREDECENDANTS)
1883
	return workspace:FindPartOnRay(Ray.new(POSITION, DIRECTION.unit * RANGE), IGNOREDECENDANTS)
1884
end
1885
1886
function PositiveAngle(NUMBER)
1887
	if NUMBER >= 0 then
1888
		NUMBER = 0
1889
	end
1890
	return NUMBER
1891
end
1892
1893
function NegativeAngle(NUMBER)
1894
	if NUMBER <= 0 then
1895
		NUMBER = 0
1896
	end
1897
	return NUMBER
1898
end
1899
1900
function Swait(NUMBER)
1901
	if NUMBER == 0 or NUMBER == nil then
1902
		ArtificialHB.Event:wait()
1903
	else
1904
		for i = 1, NUMBER do
1905
			ArtificialHB.Event:wait()
1906
		end
1907
	end
1908
end
1909
1910
function CreateMesh(MESH, PARENT, MESHTYPE, MESHID, TEXTUREID, SCALE, OFFSET)
1911
	local NEWMESH = IT(MESH)
1912
	if MESH == "SpecialMesh" then
1913
		NEWMESH.MeshType = MESHTYPE
1914
		if MESHID ~= "nil" and MESHID ~= "" then
1915
			NEWMESH.MeshId = "http://www.roblox.com/asset/?id="..MESHID
1916
		end
1917
		if TEXTUREID ~= "nil" and TEXTUREID ~= "" then
1918
			NEWMESH.TextureId = "http://www.roblox.com/asset/?id="..TEXTUREID
1919
		end
1920
	end
1921
	NEWMESH.Offset = OFFSET or VT(0, 0, 0)
1922
	NEWMESH.Scale = SCALE
1923
	NEWMESH.Parent = PARENT
1924
	return NEWMESH
1925
end
1926
1927
function CreatePart(FORMFACTOR, PARENT, MATERIAL, REFLECTANCE, TRANSPARENCY, BRICKCOLOR, NAME, SIZE, ANCHOR)
1928
	local NEWPART = IT("Part")
1929
	NEWPART.formFactor = FORMFACTOR
1930
	NEWPART.Reflectance = REFLECTANCE
1931
	NEWPART.Transparency = TRANSPARENCY
1932
	NEWPART.CanCollide = false
1933
	NEWPART.Locked = true
1934
	NEWPART.Anchored = true
1935
	if ANCHOR == false then
1936
		NEWPART.Anchored = false
1937
	end
1938
	NEWPART.BrickColor = BRICKC(tostring(BRICKCOLOR))
1939
	NEWPART.Name = NAME
1940
	NEWPART.Size = SIZE
1941
	NEWPART.Position = Torso.Position
1942
	NEWPART.Material = MATERIAL
1943
	NEWPART:BreakJoints()
1944
	NEWPART.Parent = PARENT
1945
	return NEWPART
1946
end
1947
1948
	local function weldBetween(a, b)
1949
	    local weldd = Instance.new("ManualWeld")
1950
	    weldd.Part0 = a
1951
	    weldd.Part1 = b
1952
	    weldd.C0 = CFrame.new()
1953
	    weldd.C1 = b.CFrame:inverse() * a.CFrame
1954
	    weldd.Parent = a
1955
	    return weldd
1956
	end
1957
1958
1959
function QuaternionFromCFrame(cf)
1960
	local mx, my, mz, m00, m01, m02, m10, m11, m12, m20, m21, m22 = cf:components()
1961
	local trace = m00 + m11 + m22
1962
	if trace > 0 then 
1963
		local s = math.sqrt(1 + trace)
1964
		local recip = 0.5 / s
1965
		return (m21 - m12) * recip, (m02 - m20) * recip, (m10 - m01) * recip, s * 0.5
1966
	else
1967
		local i = 0
1968
		if m11 > m00 then
1969
			i = 1
1970
		end
1971
		if m22 > (i == 0 and m00 or m11) then
1972
			i = 2
1973
		end
1974
		if i == 0 then
1975
			local s = math.sqrt(m00 - m11 - m22 + 1)
1976
			local recip = 0.5 / s
1977
			return 0.5 * s, (m10 + m01) * recip, (m20 + m02) * recip, (m21 - m12) * recip
1978
		elseif i == 1 then
1979
			local s = math.sqrt(m11 - m22 - m00 + 1)
1980
			local recip = 0.5 / s
1981
			return (m01 + m10) * recip, 0.5 * s, (m21 + m12) * recip, (m02 - m20) * recip
1982
		elseif i == 2 then
1983
			local s = math.sqrt(m22 - m00 - m11 + 1)
1984
			local recip = 0.5 / s return (m02 + m20) * recip, (m12 + m21) * recip, 0.5 * s, (m10 - m01) * recip
1985
		end
1986
	end
1987
end
1988
 
1989
function QuaternionToCFrame(px, py, pz, x, y, z, w)
1990
	local xs, ys, zs = x + x, y + y, z + z
1991
	local wx, wy, wz = w * xs, w * ys, w * zs
1992
	local xx = x * xs
1993
	local xy = x * ys
1994
	local xz = x * zs
1995
	local yy = y * ys
1996
	local yz = y * zs
1997
	local zz = z * zs
1998
	return CFrame.new(px, py, pz, 1 - (yy + zz), xy - wz, xz + wy, xy + wz, 1 - (xx + zz), yz - wx, xz - wy, yz + wx, 1 - (xx + yy))
1999
end
2000
 
2001
function QuaternionSlerp(a, b, t)
2002
	local cosTheta = a[1] * b[1] + a[2] * b[2] + a[3] * b[3] + a[4] * b[4]
2003
	local startInterp, finishInterp;
2004
	if cosTheta >= 0.0001 then
2005
		if (1 - cosTheta) > 0.0001 then
2006
			local theta = ACOS(cosTheta)
2007
			local invSinTheta = 1 / SIN(theta)
2008
			startInterp = SIN((1 - t) * theta) * invSinTheta
2009
			finishInterp = SIN(t * theta) * invSinTheta
2010
		else
2011
			startInterp = 1 - t
2012
			finishInterp = t
2013
		end
2014
	else
2015
		if (1 + cosTheta) > 0.0001 then
2016
			local theta = ACOS(-cosTheta)
2017
			local invSinTheta = 1 / SIN(theta)
2018
			startInterp = SIN((t - 1) * theta) * invSinTheta
2019
			finishInterp = SIN(t * theta) * invSinTheta
2020
		else
2021
			startInterp = t - 1
2022
			finishInterp = t
2023
		end
2024
	end
2025
	return a[1] * startInterp + b[1] * finishInterp, a[2] * startInterp + b[2] * finishInterp, a[3] * startInterp + b[3] * finishInterp, a[4] * startInterp + b[4] * finishInterp
2026
end
2027
2028
function Clerp(a, b, t)
2029
	local qa = {QuaternionFromCFrame(a)}
2030
	local qb = {QuaternionFromCFrame(b)}
2031
	local ax, ay, az = a.x, a.y, a.z
2032
	local bx, by, bz = b.x, b.y, b.z
2033
	local _t = 1 - t
2034
	return QuaternionToCFrame(_t * ax + t * bx, _t * ay + t * by, _t * az + t * bz, QuaternionSlerp(qa, qb, t))
2035
end
2036
2037
function CreateFrame(PARENT, TRANSPARENCY, BORDERSIZEPIXEL, POSITION, SIZE, COLOR, BORDERCOLOR, NAME)
2038
	local frame = IT("Frame")
2039
	frame.BackgroundTransparency = TRANSPARENCY
2040
	frame.BorderSizePixel = BORDERSIZEPIXEL
2041
	frame.Position = POSITION
2042
	frame.Size = SIZE
2043
	frame.BackgroundColor3 = COLOR
2044
	frame.BorderColor3 = BORDERCOLOR
2045
	frame.Name = NAME
2046
	frame.Parent = PARENT
2047
	return frame
2048
end
2049
2050
function CreateLabel(PARENT, TEXT, TEXTCOLOR, TEXTFONTSIZE, TEXTFONT, TRANSPARENCY, BORDERSIZEPIXEL, STROKETRANSPARENCY, NAME)
2051
	local label = IT("TextLabel")
2052
	label.BackgroundTransparency = 1
2053
	label.Size = UD2(1, 0, 1, 0)
2054
	label.Position = UD2(0, 0, 0, 0)
2055
	label.TextColor3 = TEXTCOLOR
2056
	label.TextStrokeTransparency = STROKETRANSPARENCY
2057
	label.TextTransparency = TRANSPARENCY
2058
	label.FontSize = TEXTFONTSIZE
2059
	label.Font = TEXTFONT
2060
	label.BorderSizePixel = BORDERSIZEPIXEL
2061
	label.TextScaled = false
2062
	label.Text = TEXT
2063
	label.Name = NAME
2064
	label.Parent = PARENT
2065
	return label
2066
end
2067
2068
function NoOutlines(PART)
2069
	PART.TopSurface, PART.BottomSurface, PART.LeftSurface, PART.RightSurface, PART.FrontSurface, PART.BackSurface = 10, 10, 10, 10, 10, 10
2070
end
2071
2072
function CreateWeldOrSnapOrMotor(TYPE, PARENT, PART0, PART1, C0, C1)
2073
	local NEWWELD = IT(TYPE)
2074
	NEWWELD.Part0 = PART0
2075
	NEWWELD.Part1 = PART1
2076
	NEWWELD.C0 = C0
2077
	NEWWELD.C1 = C1
2078
	NEWWELD.Parent = PARENT
2079
	return NEWWELD
2080
end
2081
2082
local S = IT("Sound")
2083
function CreateSound(ID, PARENT, VOLUME, PITCH, DOESLOOP)
2084
	local NEWSOUND = nil
2085
	coroutine.resume(coroutine.create(function()
2086
		NEWSOUND = S:Clone()
2087
		NEWSOUND.Parent = PARENT
2088
		NEWSOUND.Volume = VOLUME
2089
		NEWSOUND.Pitch = PITCH
2090
		NEWSOUND.SoundId = "http://www.roblox.com/asset/?id="..ID
2091
		NEWSOUND:play()
2092
		if DOESLOOP == true then
2093
			NEWSOUND.Looped = true
2094
		else
2095
			repeat wait(1) until NEWSOUND.Playing == false or NEWSOUND.Parent ~= PARENT
2096
			NEWSOUND:remove()
2097
		end
2098
	end))
2099
	return NEWSOUND
2100
end
2101
2102
function CFrameFromTopBack(at, top, back)
2103
	local right = top:Cross(back)
2104
	return CF(at.x, at.y, at.z, right.x, top.x, back.x, right.y, top.y, back.y, right.z, top.z, back.z)
2105
end
2106
2107
--WACKYEFFECT({EffectType = "", Size = VT(1,1,1), Size2 = VT(0,0,0), Transparency = 0, Transparency2 = 1, CFrame = CF(), MoveToPos = nil, RotationX = 0, RotationY = 0, RotationZ = 0, Material = "Neon", Color = C3(1,1,1), SoundID = nil, SoundPitch = nil, SoundVolume = nil})
2108
function WACKYEFFECT(Table)
2109
	local TYPE = (Table.EffectType or "Sphere")
2110
	local SIZE = (Table.Size or VT(1,1,1))
2111
	local ENDSIZE = (Table.Size2 or VT(0,0,0))
2112
	local TRANSPARENCY = (Table.Transparency or 0)
2113
	local ENDTRANSPARENCY = (Table.Transparency2 or 1)
2114
	local CFRAME = (Table.CFrame or Torso.CFrame)
2115
	local MOVEDIRECTION = (Table.MoveToPos or nil)
2116
	local ROTATION1 = (Table.RotationX or 0)
2117
	local ROTATION2 = (Table.RotationY or 0)
2118
	local ROTATION3 = (Table.RotationZ or 0)
2119
	local MATERIAL = (Table.Material or "Neon")
2120
	local COLOR = (Table.Color or C3(242, 243, 243))
2121
	local TIME = (Table.Time or 45)
2122
	local SOUNDID = (Table.SoundID or nil)
2123
	local SOUNDPITCH = (Table.SoundPitch or nil)
2124
	local SOUNDVOLUME = (Table.SoundVolume or nil)
2125
	coroutine.resume(coroutine.create(function()
2126
		local PLAYSSOUND = false
2127
		local SOUND = nil
2128
		local EFFECT = CreatePart(3, Effects, MATERIAL, 0, TRANSPARENCY, BRICKC("Institutional White"), "Effect", VT(1,1,1), true)
2129
		if SOUNDID ~= nil and SOUNDPITCH ~= nil and SOUNDVOLUME ~= nil then
2130
			PLAYSSOUND = true
2131
			SOUND = CreateSound(SOUNDID, EFFECT, SOUNDVOLUME, SOUNDPITCH, false)
2132
		end
2133
		EFFECT.Color = COLOR
2134
		local MSH = nil
2135
		if TYPE == "Sphere" then
2136
			MSH = CreateMesh("SpecialMesh", EFFECT, "Sphere", "", "", SIZE, VT(0,0,0))
2137
		elseif TYPE == "Block" then
2138
			MSH = IT("BlockMesh",EFFECT)
2139
			MSH.Scale = VT(SIZE.X,SIZE.X,SIZE.X)
2140
		elseif TYPE == "Wave" then
2141
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "20329976", "", SIZE, VT(0,0,-SIZE.X/8))
2142
		elseif TYPE == "Ring" then
2143
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "559831844", "", VT(SIZE.X,SIZE.X,0.1), VT(0,0,0))
2144
		elseif TYPE == "Slash" then
2145
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "662586858", "", VT(SIZE.X/10,0,SIZE.X/10), VT(0,0,0))
2146
		elseif TYPE == "Round Slash" then
2147
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "662585058", "", VT(SIZE.X/10,0,SIZE.X/10), VT(0,0,0))
2148
		elseif TYPE == "Swirl" then
2149
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "1051557", "", SIZE, VT(0,0,0))
2150
		elseif TYPE == "Skull" then
2151
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "4770583", "", SIZE, VT(0,0,0))
2152
		elseif TYPE == "Crystal" then
2153
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "9756362", "", SIZE, VT(0,0,0))
2154
		end
2155
		if MSH ~= nil then
2156
			local MOVESPEED = nil
2157
			if MOVEDIRECTION ~= nil then
2158
				MOVESPEED = (CFRAME.p - MOVEDIRECTION).Magnitude/TIME
2159
			end
2160
			local GROWTH = SIZE - ENDSIZE
2161
			local TRANS = TRANSPARENCY - ENDTRANSPARENCY
2162
			if TYPE == "Block" then
2163
				EFFECT.CFrame = CFRAME*ANGLES(RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)))
2164
			else
2165
				EFFECT.CFrame = CFRAME
2166
			end
2167
			for LOOP = 1, TIME+1 do
2168
				Swait()
2169
				MSH.Scale = MSH.Scale - GROWTH/TIME
2170
				if TYPE == "Wave" then
2171
					MSH.Offset = VT(0,0,-MSH.Scale.X/8)
2172
				end
2173
				EFFECT.Transparency = EFFECT.Transparency - TRANS/TIME
2174
				if TYPE == "Block" then
2175
					EFFECT.CFrame = CFRAME*ANGLES(RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)))
2176
				else
2177
					EFFECT.CFrame = EFFECT.CFrame*ANGLES(RAD(ROTATION1),RAD(ROTATION2),RAD(ROTATION3))
2178
				end
2179
				if MOVEDIRECTION ~= nil then
2180
					local ORI = EFFECT.Orientation
2181
					EFFECT.CFrame = CF(EFFECT.Position,MOVEDIRECTION)*CF(0,0,-MOVESPEED)
2182
					EFFECT.Orientation = ORI
2183
				end
2184
			end
2185
			if PLAYSSOUND == false then
2186
				EFFECT:remove()
2187
			else
2188
				SOUND.Stopped:Connect(function()
2189
					EFFECT:remove()
2190
				end)
2191
			end
2192
		else
2193
			if PLAYSSOUND == false then
2194
				EFFECT:remove()
2195
			else
2196
				repeat Swait() until SOUND.Playing == false
2197
				EFFECT:remove()
2198
			end
2199
		end
2200
	end))
2201
end
2202
2203
function MakeForm(PART,TYPE)
2204
	if TYPE == "Cyl" then
2205
		local MSH = IT("CylinderMesh",PART)
2206
	elseif TYPE == "Ball" then
2207
		local MSH = IT("SpecialMesh",PART)
2208
		MSH.MeshType = "Sphere"
2209
	elseif TYPE == "Wedge" then
2210
		local MSH = IT("SpecialMesh",PART)
2211
		MSH.MeshType = "Wedge"
2212
	end
2213
end
2214
2215
function SpawnTrail(FROM,TO,BIG)
2216
	local TRAIL = CreatePart(3, Effects, "Neon", 0, 0.5, "Institutional White", "Trail", VT(0,0,0))
2217
	MakeForm(TRAIL,"Cyl")
2218
	local DIST = (FROM - TO).Magnitude
2219
	if BIG == true then
2220
		TRAIL.Size = VT(0.5,DIST,0.5)
2221
	else
2222
		TRAIL.Size = VT(0.25,DIST,0.25)
2223
	end
2224
	TRAIL.CFrame = CF(FROM, TO) * CF(0, 0, -DIST/2) * ANGLES(RAD(90),RAD(0),RAD(0))
2225
	coroutine.resume(coroutine.create(function()
2226
		for i = 1, 5 do
2227
			Swait()
2228
			TRAIL.Transparency = TRAIL.Transparency + 0.1
2229
		end
2230
		TRAIL:remove()
2231
	end))
2232
end
2233
2234
Debris = game:GetService("Debris")
2235
2236
function CastProperRay(StartPos, EndPos, Distance, Ignore)
2237
	local DIRECTION = CF(StartPos,EndPos).lookVector
2238
	return Raycast(StartPos, DIRECTION, Distance, Ignore)
2239
end
2240
2241
function turnto(position)
2242
	RootPart.CFrame=CFrame.new(RootPart.CFrame.p,VT(position.X,RootPart.Position.Y,position.Z)) * CFrame.new(0, 0, 0)
2243
end
2244
2245
--//=================================\\
2246
--||	     WEAPON CREATION
2247
--\\=================================//
2248
2249
2250
local FIST = CreatePart(3, Weapon, "Neon", 0, 0, "Institutional White", "Neon Gauntlet Part", VT(1.01*Player_Size,1.4*Player_Size,1.01*Player_Size),false)
2251
local weld = CreateWeldOrSnapOrMotor("Weld", FIST, RightArm, FIST, CF(0 * Player_Size, -0.25 * Player_Size, 0 * Player_Size) * ANGLES(RAD(0), RAD(0), RAD(0)), CF(0, 0, 0))
2252
local part = CreatePart(3, Weapon, "Granite", 0, 0, "Institutional White", "Gauntlet Part", VT(1.2*Player_Size,0.3*Player_Size,1.2*Player_Size),false)
2253
local weld = CreateWeldOrSnapOrMotor("Weld", part, FIST, part, CF(0 * Player_Size, 0.6 * Player_Size, 0 * Player_Size) * ANGLES(RAD(0), RAD(0), RAD(0)), CF(0, 0, 0))
2254
2255
local part = CreatePart(3, Weapon, "Granite", 0, 0, "Institutional White", "Gauntlet Part", VT(1.05*Player_Size,0.05*Player_Size,1.05*Player_Size),false)
2256
local weld = CreateWeldOrSnapOrMotor("Weld", part, FIST, part, CF(0 * Player_Size, 0.1 * Player_Size, 0 * Player_Size) * ANGLES(RAD(0), RAD(0), RAD(0)), CF(0, 0, 0))
2257
local part = CreatePart(3, Weapon, "Granite", 0, 0, "Institutional White", "Gauntlet Part", VT(1.05*Player_Size,0.05*Player_Size,1.05*Player_Size),false)
2258
local weld = CreateWeldOrSnapOrMotor("Weld", part, FIST, part, CF(0 * Player_Size, 0.2 * Player_Size, 0 * Player_Size) * ANGLES(RAD(0), RAD(0), RAD(0)), CF(0, 0, 0))
2259
local part = CreatePart(3, Weapon, "Granite", 0, 0, "Institutional White", "Gauntlet Part", VT(1.05*Player_Size,0.05*Player_Size,1.05*Player_Size),false)
2260
local weld = CreateWeldOrSnapOrMotor("Weld", part, FIST, part, CF(0 * Player_Size, 0.3 * Player_Size, 0 * Player_Size) * ANGLES(RAD(0), RAD(0), RAD(0)), CF(0, 0, 0))
2261
local part = CreatePart(3, Weapon, "Granite", 0, 0, "Institutional White", "Gauntlet Part", VT(1.05*Player_Size,0.05*Player_Size,1.05*Player_Size),false)
2262
local weld = CreateWeldOrSnapOrMotor("Weld", part, FIST, part, CF(0 * Player_Size, 0.4 * Player_Size, 0 * Player_Size) * ANGLES(RAD(0), RAD(0), RAD(0)), CF(0, 0, 0))
2263
2264
local part = CreatePart(3, Weapon, "Granite", 0, 0, "Institutional White", "Gauntlet Part", VT(1.1*Player_Size,0.8*Player_Size,1.1*Player_Size),false)
2265
local weld = CreateWeldOrSnapOrMotor("Weld", part, FIST, part, CF(0 * Player_Size, -0.35 * Player_Size, 0 * Player_Size) * ANGLES(RAD(0), RAD(0), RAD(0)), CF(0, 0, 0))
2266
local part = CreatePart(3, Weapon, "Neon", 0, 0, "Institutional White", "Neon Gauntlet Part", VT(1.1*Player_Size,0.8*Player_Size,1*Player_Size),false)
2267
local weld = CreateWeldOrSnapOrMotor("Weld", part, FIST, part, CF(0.05 * Player_Size, -0.375 * Player_Size, 0 * Player_Size) * ANGLES(RAD(0), RAD(0), RAD(0)), CF(0, 0, 0))
2268
local part = CreatePart(3, Weapon, "Granite", 0, 0, "Institutional White", "Gauntlet Part", VT(1.1*Player_Size,0.8*Player_Size,0.3*Player_Size),false)
2269
local weld = CreateWeldOrSnapOrMotor("Weld", part, FIST, part, CF(0.1 * Player_Size, -0.4 * Player_Size, 0 * Player_Size) * ANGLES(RAD(0), RAD(0), RAD(0)), CF(0, 0, 0))
2270
local part = CreatePart(3, Weapon, "Granite", 0, 0, "Institutional White", "Gauntlet Part", VT(1.1*Player_Size,0.8*Player_Size,0.3*Player_Size),false)
2271
local weld = CreateWeldOrSnapOrMotor("Weld", part, FIST, part, CF(0.1 * Player_Size, -0.4 * Player_Size, 0.33 * Player_Size) * ANGLES(RAD(0), RAD(0), RAD(0)), CF(0, 0, 0))
2272
local part = CreatePart(3, Weapon, "Granite", 0, 0, "Institutional White", "Gauntlet Part", VT(1.1*Player_Size,0.8*Player_Size,0.3*Player_Size),false)
2273
local weld = CreateWeldOrSnapOrMotor("Weld", part, FIST, part, CF(0.1 * Player_Size, -0.4 * Player_Size, -0.33 * Player_Size) * ANGLES(RAD(0), RAD(0), RAD(0)), CF(0, 0, 0))
2274
2275
ParticleEmitter({Speed = 0.2, Drag = 0, Size1 = 0.1, Size2 = 0, Lifetime1 = 0.3, Lifetime2 = 0.5, Parent = Hole, Emit = 100, Offset = 360, Enabled = true, Acel = VT(0,5,0)})
2276
--ParticleEmitter({Speed = 0.5, Drag = 0, Size1 = 0.2, Size2 = 0, Lifetime1 = 0.3, Lifetime2 = 0.7, Parent = Dangle, Emit = 100, Offset = 360, Enabled = true, Acel = VT(0,5,0)})
2277
 
2278
for _, c in pairs(Weapon:GetDescendants()) do
2279
    if c.ClassName == "Part" and c.Name ~= "Eye" and c.Parent ~= Effects and c.Parent.Parent ~= Effects then
2280
        c.Material = "Glass"
2281
        c.Color = C3(242, 243, 243
2282
)
2283
    elseif c.ClassName == "Part" and c.Name == "Eye" then
2284
        c.Color = C3(242, 243, 243)
2285
        c.Material = "Neon"
2286
    end
2287
end
2288
 
2289
Weapon.Parent = Character
2290
for _, c in pairs(Weapon:GetChildren()) do
2291
    if c.ClassName == "Part" then
2292
        c.CustomPhysicalProperties = PhysicalProperties.new(0, 0, 0, 0, 0)
2293
    end
2294
end
2295
2296
New = function(Object, Parent, Name, Data)
2297
	local Object = Instance.new(Object)
2298
	for Index, Value in pairs(Data or {}) do
2299
		Object[Index] = Value
2300
	end
2301
	Object.Parent = Parent
2302
	Object.Name = Name
2303
	return Object
2304
end
2305
2306
2307
Corruption = New("Part",Character,"Corruption",{BrickColor = BrickColor.new("Institutional White"),Material = Enum.Material.Neon,FormFactor = Enum.FormFactor.Symmetric,Size = Vector3.new(0.330000252, 0.660000384, 0.0500000007),CFrame = CFrame.new(-67.6787415, 1.33912802, 93.9772263, 0, 0, -1, 0, 1, 0, 1, 0, 0),})
2308
mot = New("Motor",Corruption,"mot",{Part0 = Corruption,Part1 = LeftLeg,C0 = CFrame.new(0, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0),C1 = CFrame.new(0.0127105713, 0.339127064, 0.487541199, 0, 0, 1, 0, 1, 0, -1, 0, 0),})
2309
Corruption = New("Part",Character,"Corruption",{BrickColor = BrickColor.new("Institutional White"),Material = Enum.Material.Neon,FormFactor = Enum.FormFactor.Symmetric,Size = Vector3.new(0.330000252, 0.660000384, 0.0500000007),CFrame = CFrame.new(-66.6787415, 1.33912802, 93.9772263, 0, 0, -1, 0, 1, 0, 1, 0, 0),})
2310
mot = New("Motor",Corruption,"mot",{Part0 = Corruption,Part1 = LeftLeg,C0 = CFrame.new(0, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0),C1 = CFrame.new(0.0127105713, 0.339127064, -0.512458801, 0, 0, 1, 0, 1, 0, -1, 0, 0),})
2311
2312
Corruption = New("Part",Character,"Corruption",{BrickColor = BrickColor.new("Institutional White"),Material = Enum.Material.Neon,FormFactor = Enum.FormFactor.Symmetric,Size = Vector3.new(0.740000069, 0.140000015, 0.0500000007),CFrame = CFrame.new(-67.6787415, 3.12643075, 92.6921463, -9.31322575e-10, -1.86264515e-09, -0.999999285, 0.777135551, 0.629333496, 9.31322575e-10, 0.6293329, -0.777134895, 0),})
2313
mot = New("Motor",Corruption,"mot",{Part0 = Corruption,Part1 = Torso,C0 = CFrame.new(0, 0, 0, 0, 0.777135491, 0.629333377, 0, 0.629333377, -0.777135491, -1, 0, 0),C1 = CFrame.new(-0.766067505, 0.138611317, 0.515716553, -0.0156119959, -4.38656264e-11, 0.999877751, -0.0062854127, 0.999980271, -9.81397825e-05, -0.999858022, -0.00628618058, -0.0156116877),})
2314
Corruption = New("Part",Character,"Corruption",{BrickColor = BrickColor.new("Institutional White"),Material = Enum.Material.Neon,FormFactor = Enum.FormFactor.Symmetric,Size = Vector3.new(1.12999988, 1.12000012, 0.0500000007),CFrame = CFrame.new(-67.6951752, 3.43133378, 93.991272, 0, -9.31322575e-10, -0.999999285, 0, 1, 9.31322575e-10, 0.999999225, 0, 0),})
2315
mot = New("Motor",Corruption,"mot",{Part0 = Corruption,Part1 = Torso,C0 = CFrame.new(0, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0),C1 = CFrame.new(0.533157349, 0.443484068, 0.50994873, -0.0156119959, -4.38656264e-11, 0.999877751, -0.0062854127, 0.999980271, -9.81397825e-05, -0.999858022, -0.00628618058, -0.0156116877),})
2316
Corruption = New("Part",Character,"Corruption",{BrickColor = BrickColor.new("Institutional White"),Material = Enum.Material.Neon,FormFactor = Enum.FormFactor.Symmetric,Size = Vector3.new(0.450000018, 0.590000272, 0.0500000007),CFrame = CFrame.new(-67.6951752, 2.60608268, 94.3512573, 0, -9.31322575e-10, -0.999999285, 0, 1, 9.31322575e-10, 0.999999225, 0, 0),})
2317
mot = New("Motor",Corruption,"mot",{Part0 = Corruption,Part1 = Torso,C0 = CFrame.new(0, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0),C1 = CFrame.new(0.893096924, -0.381786108, 0.509513855, -0.0156119959, -4.38656264e-11, 0.999877751, -0.0062854127, 0.999980271, -9.81397825e-05, -0.999858022, -0.00628618058, -0.0156116877),})
2318
Corruption = New("Part",Character,"Corruption",{BrickColor = BrickColor.new("Institutional White"),Material = Enum.Material.Neon,FormFactor = Enum.FormFactor.Symmetric,Size = Vector3.new(0.330000013, 0.590000272, 0.0500000007),CFrame = CFrame.new(-66.6951752, 2.60608268, 94.2912598, 0, -9.31322575e-10, -0.999999285, 0, 1, 9.31322575e-10, 0.999999225, 0, 0),})
2319
mot = New("Motor",Corruption,"mot",{Part0 = Corruption,Part1 = Torso,C0 = CFrame.new(0, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0),C1 = CFrame.new(0.817497253, -0.388065577, -0.489402771, -0.0156119959, -4.38656264e-11, 0.999877751, -0.0062854127, 0.999980271, -9.81397825e-05, -0.999858022, -0.00628618058, -0.0156116877),})
2320
Corruption = New("Part",Character,"Corruption",{BrickColor = BrickColor.new("Institutional White"),Material = Enum.Material.Neon,FormFactor = Enum.FormFactor.Symmetric,Size = Vector3.new(0.220000237, 0.660000384, 0.0500000007),CFrame = CFrame.new(-66.6787338, 2.57395577, 93.9222183, 0, -9.31322575e-10, -0.999999285, 0, 1, 9.31322575e-10, 0.999999225, 0, 0),})
2321
mot = New("Motor",Corruption,"mot",{Part0 = Corruption,Part1 = Torso,C0 = CFrame.new(0, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0),C1 = CFrame.new(0.448242188, -0.420258999, -0.49987793, -0.0156119959, -4.38656264e-11, 0.999877751, -0.0062854127, 0.999980271, -9.81397825e-05, -0.999858022, -0.00628618058, -0.0156116877),})
2322
Corruption = New("Part",Character,"Corruption",{BrickColor = BrickColor.new("Institutional White"),Material = Enum.Material.Neon,FormFactor = Enum.FormFactor.Symmetric,Size = Vector3.new(1.07999992, 1.12000012, 0.0500000007),CFrame = CFrame.new(-66.6951752, 3.43133354, 93.9662704, 0, -9.31322575e-10, -0.999999285, 0, 1, 9.31322575e-10, 0.999999225, 0, 0),})
2323
mot = New("Motor",Corruption,"mot",{Part0 = Corruption,Part1 = Torso,C0 = CFrame.new(0, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0),C1 = CFrame.new(0.492546082, 0.437201023, -0.489517212, -0.0156119959, -4.38656264e-11, 0.999877751, -0.0062854127, 0.999980271, -9.81397825e-05, -0.999858022, -0.00628618058, -0.0156116877),})
2324
Corruption = New("Part",Character,"Corruption",{BrickColor = BrickColor.new("Institutional White"),Material = Enum.Material.Neon,FormFactor = Enum.FormFactor.Symmetric,Size = Vector3.new(0.740000069, 0.340000302, 0.0500000007),CFrame = CFrame.new(-66.6787415, 3.2281816, 93.1287689, 0, -9.31322575e-10, -0.999999285, 0, 1, 9.31322575e-10, 0.999999225, 0, 0),})
2325
mot = New("Motor",Corruption,"mot",{Part0 = Corruption,Part1 = Torso,C0 = CFrame.new(0, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0),C1 = CFrame.new(-0.345108032, 0.234031916, -0.491600037, -0.0156119959, -4.38656264e-11, 0.999877751, -0.0062854127, 0.999980271, -9.81397825e-05, -0.999858022, -0.00628618058, -0.0156116877),})
2326
Corruption = New("Part",Character,"Corruption",{BrickColor = BrickColor.new("Institutional White"),Material = Enum.Material.Neon,FormFactor = Enum.FormFactor.Symmetric,Size = Vector3.new(1.0999999, 0.0500000007, 1.00999975),CFrame = CFrame.new(-67.1759109, 3.99574399, 93.9762726, 0, -0.0260759834, -0.999659359, 0, 0.999660075, -0.0260760002, 0.999999225, -2.91038305e-11, -9.31322575e-10),})
2327
mot = New("Motor",Corruption,"mot",{Part0 = Corruption,Part1 = Torso,C0 = CFrame.new(0, 0, 0, 0, 0, 1, -0.0260760002, 0.999660015, 0, -0.999660015, -0.0260760002, 0),C1 = CFrame.new(0.510047913, 1.00462079, -0.0125579834, -0.0156119959, -4.38656264e-11, 0.999877751, -0.0062854127, 0.999980271, -9.81397825e-05, -0.999858022, -0.00628618058, -0.0156116877),})
2328
2329
Corruption = New("Part",Character,"Corruption",{BrickColor = BrickColor.new("Institutional White"),Material = Enum.Material.Neon,FormFactor = Enum.FormFactor.Symmetric,Size = Vector3.new(0.740000069, 0.419999987, 0.870000064),CFrame = CFrame.new(-67.0815201, 2.81366396, 91.9528885, 0, 0, -1, 0.777135491, 0.629333377, 0, 0.629333377, -0.777135491, 0),})
2330
mot = New("Motor",Corruption,"mot",{Part0 = Corruption,Part1 = LeftArm,C0 = CFrame.new(0, 0, 0, 0, 0.777135491, 0.629333377, 0, 0.629333377, -0.777135491, -1, 0, 0),C1 = CFrame.new(-0.00936126709, -0.184385061, -0.0693511963, 0, 0, 1, 0, 1, 0, -1, 0, 0),})
2331
2332
local Trail = IT("Trail",Leftbarrel)
2333
Trail.Attachment0 = A
2334
Trail.Attachment1 = B
2335
Trail.Lifetime = 0.2
2336
Trail.Color = ColorSequence.new(BRICKC"Institutional White".Color)
2337
Trail.Transparency = NumberSequence.new(0, 1)
2338
Trail.Enabled = true
2339
2340
local PRT = ParticleEmitter({Speed = 3, Drag = 3, Size1 = 1, Size2 = 3, Lifetime1 = 0.2, Lifetime2 = 1, Parent = RightLeg, Emit = 100, Offset = 360, Enabled = true})
2341
PRT.LockedToPart = true
2342
local PRT = ParticleEmitter({Speed = 3, Drag = 3, Size1 = 1, Size2 = 3, Lifetime1 = 0.2, Lifetime2 = 1, Parent = LeftLeg, Emit = 100, Offset = 360, Enabled = true})
2343
PRT.LockedToPart = true
2344
local PRT = ParticleEmitter({Speed = 3, Drag = 3, Size1 = 1, Size2 = 3, Lifetime1 = 0.3, Lifetime2 = 1.5, Parent = Torso, Emit = 100, Offset = 360, Enabled = true})
2345
PRT.LockedToPart = true
2346
local PRT = ParticleEmitter({Speed = 3, Drag = 3, Size1 = 1, Size2 = 3, Lifetime1 = 0.2, Lifetime2 = 1, Parent = RightArm, Emit = 100, Offset = 360, Enabled = true})
2347
PRT.LockedToPart = true
2348
local PRT = ParticleEmitter({Speed = 3, Drag = 3, Size1 = 1, Size2 = 3, Lifetime1 = 0.2, Lifetime2 = 1, Parent = LeftArm, Emit = 100, Offset = 360, Enabled = true})
2349
PRT.LockedToPart = true
2350
2351
local HAT = CreatePart(3, Character, "Neon", 0, 0, "Institutional White", "Tophat", VT(1,1,1),false)
2352
local Hatweld = CreateWeldOrSnapOrMotor("Weld", Head, Head, HAT, CF(0,1,0), CF(0, 0, 0))
2353
CreateMesh("SpecialMesh", HAT, "FileMesh", "97094619", "", VT(1,1,1), VT(0,0,0))
2354
for i = 1, 16 do
2355
	local FACE = CreatePart(3, Character, "Neon", 0, 0+(i-1)/16.2, "Institutional White", "FaceGradient", VT(1.01,0.65,1.01),false)
2356
	FACE.Color = C3(0,0,0)
2357
	Head:FindFirstChildOfClass("SpecialMesh"):Clone().Parent = FACE
2358
	CreateWeldOrSnapOrMotor("Weld", Head, Head, FACE, CF(0,0.45-(i-1)/25,0), CF(0, 0, 0))
2359
end
2360
local EYE = CreatePart(3, Character, "Neon", 0, 0, "Institutional White", "Eyeball", VT(0.15,0.15,0.15),false)
2361
MakeForm(EYE,"Ball")
2362
CreateWeldOrSnapOrMotor("Weld", Head, Head, EYE, CF(0.15,0.26,-0.55), CF(0, 0, 0))
2363
local EYE2 = CreatePart(3, Character, "Neon", 0, 0, "Institutional White", "Eyeball", VT(0.15,0.15,0.15),false)
2364
MakeForm(EYE2,"Ball")
2365
CreateWeldOrSnapOrMotor("Weld", Head, Head, EYE2, CF(-0.15,0.26,-0.55), CF(0, 0, 0))
2366
2367
local Particle = IT("ParticleEmitter",nil)
2368
Particle.Enabled = false
2369
Particle.Transparency = NumberSequence.new({NumberSequenceKeypoint.new(0,0.3),NumberSequenceKeypoint.new(0.3,0),NumberSequenceKeypoint.new(1,1)})
2370
Particle.LightEmission = 5
2371
Particle.Rate = 300
2372
Particle.ZOffset = 0.2
2373
Particle.Rotation = NumberRange.new(-180, 180)
2374
Particle.RotSpeed = NumberRange.new(-180, 180)
2375
Particle.Texture = "http://www.roblox.com/asset/?id=304437537"
2376
Particle.Color = ColorSequence.new(C3(1,0,0),C3(0.4,0,0),C3(1,0,0),C3(0,4,0),C3(1,0,0),C3(1,0,0),C3(1,0,0),C3(1,0,0))
2377
2378
--ParticleEmitter({Speed = 5, Drag = 0, Size1 = 1, Size2 = 5, Lifetime1 = 1, Lifetime2 = 1.5, Parent = Torso, Emit = 100, Offset = 360, Enabled = false})
2379
function ParticleEmitter(Table)
2380
	local PRTCL = Particle:Clone()
2381
	local Speed = Table.Speed or 5
2382
	local Drag = Table.Drag or 0
2383
	local Size1 = Table.Size1 or 1
2384
	local Size2 = Table.Size2 or 5
2385
	local Lifetime1 = Table.Lifetime1 or 1
2386
	local Lifetime2 = Table.Lifetime2 or 1.5
2387
	local Parent = Table.Parent or Torso
2388
	local Emit = Table.Emit or 100
2389
	local Offset = Table.Offset or 360
2390
	local Acel = Table.Acel or VT(0,0,0)
2391
	local Enabled = Table.Enabled or false
2392
	PRTCL.Parent = Parent
2393
	PRTCL.Size = NumberSequence.new(Size1,Size2)
2394
	PRTCL.Lifetime = NumberRange.new(Lifetime1,Lifetime2)
2395
	PRTCL.Speed = NumberRange.new(Speed)
2396
	PRTCL.VelocitySpread = Offset
2397
	PRTCL.Drag = Drag
2398
	PRTCL.Acceleration = Acel
2399
	if Enabled == false then
2400
		PRTCL:Emit(Emit)
2401
		Debris:AddItem(PRTCL,Lifetime2)
2402
	else
2403
		PRTCL.Enabled = true
2404
	end
2405
	return PRTCL
2406
end
2407
2408-
local Handle = CreatePart(3, Weapon, "Metal", 0, 0, "Institutional White", "Part", VT(0.2,0.6,0.2),false)
2408+
local Handle = CreatePart(3, Weapon, "Wood", 0, 0, "Institutional White", "Part", VT(0.2,0.6,0.2),false)
2409
local RightArmGrasp = CreateWeldOrSnapOrMotor("Weld", Handle, RightArm, Handle, CF(0,-1, 0) * ANGLES(RAD(90), RAD(0), RAD(0)), CF(0, 0.21, 0))
2410-
local Part = CreatePart(3, Weapon, "Metal", 0, 0, "Institutional White", "Part", VT(0.2,0.5,0.2),false)
2410+
local Part = CreatePart(3, Weapon, "Wood", 0, 0, "Institutional White", "Part", VT(0.2,0.5,0.2),false)
2411
MakeForm(Part,"Wedge")
2412
CreateWeldOrSnapOrMotor("Weld", Handle, Handle, Part, CF(0, -0.3, 0.2) * ANGLES(RAD(0), RAD(180), RAD(0)), CF(0, 0, 0))
2413-
local Part = CreatePart(3, Weapon, "Metal", 0, 0, "Institutional White", "Part", VT(0.2,0.3,0.2),false)
2413+
local Part = CreatePart(3, Weapon, "Wood", 0, 0, "Institutional White", "Part", VT(0.2,0.3,0.2),false)
2414
MakeForm(Part,"Wedge")
2415
CreateWeldOrSnapOrMotor("Weld", Handle, Handle, Part, CF(0, -0.4, 0) * ANGLES(RAD(0), RAD(0), RAD(180)), CF(0, 0, 0))
2416-
local Part = CreatePart(3, Weapon, "Metal", 0, 0, "Institutional White", "Part", VT(0.3,0.3,0.3),false)
2416+
local Part = CreatePart(3, Weapon, "Wood", 0, 0, "Institutional White", "Part", VT(0.3,0.3,0.3),false)
2417
CreateWeldOrSnapOrMotor("Weld", Handle, Handle, Part, CF(0, -0.5, 0.2) * ANGLES(RAD(0), RAD(0), RAD(0)), CF(0, 0, 0))
2418-
local Part = CreatePart(3, Weapon, "Metal", 0, 0, "Institutional White", "Part", VT(0.3,0.5,0.5),false)
2418+
local Part = CreatePart(3, Weapon, "Wood", 0, 0, "Institutional White", "Part", VT(0.3,0.5,0.5),false)
2419
CreateWeldOrSnapOrMotor("Weld", Handle, Handle, Part, CF(0, -0.6, 0.5) * ANGLES(RAD(0), RAD(0), RAD(0)), CF(0, 0, 0))
2420-
local Part = CreatePart(3, Weapon, "Metal", 0, 0, "Institutional White", "Part", VT(0.4,0.4,0.4),false)
2420+
local Part = CreatePart(3, Weapon, "Wood", 0, 0, "Institutional White", "Part", VT(0.4,0.4,0.4),false)
2421
MakeForm(Part,"Cyl")
2422
CreateWeldOrSnapOrMotor("Weld", Handle, Handle, Part, CF(0, -0.6, 0.5) * ANGLES(RAD(90), RAD(0), RAD(0)), CF(0, 0, 0))
2423
for i = 1, 8 do
2424-
	local Piece = CreatePart(3, Weapon, "Metal", 0, 0, "Institutional White", "Eye", VT(0,0.35,0.41),false)
2424+
	local Piece = CreatePart(3, Weapon, "Neon", 0, 0, "Institutional White", "Eye", VT(0,0.35,0.41),false)
2425
	CreateWeldOrSnapOrMotor("Weld", Handle, Part, Piece, CF(0, 0, 0) * ANGLES(RAD(0), RAD((360/8)*i), RAD(0)), CF(0, 0, 0))
2426
end
2427-
local Part = CreatePart(3, Weapon, "Metal", 0, 0, "Institutional White", "Eye", VT(0.38,0.41,0.38),false)
2427+
local Part = CreatePart(3, Weapon, "Neon", 0, 0, "Institutional White", "Eye", VT(0.38,0.41,0.38),false)
2428
MakeForm(Part,"Cyl")
2429
CreateWeldOrSnapOrMotor("Weld", Handle, Handle, Part, CF(0, -0.6, 0.5) * ANGLES(RAD(90), RAD(0), RAD(0)), CF(0, 0, 0))
2430-
local Part = CreatePart(3, Weapon, "Metal", 0, 0, "Institutional White", "Part", VT(0.37,0.5,0.37),false)
2430+
local Part = CreatePart(3, Weapon, "Neon", 0, 0, "Institutional White", "Part", VT(0.37,0.5,0.37),false)
2431
MakeForm(Part,"Ball")
2432
CreateWeldOrSnapOrMotor("Weld", Handle, Handle, Part, CF(0, -0.6, 0.3) * ANGLES(RAD(90), RAD(0), RAD(0)), CF(0, 0, 0))
2433-
local Part = CreatePart(3, Weapon, "Metal", 0, 0, "Institutional White", "Part", VT(0.2,0.7,0.4),false)
2433+
local Part = CreatePart(3, Weapon, "Neon", 0, 0, "Institutional White", "Part", VT(0.2,0.7,0.4),false)
2434
MakeForm(Part,"Wedge")
2435
CreateWeldOrSnapOrMotor("Weld", Handle, Handle, Part, CF(0, -0.7, 0.5) * ANGLES(RAD(90), RAD(180), RAD(180)), CF(0, 0, 0))
2436-
local Part = CreatePart(3, Weapon, "Metal", 0, 0, "Institutional White", "Part", VT(0.3,0.4,0.2),false)
2436+
local Part = CreatePart(3, Weapon, "Neon", 0, 0, "Institutional White", "Part", VT(0.3,0.4,0.2),false)
2437
CreateWeldOrSnapOrMotor("Weld", Handle, Handle, Part, CF(0, -0.6, 0.7) * ANGLES(RAD(0), RAD(0), RAD(0)), CF(0, 0, 0))
2438-
local Part = CreatePart(3, Weapon, "Metal", 0, 0, "Institutional White", "Part", VT(0.35,0.35,0.35),false)
2438+
local Part = CreatePart(3, Weapon, "Neon", 0, 0, "Institutional White", "Part", VT(0.35,0.35,0.35),false)
2439
MakeForm(Part,"Cyl")
2440
CreateWeldOrSnapOrMotor("Weld", Handle, Handle, Part, CF(0, -0.6, 0.7) * ANGLES(RAD(90), RAD(0), RAD(0)), CF(0, 0, 0))
2441-
local Part = CreatePart(3, Weapon, "Metal", 0, 0, "Institutional White", "Part", VT(0.5,0.1,0.5),false)
2441+
local Part = CreatePart(3, Weapon, "Neon", 0, 0, "Institutional White", "Part", VT(0.5,0.1,0.5),false)
2442
MakeForm(Part,"Cyl")
2443
CreateWeldOrSnapOrMotor("Weld", Handle, Handle, Part, CF(0, -0.6, 1) * ANGLES(RAD(90), RAD(0), RAD(0)), CF(0, 0, 0))
2444-
local Part = CreatePart(3, Weapon, "Metal", 0, 0, "Institutional White", "Part", VT(0.5,0.1,0.45),false)
2444+
local Part = CreatePart(3, Weapon, "Neon", 0, 0, "Institutional White", "Part", VT(0.5,0.1,0.45),false)
2445
MakeForm(Part,"Cyl")
2446
CreateWeldOrSnapOrMotor("Weld", Handle, Handle, Part, CF(0, -0.6, 1.1) * ANGLES(RAD(90), RAD(0), RAD(0)), CF(0, 0, 0))
2447-
local Part = CreatePart(3, Weapon, "Metal", 0, 0, "Institutional White", "Part", VT(0.2,0.5,0.2),false)
2447+
local Part = CreatePart(3, Weapon, "Neon", 0, 0, "Institutional White", "Part", VT(0.2,0.5,0.2),false)
2448
MakeForm(Part,"Wedge")
2449
CreateWeldOrSnapOrMotor("Weld", Handle, Handle, Part, CF(0, -0.55, 0.2) * ANGLES(RAD(-135), RAD(0), RAD(0)), CF(0, -0.3, 0))
2450
local LASTPART = Handle
2451
for i = 1, 10 do
2452
	if LASTPART == Handle then
2453-
		local Part = CreatePart(3, Weapon, "Metal", 0, 0, "Institutional White", "Part", VT(0.1,0.2,0),false)
2453+
		local Part = CreatePart(3, Weapon, "Plastic", 0, 0, "Institutional White", "Part", VT(0.1,0.2,0),false)
2454
		LASTPART = Part
2455
		CreateWeldOrSnapOrMotor("Weld", Handle, Handle, Part, CF(0, -0.1, 0.2) * ANGLES(RAD(90), RAD(0), RAD(0)), CF(0, 0, 0))
2456
	else
2457-
		local Part = CreatePart(3, Weapon, "Metal", 0, 0, "Institutional White", "Part", VT(0.1,0.05,0),false)
2457+
		local Part = CreatePart(3, Weapon, "Plastic", 0, 0, "Institutional White", "Part", VT(0.1,0.05,0),false)
2458
		CreateWeldOrSnapOrMotor("Weld", Handle, LASTPART, Part, CF(0, 0.025, 0) * ANGLES(RAD(8), RAD(0), RAD(0)), CF(0, -0.025, 0))
2459
		LASTPART = Part
2460
	end
2461
end
2462
2463-
local Barrel = CreatePart(3, Weapon, "Metal", 0, 0, "Institutional White", "Part", VT(0.15,2,0.15),false)
2463+
local Barrel = CreatePart(3, Weapon, "Plastic", 0, 0, "Institutional White", "Part", VT(0.15,2,0.15),false)
2464
MakeForm(Barrel,"Cyl")
2465
CreateWeldOrSnapOrMotor("Weld", Handle, Handle, Barrel, CF(0, -0.6, 1.8) * ANGLES(RAD(90), RAD(0), RAD(0)), CF(0, 0, 0))
2466
local Part = CreatePart(3, Weapon, "Metal", 0, 0, "Bright Yellow", "Part", VT(0.25,1,0.25),false)
2467
MakeForm(Part,"Cyl")
2468
CreateWeldOrSnapOrMotor("Weld", Handle, Barrel, Part, CF(0, -0.6, 0), CF(0, 0, 0))
2469
local Part = CreatePart(3, Weapon, "Metal", 0, 0, "Bright Yellow", "Part", VT(0,0.1,0.2),false)
2470
MakeForm(Part,"Wedge")
2471
CreateWeldOrSnapOrMotor("Weld", Handle, Barrel, Part, CF(0, 0.945, 0.1) * ANGLES(RAD(180), RAD(0), RAD(0)), CF(0, 0, 0))
2472
local Hole = CreatePart(3, Weapon, "Metal", 0, 0, "Bright Yellow", "Eye", VT(0.125,0,0.125),false)
2473
MakeForm(Hole,"Cyl")
2474
CreateWeldOrSnapOrMotor("Weld", Handle, Barrel, Hole, CF(0, 0.98, 0), CF(0, 0, 0))
2475
local Part = CreatePart(3, Weapon, "Metal", 0, 0, "Bright Yellow", "Part", VT(0,0,0),false)
2476
local GEARWELD = CreateWeldOrSnapOrMotor("Weld", Handle, Handle, Part, CF(0, -0.6, 0.7), CF(0, 0, 0))
2477
CreateMesh("SpecialMesh", Part, "FileMesh", 156292343, "", VT(0.8,0.8,1.5), VT(0,0,0.2))
2478
local Part = CreatePart(3, Weapon, "Metal", 0, 0.5, "Bright Yellow", "Eye", VT(0,0,0),false)
2479
local GEARWELD2 = CreateWeldOrSnapOrMotor("Weld", Handle, Handle, Part, CF(0, -0.6, 0.7), CF(0, 0, 0))
2480
CreateMesh("SpecialMesh", Part, "FileMesh", 156292343, "", VT(0.9,0.9,0.3), VT(0,0,0.2))
2481
coroutine.resume(coroutine.create(function()
2482
	while wait() do
2483
		GEARWELD.C0 = GEARWELD.C0 * ANGLES(RAD(0), RAD(0), RAD(5))
2484
		GEARWELD2.C0 = GEARWELD2.C0 * ANGLES(RAD(0), RAD(0), RAD(-5))
2485
	end
2486
end))
2487
2488
ParticleEmitter({Speed = 0.2, Drag = 0, Size1 = 0.7, Size2 = 0, Lifetime1 = 0.7, Lifetime2 = 0.7, Parent = Hole, Emit = 100, Offset = 360, Enabled = true, Acel = VT(0,5,0)})
2489
--ParticleEmitter({Speed = 0.5, Drag = 0, Size1 = 10, Size2 = 0, Lifetime1 = 0.8, Lifetime2 = 0.9, Parent = Dangle, Emit = 100, Offset = 360, Enabled = true, Acel = VT(0,5,0)})
2490
2491
for _, c in pairs(Weapon:GetDescendants()) do
2492
	if c.ClassName == "Part" and c.Name ~= "Eye" and c.Parent ~= Effects and c.Parent.Parent ~= Effects then
2493
		c.Material = "Glass"
2494
		c.Color = C3(242, 243, 243)
2495
	elseif c.ClassName == "Part" and c.Name == "Eye" then
2496
		c.Color = C3(242, 243, 243)
2497
		c.Material = "Neon"
2498
	end
2499
end
2500
2501
Weapon.Parent = Character
2502
for _, c in pairs(Weapon:GetChildren()) do
2503
	if c.ClassName == "Part" then
2504
		c.CustomPhysicalProperties = PhysicalProperties.new(0, 0, 0, 0, 0)
2505
	end
2506
end
2507
2508
local SKILLTEXTCOLOR = C3(1,0,0)
2509
local SKILLFONT = "Antique"
2510
local SKILLTEXTSIZE = 7
2511
2512
Humanoid.Died:connect(function()
2513
	ATTACK = true
2514
end)
2515
2516
local SKILL1FRAME = CreateFrame(WEAPONGUI, 1, 2, UD2(0.1, 0, 0.90, 0), UD2(0.26, 0, 0.07, 0), C3(0,0,0), C3(0, 0, 0), "Skill 1 Frame")
2517
--[[local SKILL2FRAME = CreateFrame(WEAPONGUI, 1, 2, UD2(0.63, 0, 0.90, 0), UD2(0.26, 0, 0.07, 0), C3(0,0,0), C3(0, 0, 0), "Skill 2 Frame")
2518
local SKILL3FRAME = CreateFrame(WEAPONGUI, 1, 2, UD2(0.215, 0, 0.90, 0), UD2(0.26, 0, 0.07, 0), C3(0,0,0), C3(0, 0, 0), "Skill 3 Frame")
2519
local SKILL4FRAME = CreateFrame(WEAPONGUI, 1, 2, UD2(0.525, 0, 0.90, 0), UD2(0.26, 0, 0.07, 0), C3(0,0,0), C3(0, 0, 0), "Skill 4 Frame")
2520
local SKILL5FRAME = CreateFrame(WEAPONGUI, 1, 2, UD2(0.365, 0, 0.90, 0), UD2(0.26, 0, 0.07, 0), C3(0,0,0), C3(0, 0, 0), "Skill 5 Frame")
2521
]]
2522
local SKILL1TEXT = CreateLabel(SKILL1FRAME, "[Z] Banisher Bullet", SKILLTEXTCOLOR, SKILLTEXTSIZE, SKILLFONT, 0, 2, 0.7, "Text 1")
2523
--[[local SKILL2TEXT = CreateLabel(SKILL2FRAME, "[B] Ability 2", SKILLTEXTCOLOR, SKILLTEXTSIZE, SKILLFONT, 0, 2, 0.7, "Text 2")
2524
local SKILL3TEXT = CreateLabel(SKILL3FRAME, "[C] Ability 3", SKILLTEXTCOLOR, SKILLTEXTSIZE, SKILLFONT, 0, 2, 0.7, "Text 3")
2525
local SKILL4TEXT = CreateLabel(SKILL4FRAME, "[V] Ability 4", SKILLTEXTCOLOR, SKILLTEXTSIZE, SKILLFONT, 0, 2, 0.7, "Text 4")
2526
local SKILL5TEXT = CreateLabel(SKILL5FRAME, "[X] Mercy", SKILLTEXTCOLOR, SKILLTEXTSIZE, SKILLFONT, 0, 2, 0.7, "Text 5")
2527
]]
2528
function printbye(Name)
2529
	local MESSAGES = {"You cannot struggle, ","Your existance is an insult, ","Fade, ","Your existance is not desired, ","You are not permitted here, ","You are not to decide your fate, ","Be gone, ","You are already dead, ","Your live is an anomaly, ","Don't dare to return, ","Why are you resisting, ","You cannot exist here, ","Why are you struggling, ","Your fate was already decided, ","Goodbye, ","You cannot ignore my command, ","You cannot resist my command, ","You already died, "}
2530
	warn(MESSAGES[MRANDOM(1,#MESSAGES)]..Name..".")	
2531
end
2532
2533
workspace.ChildAdded:connect(function(instance)
2534
    for BANISH = 1, #TOBANISH do
2535
		if TOBANISH[BANISH] ~= nil then
2536
			if instance.Name == TOBANISH[BANISH] then
2537
				coroutine.resume(coroutine.create(function()
2538
					printbye(instance.Name)
2539
					instance:ClearAllChildren()
2540
					Debris:AddItem(instance,0.0005)
2541
				end))
2542
			end
2543
		end
2544
	end
2545
end)
2546
2547
function refit()
2548
	Character.Parent = workspace
2549
	for e = 1, #BODY do
2550
		if BODY[e] ~= nil then
2551
			local STUFF = BODY[e]
2552
			local PART = STUFF[1]
2553
			local PARENT = STUFF[2]
2554
			local MATERIAL = STUFF[3]
2555
			local COLOR = STUFF[4]
2556
			local TRANSPARENCY = STUFF[5]
2557
			if PART.ClassName == "Part" and PART ~= RootPart then
2558
				PART.Material = MATERIAL
2559
				PART.Color = COLOR
2560
				PART.Transparency = TRANSPARENCY
2561
			end
2562
			if PART.Parent ~= PARENT then
2563
				Humanoid:remove()
2564
				PART.Parent = PARENT
2565
				Humanoid = IT("Humanoid",Character)
2566
			end
2567
		end
2568
	end
2569
end
2570
--//=================================\\
2571
--||	     DAMAGE FUNCTIONS
2572
--\\=================================//
2573
function StatLabel(LABELTYPE, CFRAME, TEXT, COLOR)
2574
	local STATPART = CreatePart(3, Effects, "SmoothPlastic", 0, 1, "Institutional White", "Effect", VT())
2575
	STATPART.CFrame = CF(CFRAME.p + VT(0, 1.5, 0))
2576
	local BODYGYRO = IT("BodyGyro", STATPART)
2577
	local BODYPOSITION = IT("BodyPosition", STATPART)
2578
	BODYPOSITION.P = 2000
2579
	BODYPOSITION.D = 100
2580
	BODYPOSITION.maxForce = VT(math.huge, math.huge, math.huge)
2581
	BODYPOSITION.position = STATPART.Position + VT(MRANDOM(-2, 2), 6, MRANDOM(-2, 2))
2582
	game:GetService("Debris"):AddItem(STATPART ,5)
2583
	local BILLBOARDGUI = Instance.new("BillboardGui", STATPART)
2584
	BILLBOARDGUI.Adornee = STATPART
2585
	BILLBOARDGUI.Size = UD2(2.5, 0, 2.5 ,0)
2586
	BILLBOARDGUI.StudsOffset = VT(-2, 2, 0)
2587
	BILLBOARDGUI.AlwaysOnTop = false
2588
	local TEXTLABEL = Instance.new("TextLabel", BILLBOARDGUI)
2589
	TEXTLABEL.BackgroundTransparency = 1
2590
	TEXTLABEL.Size = UD2(2.5, 0, 2.5, 0)
2591
	TEXTLABEL.Text = TEXT
2592
	TEXTLABEL.Font = "SciFi"
2593
	TEXTLABEL.FontSize="Size42"
2594
	TEXTLABEL.TextColor3 = ("255,215,0")
2595
	TEXTLABEL.TextStrokeTransparency = 1
2596
	TEXTLABEL.TextScaled = true
2597
	TEXTLABEL.TextWrapped = true
2598
	coroutine.resume(coroutine.create(function(THEPART, THEBODYPOSITION, THETEXTLABEL)
2599
		if LABELTYPE == "Normal" then
2600
			for i = 1, 30 do
2601
				Swait()
2602
				STATPART.Position = STATPART.Position + VT(0, (15-i)/10 ,0)
2603
				TEXTLABEL.TextTransparency = TEXTLABEL.TextTransparency + (1/30)
2604
			end
2605
		elseif LABELTYPE == "Debuff" then
2606
			for i = 1, 30 do
2607
				Swait()
2608
				STATPART.Position = STATPART.Position - VT(0, i/10 ,0)
2609
				TEXTLABEL.TextTransparency = TEXTLABEL.TextTransparency + (1/30)
2610
			end
2611
		elseif LABELTYPE == "Shock" then
2612
			local ORIGIN = STATPART.Position
2613
			for i = 1, 30 do
2614
				Swait()
2615
				STATPART.Position = ORIGIN + VT(MRANDOM(-2,2),MRANDOM(-2,2),MRANDOM(-2,2))
2616
				TEXTLABEL.TextTransparency = TEXTLABEL.TextTransparency + (1/30)
2617
			end
2618
		end
2619
		THEPART.Parent = nil
2620
	end),STATPART, BODYPOSITION, TEXTLABEL)
2621
end
2622
2623
function StatLabel(CFRAME, TEXT, COLOR)
2624
	local STATPART = CreatePart(3, Effects, "SmoothPlastic", 0, 1, "Institutional White", "Effect", VT())
2625
	STATPART.CFrame = CF(CFRAME.p,CFRAME.p+VT(MRANDOM(-5,5),MRANDOM(0,5),MRANDOM(-5,5)))
2626
	local BODYGYRO = IT("BodyGyro", STATPART)
2627
	game:GetService("Debris"):AddItem(STATPART ,5)
2628
	local BILLBOARDGUI = Instance.new("BillboardGui", STATPART)
2629
	BILLBOARDGUI.Adornee = STATPART
2630
	BILLBOARDGUI.Size = UD2(2.5, 0, 2.5 ,0)
2631
	BILLBOARDGUI.StudsOffset = VT(-2, 2, 0)
2632
	BILLBOARDGUI.AlwaysOnTop = false
2633
	local TEXTLABEL = Instance.new("TextLabel", BILLBOARDGUI)
2634
	TEXTLABEL.BackgroundTransparency = 1
2635
	TEXTLABEL.Size = UD2(2.5, 0, 2.5, 0)
2636
	TEXTLABEL.Text = TEXT
2637
	TEXTLABEL.Font = SKILLFONT
2638
	TEXTLABEL.FontSize="Size42"
2639
	TEXTLABEL.TextColor3 = COLOR
2640
	TEXTLABEL.TextStrokeTransparency = 0
2641
	TEXTLABEL.TextScaled = true
2642
	TEXTLABEL.TextWrapped = true
2643
	coroutine.resume(coroutine.create(function(THEPART, THEBODYPOSITION, THETEXTLABEL)
2644
		for i = 1, 50 do
2645
			Swait()
2646
			STATPART.CFrame = STATPART.CFrame * CF(0,0,-0.2)
2647
			TEXTLABEL.TextTransparency = TEXTLABEL.TextTransparency + (1/50)
2648
			TEXTLABEL.TextStrokeTransparency = TEXTLABEL.TextTransparency
2649
		end
2650
		THEPART.Parent = nil
2651
	end),STATPART, TEXTLABEL)
2652
end
2653
2654
function StatLabel(CFRAME, TEXT, COLOR)
2655
	local STATPART = CreatePart(3, Effects, "SmoothPlastic", 0, 1, "Institutional White", "Effect", VT())
2656
	STATPART.CFrame = CF(CFRAME.p,CFRAME.p+VT(MRANDOM(-5,5),MRANDOM(0,5),MRANDOM(-5,5)))
2657
	local BODYGYRO = IT("BodyGyro", STATPART)
2658
	game:GetService("Debris"):AddItem(STATPART ,5)
2659
	local BILLBOARDGUI = Instance.new("BillboardGui", STATPART)
2660
	BILLBOARDGUI.Adornee = STATPART
2661
	BILLBOARDGUI.Size = UD2(2.5, 0, 2.5 ,0)
2662
	BILLBOARDGUI.StudsOffset = VT(-2, 2, 0)
2663
	BILLBOARDGUI.AlwaysOnTop = false
2664
	local TEXTLABEL = Instance.new("TextLabel", BILLBOARDGUI)
2665
	TEXTLABEL.BackgroundTransparency = 1
2666
	TEXTLABEL.Size = UD2(2.5, 0, 2.5, 0)
2667
	TEXTLABEL.Text = TEXT
2668
	TEXTLABEL.Font = SKILLFONT
2669
	TEXTLABEL.FontSize="Size42"
2670
	TEXTLABEL.TextColor3 = COLOR
2671
	TEXTLABEL.TextStrokeTransparency = 0
2672
	TEXTLABEL.TextScaled = true
2673
	TEXTLABEL.TextWrapped = true
2674
	coroutine.resume(coroutine.create(function(THEPART, THEBODYPOSITION, THETEXTLABEL)
2675
		for i = 1, 50 do
2676
			Swait()
2677
			STATPART.CFrame = STATPART.CFrame * CF(0,0,-0.2)
2678
			TEXTLABEL.TextTransparency = TEXTLABEL.TextTransparency + (1/50)
2679
			TEXTLABEL.TextStrokeTransparency = TEXTLABEL.TextTransparency
2680
		end
2681
		THEPART.Parent = nil
2682
	end),STATPART, TEXTLABEL)
2683
end
2684
2685
function StatLabel(CFRAME, TEXT, COLOR)
2686
	local STATPART = CreatePart(3, Effects, "SmoothPlastic", 0, 1, "Institutional White", "Effect", VT())
2687
	STATPART.CFrame = CF(CFRAME.p,CFRAME.p+VT(MRANDOM(-5,5),MRANDOM(0,5),MRANDOM(-5,5)))
2688
	local BODYGYRO = IT("BodyGyro", STATPART)
2689
	game:GetService("Debris"):AddItem(STATPART ,5)
2690
	local BILLBOARDGUI = Instance.new("BillboardGui", STATPART)
2691
	BILLBOARDGUI.Adornee = STATPART
2692
	BILLBOARDGUI.Size = UD2(2.5, 0, 2.5 ,0)
2693
	BILLBOARDGUI.StudsOffset = VT(-2, 2, 0)
2694
	BILLBOARDGUI.AlwaysOnTop = false
2695
	local TEXTLABEL = Instance.new("TextLabel", BILLBOARDGUI)
2696
	TEXTLABEL.BackgroundTransparency = 1
2697
	TEXTLABEL.Size = UD2(2.5, 0, 2.5, 0)
2698
	TEXTLABEL.Text = TEXT
2699
	TEXTLABEL.Font = SKILLFONT
2700
	TEXTLABEL.FontSize="Size42"
2701
	TEXTLABEL.TextColor3 = COLOR
2702
	TEXTLABEL.TextStrokeTransparency = 1
2703
	TEXTLABEL.TextScaled = true
2704
	TEXTLABEL.TextWrapped = true
2705
	coroutine.resume(coroutine.create(function(THEPART, THEBODYPOSITION, THETEXTLABEL)
2706
		for i = 1, 50 do
2707
			Swait()
2708
			STATPART.CFrame = STATPART.CFrame * CF(0,0,-0.2)
2709
			TEXTLABEL.TextTransparency = TEXTLABEL.TextTransparency + (1/50)
2710
		end
2711
		THEPART.Parent = nil
2712
	end),STATPART, TEXTLABEL)
2713
end
2714
--//=================================\\
2715
--||			DAMAGING
2716
--\\=================================//
2717
function killnearest(position,range,maxstrength,direction)
2718
	for i,v in ipairs(workspace:GetChildren()) do
2719
	local body = v:GetChildren()
2720
		for part = 1, #body do
2721
			if((body[part].ClassName == "Part" or body[part].ClassName == "MeshPart") and v ~= Character) then
2722
				if(body[part].Position - position).Magnitude < range then
2723
					if v.ClassName == "Model" then
2724
						--v:BreakJoints()
2725
					end
2726
					local POS = position
2727
					coroutine.resume(coroutine.create(function()
2728
						body[part].Anchored = true
2729
						body[part].Parent = Effects
2730
						body[part].CanCollide = true
2731
						local SIZE = body[part].Size
2732
						body[part].Material = "Neon"
2733
						CreateSound("952306739", body[part], 2, MRANDOM(7, 12) / 10)
2734
						for i = 1, 75 do
2735
							Swait()
2736
							body[part].Color = C3(MRANDOM(0,100)/100,MRANDOM(0,100)/100,MRANDOM(0,100)/100)
2737
							body[part].Size = VT(SIZE.X+MRANDOM(-2,2),SIZE.Y+MRANDOM(-2,2),SIZE.Z+MRANDOM(-2,2))
2738
						end
2739
						coroutine.resume(coroutine.create(function()
2740
							while true do
2741
								Swait()
2742
								body[part].Color = C3(MRANDOM(0,100)/100,MRANDOM(0,100)/100,MRANDOM(0,100)/100)
2743
								body[part].Size = VT(SIZE.X+MRANDOM(-2,2),SIZE.Y+MRANDOM(-2,2),SIZE.Z+MRANDOM(-2,2))
2744
							end
2745
						end))
2746
						body[part].Anchored = false
2747
						body[part].Velocity = direction.lookVector*maxstrength
2748
					end))
2749
				end
2750
			end
2751
		end
2752
		if v.ClassName == "Part" then
2753
			if v.Anchored == false and (v.Position - position).Magnitude < range then
2754
				local POS = position
2755
				coroutine.resume(coroutine.create(function()
2756
					v.Anchored = true
2757
					v.Parent = Effects
2758
					local SIZE = v.Size
2759
					v.Material = "Neon"
2760
					CreateSound("952306739", v, 2, MRANDOM(7, 12) / 10)
2761
					for i = 1, 75 do
2762
						Swait()
2763
						v.Color = C3(MRANDOM(0,100)/100,MRANDOM(0,100)/100,MRANDOM(0,100)/100)
2764
						v.Size = VT(SIZE.X+MRANDOM(-2,2),SIZE.Y+MRANDOM(-2,2),SIZE.Z+MRANDOM(-2,2))
2765
					end
2766
					coroutine.resume(coroutine.create(function()
2767
						while true do
2768
							Swait()
2769
							v.Color = C3(MRANDOM(0,100)/100,MRANDOM(0,100)/100,MRANDOM(0,100)/100)
2770
							v.Size = VT(SIZE.X+MRANDOM(-2,2),SIZE.Y+MRANDOM(-2,2),SIZE.Z+MRANDOM(-2,2))
2771
						end
2772
					end))
2773
					v.Anchored = false
2774
					v.Velocity = direction.lookVector*maxstrength
2775
				end))
2776
			end
2777
		end
2778
	end
2779
end
2780
2781
function Kill(Char)
2782
	local NewCharacter = IT("Model",Effects)
2783
	NewCharacter.Name = "Ow im ded ;-;"
2784
	for _, c in pairs(Char:GetDescendants()) do
2785
		if c:IsA("BasePart") and c.Transparency == 0 then
2786
			if c.Parent == Char then
2787
				getbloody(c,5)
2788
			end
2789
			c:BreakJoints()
2790
			c.Material = "Glass"
2791
			c.Color = C3(0.5,0,0)
2792
			c.CanCollide = true
2793
			c.Transparency = 0.3
2794
			if c:FindFirstChildOfClass("SpecialMesh") then
2795
				c:FindFirstChildOfClass("SpecialMesh").TextureId = ""
2796
			end
2797
			if c.Name == "Head" then
2798
				c:ClearAllChildren()
2799
				c.Size = VT(c.Size.Y,c.Size.Y,c.Size.Y)
2800
			end
2801
			if c.ClassName == "MeshPart" then
2802
				c.TextureID = ""
2803
			end
2804
			if c:FindFirstChildOfClass("BodyPosition") then
2805
				c:FindFirstChildOfClass("BodyPosition"):remove()
2806
			end
2807
			if c:FindFirstChildOfClass("ParticleEmitter") then
2808
				c:FindFirstChildOfClass("ParticleEmitter"):remove()
2809
			end
2810
			c.Parent = NewCharacter
2811
			c.Name = "DeadPart"
2812
			c.Velocity = VT(MRANDOM(-45,45),MRANDOM(-45,45),MRANDOM(-45,45))/15
2813
			c.RotVelocity = VT(MRANDOM(-45,45),MRANDOM(-15,85),MRANDOM(-45,45))
2814
		end
2815
	end
2816
	Char:remove()
2817
	Debris:AddItem(NewCharacter,5)
2818
end
2819
2820
function ApplyAoE(POSITION,RANGE,BRUTAL)
2821
	local CHILDREN = workspace:GetDescendants()
2822
	for index, CHILD in pairs(CHILDREN) do
2823
		if CHILD.ClassName == "Model" and CHILD ~= Character then
2824
			local HUM = CHILD:FindFirstChildOfClass("Humanoid")
2825
			if HUM then
2826
				local TORSO = CHILD:FindFirstChild("Torso") or CHILD:FindFirstChild("UpperTorso")
2827
				if TORSO then
2828
					if (TORSO.Position - POSITION).Magnitude <= RANGE then
2829
						if BRUTAL == true then
2830
							Kill(CHILD)
2831
						else
2832
							CHILD:BreakJoints()
2833
						end
2834
					end
2835
				end
2836
			end
2837
		end
2838
	end
2839
end
2840
2841
function Kill(Char)
2842
	local NewCharacter = IT("Model",Effects)
2843
	NewCharacter.Name = "Ow im ded ;-;"
2844
	for _, c in pairs(Char:GetDescendants()) do
2845
		if c:IsA("BasePart") and c.Transparency == 0 then
2846
			if c.Parent == Char then
2847
				getbloody(c,5)
2848
			end
2849
			c:BreakJoints()
2850
			c.Material = "Glass"
2851
			c.Color = C3(0.5,0,0)
2852
			c.CanCollide = true
2853
			c.Transparency = 0.3
2854
			if c:FindFirstChildOfClass("SpecialMesh") then
2855
				c:FindFirstChildOfClass("SpecialMesh").TextureId = ""
2856
			end
2857
			if c.Name == "Head" then
2858
				c:ClearAllChildren()
2859
				c.Size = VT(c.Size.Y,c.Size.Y,c.Size.Y)
2860
			end
2861
			if c.ClassName == "MeshPart" then
2862
				c.TextureID = ""
2863
			end
2864
			if c:FindFirstChildOfClass("BodyPosition") then
2865
				c:FindFirstChildOfClass("BodyPosition"):remove()
2866
			end
2867
			if c:FindFirstChildOfClass("ParticleEmitter") then
2868
				c:FindFirstChildOfClass("ParticleEmitter"):remove()
2869
			end
2870
			c.Parent = NewCharacter
2871
			c.Name = "DeadPart"
2872
			c.Velocity = VT(MRANDOM(-45,45),MRANDOM(-45,45),MRANDOM(-45,45))/15
2873
			c.RotVelocity = VT(MRANDOM(-45,45),MRANDOM(-15,85),MRANDOM(-45,45))
2874
		end
2875
	end
2876
	Char:remove()
2877
	Debris:AddItem(NewCharacter,5)
2878
end
2879
2880
function ApplyAoE(POSITION,RANGE,BRUTAL)
2881
	local CHILDREN = workspace:GetDescendants()
2882
	for index, CHILD in pairs(CHILDREN) do
2883
		if CHILD.ClassName == "Model" and CHILD ~= Character then
2884
			local HUM = CHILD:FindFirstChildOfClass("Humanoid")
2885
			if HUM then
2886
				local TORSO = CHILD:FindFirstChild("Torso") or CHILD:FindFirstChild("UpperTorso")
2887
				if TORSO then
2888
					if (TORSO.Position - POSITION).Magnitude <= RANGE then
2889
						if BRUTAL == true then
2890
							Kill(CHILD)
2891
						else
2892
							CHILD:BreakJoints()
2893
						end
2894
					end
2895
				end
2896
			end
2897
		end
2898
	end
2899
end
2900
2901
function Kill(Char)
2902
	local NewCharacter = IT("Model",Effects)
2903
	NewCharacter.Name = "Ow im ded ;-;"
2904
	for _, c in pairs(Char:GetDescendants()) do
2905
		if c:IsA("BasePart") and c.Transparency == 0 then
2906
			if c.Parent == Char then
2907
				getbloody(c,5)
2908
			end
2909
			c:BreakJoints()
2910
			c.Material = "Glass"
2911
			c.Color = C3(0.5,0,0)
2912
			c.CanCollide = true
2913
			c.Transparency = 0.3
2914
			if c:FindFirstChildOfClass("SpecialMesh") then
2915
				c:FindFirstChildOfClass("SpecialMesh").TextureId = ""
2916
			end
2917
			if c.Name == "Head" then
2918
				c:ClearAllChildren()
2919
				c.Size = VT(c.Size.Y,c.Size.Y,c.Size.Y)
2920
			end
2921
			if c.ClassName == "MeshPart" then
2922
				c.TextureID = ""
2923
			end
2924
			if c:FindFirstChildOfClass("BodyPosition") then
2925
				c:FindFirstChildOfClass("BodyPosition"):remove()
2926
			end
2927
			if c:FindFirstChildOfClass("ParticleEmitter") then
2928
				c:FindFirstChildOfClass("ParticleEmitter"):remove()
2929
			end
2930
			c.Parent = NewCharacter
2931
			c.Name = "DeadPart"
2932
			c.Velocity = VT(MRANDOM(-45,45),MRANDOM(-45,45),MRANDOM(-45,45))/15
2933
			c.RotVelocity = VT(MRANDOM(-45,45),MRANDOM(-15,85),MRANDOM(-45,45))
2934
		end
2935
	end
2936
	Char:remove()
2937
	Debris:AddItem(NewCharacter,5)
2938
end
2939
2940
function ApplyAoE(POSITION,RANGE,BRUTAL)
2941
	local CHILDREN = workspace:GetDescendants()
2942
	for index, CHILD in pairs(CHILDREN) do
2943
		if CHILD.ClassName == "Model" and CHILD ~= Character then
2944
			local HUM = CHILD:FindFirstChildOfClass("Humanoid")
2945
			if HUM then
2946
				local TORSO = CHILD:FindFirstChild("Torso") or CHILD:FindFirstChild("UpperTorso")
2947
				if TORSO then
2948
					if (TORSO.Position - POSITION).Magnitude <= RANGE then
2949
						if BRUTAL == true then
2950
							Kill(CHILD)
2951
						else
2952
							CHILD:BreakJoints()
2953
						end
2954
					end
2955
				end
2956
			end
2957
		end
2958
	end
2959
end
2960
2961
function BulletDetection(FROM,TO,BRUTAL)
2962
	local AIMHIT,AIMPOS,NORMAL = CastProperRay(FROM,TO,2000,Character)
2963
	coroutine.resume(coroutine.create(function()
2964
		if AIMHIT ~= nil then
2965
			if AIMHIT.Parent ~= Character then
2966
				if AIMHIT.Parent:FindFirstChildOfClass("Humanoid") or AIMHIT.Parent.Parent:FindFirstChildOfClass("Humanoid") then
2967
					if AIMHIT.Parent:FindFirstChildOfClass("Humanoid") then
2968
						if BRUTAL == true then
2969
							Kill(AIMHIT.Parent)
2970
						else
2971
							getbloody(AIMHIT,15)
2972
							AIMHIT.Parent:BreakJoints()
2973
							if AIMHIT.Name == "Head" then
2974
								AIMHIT.Name = "HEADSHOT"
2975
								AIMHIT:remove()
2976
							end
2977
						end
2978
					else
2979
						if BRUTAL == true then
2980
							Kill(AIMHIT.Parent.Parent)
2981
						else
2982
							AIMHIT.Parent.Parent:BreakJoints()
2983
						end
2984
					end
2985
				end
2986
			end
2987
		end
2988
	end))
2989
	SpawnTrail(FROM,AIMPOS)
2990
	return AIMHIT,AIMPOS,NORMAL
2991
end
2992
2993
function ApplyDamage(Humanoid,Damage,CritRate,CritMultiplier,DoesOneShot)
2994
	coroutine.resume(coroutine.create(function()
2995
		local defence = Instance.new("BoolValue",Humanoid.Parent)
2996
		defence.Name = ("HitBy"..Player.Name)
2997
		game:GetService("Debris"):AddItem(defence, 0.001)
2998
		Damage = Damage * DAMAGEMULTIPLIER
2999
		if Humanoid.Health ~= 0 then
3000
			local CritChance = MRANDOM(1,100)
3001
			if CritChance < CritRate + 1 then
3002
				Damage = Damage*CritMultiplier
3003
			end
3004
			if Damage > Humanoid.Health then
3005
				Damage = math.ceil(Humanoid.Health)
3006
				if Damage == 0 then
3007
					Damage = 0.1
3008
				end
3009
			end
3010
			if DoesOneShot == false then
3011
				for _, c in pairs(Humanoid.Parent:GetChildren()) do
3012
					if c.Name ~= "HumanoidRootPart" and c.Name ~= "Torso" and c.Name ~= "Head" and c.Name ~= "UpperTorso" and c.Name ~= "LowerTorso" then
3013
						if c.ClassName == "Part" or c.ClassName == "MeshPart" then
3014
							if MRANDOM(1,20) == 1 then
3015
								Shatter(c)
3016
							end
3017
						end
3018
					end
3019
				end
3020
				Humanoid.Health = Humanoid.Health - Damage
3021
				if Humanoid.Parent:FindFirstChild("Head") then
3022
					CreateSound(HITPLAYERSOUNDS[MRANDOM(1,#HITPLAYERSOUNDS)], Humanoid.Parent.Head, 5, 1)
3023
					if CritChance < CritRate + 1 then
3024
						StatLabel(Humanoid.Parent.Head.CFrame * CF(0, 0 + (Humanoid.Parent.Head.Size.z - 1), 0), "CRIT//"..Damage, C3(1, 0, 0))
3025
					else
3026
						StatLabel(Humanoid.Parent.Head.CFrame * CF(0, 0 + (Humanoid.Parent.Head.Size.z - 1), 0), Damage, C3(0, 0, 0))
3027
					end
3028
				end
3029
			elseif DoesOneShot == true then
3030
				--print("["..Humanoid.Parent.Name.."]: One shot!? Really!?!?")
3031
				Humanoid.Parent:BreakJoints()
3032
				if Humanoid.Parent:FindFirstChild("Head") then
3033
					StatLabel(Humanoid.Parent.Head.CFrame * CF(0, 0 + (Humanoid.Parent.Head.Size.z - 1), 0), "INF", C3(1, 0, 0))
3034
				end
3035
				for _, c in pairs(Humanoid.Parent:GetChildren()) do
3036
					if c.ClassName == "Part" or c.ClassName == "MeshPart" then
3037
						Shatter(c)
3038
					end
3039
				end
3040
			end
3041
			if Humanoid.Health == 0 then
3042
				--print("["..Humanoid.Parent.Name.."]: It's like stepping on glass, but worse!")
3043
				SpawnSoul(Humanoid)
3044
				for _, c in pairs(Humanoid.Parent:GetChildren()) do
3045
					if c.ClassName == "Part" or c.ClassName == "MeshPart" then
3046
						Shatter(c)
3047
					end
3048
				end
3049
			end
3050
		end
3051
	end))
3052
end
3053
3054
function AoEDamage(position,radius,min,max,maxstrength,critrate,critmultiplier,BESERK)
3055
	local dmg = math.random(10000,100000)
3056
	for i,v in ipairs(workspace:GetChildren()) do
3057
	if v:FindFirstChild("HitBy"..Player.Name) == nil then
3058
		local body = v:GetChildren()
3059
			for part = 1, #body do
3060
				if(v:FindFirstChild("HitBy"..Player.Name) == nil and (body[part].ClassName == "Part" or body[part].ClassName == "MeshPart") and v ~= Character) then
3061
					if(body[part].Position - position).Magnitude < radius then
3062
						if v.ClassName == "Model" then
3063
							if v:FindFirstChildOfClass("Humanoid") then
3064
								ApplyDamage(v:FindFirstChildOfClass("Humanoid"),dmg,critrate,critmultiplier,BESERK)
3065
								local bv = Instance.new("BodyVelocity") 
3066
								bv.maxForce = Vector3.new(1e9, 1e9, 1e9)
3067
								bv.velocity = CF(position,body[part].Position).lookVector*maxstrength
3068
								bv.Parent = body[part]
3069
								Debris:AddItem(bv,0.2)
3070
							end
3071
						end
3072
					end
3073
				end
3074
			end
3075
		end
3076
		if v:FindFirstChild("HitBy"..Player.Name) then
3077
			v:FindFirstChild("HitBy"..Player.Name):remove()
3078
		end
3079
	end
3080
end
3081
3082
function Banish(Foe)
3083
	if Foe then
3084
		coroutine.resume(coroutine.create(function()
3085
			--if game.Players:FindFirstChild(Foe.Name) then
3086
				table.insert(TOBANISH,Foe.Name)
3087
				printbye(Foe.Name)
3088
			--end
3089
			Foe.Archivable = true
3090
			local CLONE = Foe:Clone()
3091
			Foe:Destroy()
3092
			CLONE.Parent = Effects
3093
			CLONE:BreakJoints()
3094
			local MATERIALS = {"Glass","Neon"}
3095
			for _, c in pairs(CLONE:GetDescendants()) do
3096
				if c:IsA("BasePart") then
3097
					if c.Name == "Torso" or c.Name == "UpperTorso" or c == CLONE.PrimaryPart then
3098
 						CreateSound(340722848, c, 10, 1, false)
3099
					end
3100
					c.Anchored = true
3101
					c.Transparency = c.Transparency + 0.2
3102
					c.Material = MATERIALS[MRANDOM(1,2)]
3103
					c.Color = C3(1,0,0)
3104
					if c.ClassName == "MeshPart" then
3105
						c.TextureID = ""
3106
					end
3107
					if c:FindFirstChildOfClass("SpecialMesh") then
3108
						c:FindFirstChildOfClass("SpecialMesh").TextureId = ""
3109
					end
3110
					if c:FindFirstChildOfClass("Decal") then
3111
						c:FindFirstChildOfClass("Decal"):remove()
3112
					end
3113
					c.Name = "Banished"
3114
					c.CanCollide = false
3115
				else
3116
					c:remove()
3117
				end
3118
			end
3119
			local A = false
3120
			for i = 1, 35 do
3121
				if A == false then
3122
					A = true
3123
				elseif A == true then
3124
					A = false
3125
				end
3126
				for _, c in pairs(CLONE:GetDescendants()) do
3127
					if c:IsA("BasePart") then
3128
						c.Anchored = true
3129
						c.Material = MATERIALS[MRANDOM(1,2)]
3130
						c.Transparency = c.Transparency + 0.8/35
3131
						if A == false then
3132
							c.CFrame = c.CFrame*CF(MRANDOM(-45,45)/45,MRANDOM(-45,45)/45,MRANDOM(-45,45)/45)
3133
						elseif A == true then
3134
							c.CFrame = c.CFrame*CF(MRANDOM(-45,45)/45,MRANDOM(-45,45)/45,MRANDOM(-45,45)/45)						
3135
						end
3136
					end
3137
				end
3138
				Swait()
3139
			end
3140
			CLONE:remove()
3141
		end))
3142
	end
3143
end
3144
3145
function ApplyAoE(POSITION,RANGE,ISBANISH)
3146
	local CHILDREN = workspace:GetDescendants()
3147
	for index, CHILD in pairs(CHILDREN) do
3148
		if CHILD.ClassName == "Model" and CHILD ~= Character then
3149
			local HUM = CHILD:FindFirstChildOfClass("Humanoid")
3150
			if HUM then
3151
				local TORSO = CHILD:FindFirstChild("Torso") or CHILD:FindFirstChild("UpperTorso")
3152
				if TORSO then
3153
					if (TORSO.Position - POSITION).Magnitude <= RANGE then
3154
						if ISBANISH == true then
3155
							Banish(CHILD)
3156
						else
3157
							if ISBANISH == "Gravity" then
3158
								HUM.PlatformStand = true
3159
								if TORSO:FindFirstChild("V3BanishForce"..Player.Name) then
3160
									local grav = Instance.new("BodyPosition",TORSO)
3161
									grav.D = 15
3162
									grav.P = 20000
3163
									grav.maxForce = Vector3.new(math.huge,math.huge,math.huge)
3164
									grav.position = TORSO.Position
3165
									grav.Name = "V3BanishForce"..Player.Name
3166
								else
3167
									TORSO:FindFirstChild("V3BanishForce"..Player.Name).position = TORSO.Position+VT(0,0.3,0)
3168
									TORSO.RotVelocity = VT(MRANDOM(-25,25),MRANDOM(-25,25),MRANDOM(-25,25))
3169
								end
3170
							else
3171
								HUM.PlatformStand = false
3172
							end
3173
						end
3174
					elseif ISBANISH == "Gravity" then
3175
						if TORSO:FindFirstChild("V3BanishForce"..Player.Name) then
3176
							TORSO:FindFirstChild("V3BanishForce"..Player.Name):remove()
3177
							HUM.PlatformStand = false
3178
						end
3179
					end
3180
				end
3181
			end
3182
		end
3183
	end
3184
end
3185
3186
--//=================================\\
3187
--||	ATTACK FUNCTIONS AND STUFF
3188
--\\=================================//
3189
function FireArc(Part,ToLocation,AmountOfTime,Height,DoesCourontine)
3190
    if DoesCourontine == false then
3191
        local Direction = CF(Part.Position,ToLocation)
3192
        local Distance = (Part.Position - ToLocation).magnitude
3193
        for i = 1, AmountOfTime do
3194
            Swait()
3195
            Part.CFrame = Direction*CF(0,(AmountOfTime/200)+((AmountOfTime/Height)-((i*2)/Height)),-Distance/AmountOfTime)
3196
            Direction = Part.CFrame
3197
        end
3198
        Part:remove()
3199
    elseif DoesCourontine == true then
3200
        coroutine.resume(coroutine.create(function()
3201
            local Direction = CF(Part.Position,ToLocation)
3202
            local Distance = (Part.Position - ToLocation).magnitude
3203
            for i = 1, AmountOfTime do
3204
                Swait()
3205
                Part.CFrame = Direction*CF(0,(AmountOfTime/200)+((AmountOfTime/Height)-((i*2)/Height)),-Distance/AmountOfTime)
3206
                Direction = Part.CFrame
3207
            end
3208
            Part:remove()
3209
        end))
3210
    end
3211
end
3212
3213
function Slice(KIND,SIZE,WAIT,CFRAME,COLOR,GROW)
3214
    local wave = CreatePart(3, Effects, "Neon", 0, 0.5, BRICKC(COLOR), "Effect", VT(1,1,1), true)
3215
    local mesh = nil
3216
    if KIND == "Base" then
3217
        mesh = CreateMesh("SpecialMesh", wave, "FileMesh", "448386996", "", VT(0,SIZE/10,SIZE/10), VT(0,0,0))
3218
    elseif KIND == "Thin" then
3219
        mesh = CreateMesh("SpecialMesh", wave, "FileMesh", "662586858", "", VT(SIZE/10,0,SIZE/10), VT(0,0,0))
3220
    elseif KIND == "Round" then
3221
        mesh = CreateMesh("SpecialMesh", wave, "FileMesh", "662585058", "", VT(SIZE/10,0,SIZE/10), VT(0,0,0))
3222
    end
3223
    wave.CFrame = CFRAME
3224
    coroutine.resume(coroutine.create(function(PART)
3225
        for i = 1, WAIT do
3226
            Swait()
3227
            mesh.Scale = mesh.Scale + GROW/10
3228
            wave.Transparency = wave.Transparency + (0.5/WAIT)
3229
            if wave.Transparency > 0.99 then
3230
                wave:remove()
3231
            end
3232
        end
3233
    end))
3234
end
3235
3236
function killnearest(position,range,maxstrength)
3237
    for i,v in ipairs(workspace:GetChildren()) do
3238
    local body = v:GetChildren()
3239
        for part = 1, #body do
3240
            if((body[part].ClassName == "Part" or body[part].ClassName == "MeshPart") and v ~= Character) then
3241
                if(body[part].Position - position).Magnitude < range then
3242
                    if v.ClassName == "Model" then
3243
                        v:BreakJoints()
3244
                    end
3245
                    --table.insert(Effects2,{body[part],"Disappear",0.02,2,2,2,2})
3246
                    local bv = Instance.new("BodyVelocity")
3247
                    bv.maxForce = Vector3.new(1e9, 1e9, 1e9)
3248
                    bv.velocity = CF(position,body[part].Position).lookVector*maxstrength
3249
                    bv.Parent = body[part]
3250
                    Debris:AddItem(bv,0.2)
3251
                end
3252
            end
3253
        end
3254
        if v.ClassName == "Part" then
3255
            if v.Anchored == false and (v.Position - position).Magnitude < range then
3256
                --table.insert(Effects2,{v,"Disappear",0.02,2,2,2,2})
3257
                v.Velocity = CFrame.new(position,v.Position).lookVector*5*maxstrength
3258
            end
3259
        end
3260
    end
3261
end
3262
3263
function Supernova()
3264
    local HITFLOOR,HITPOS,NORMAL = Raycast(RootPart.Position, (CF(RootPart.Position, RootPart.Position + VT(0, -1, 0))).lookVector, 7 * Player_Size, Character)
3265
    if HITFLOOR ~= nil then
3266
        local HITBODIES = {}
3267
        ATTACK = true
3268
        Rooted = true
3269
        local ABSOLUTE = CreatePart(3, Effects, "Neon", 0, 1, "Institutional White", "Star", VT(0,0,0))
3270
        MakeForm(ABSOLUTE,"Ball")
3271
        CreateSound("429459101", ABSOLUTE, 10, 1)
3272
        for i=0, 4, 0.1 / Animation_Speed do
3273
            Swait()
3274
            ABSOLUTE.Size = ABSOLUTE.Size + VT(0.2,0.2,0.2)
3275
            ABSOLUTE.CFrame = RootPart.CFrame*CF(0,5+(ABSOLUTE.Size.Y/2),0)
3276
            ABSOLUTE.Transparency = ABSOLUTE.Transparency - 0.01
3277
            local CHARGE = CreatePart(3, Effects, "Neon", 0, 0, "Institutional White", "Star", VT(1,1,1))
3278
            MakeForm(CHARGE,"Ball")
3279
            CHARGE.Color = C3(1,0,0)
3280
            CHARGE.CFrame = CF(RootPart.Position) * CF(MRANDOM(-15,15),-6,MRANDOM(-15,15))
3281
            FireArc(CHARGE,ABSOLUTE.Position,45,45,true)
3282
            RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, 0 + 0.25 * COS(SINE / 12)) * ANGLES(RAD(4 + 2.5 * SIN(SINE / 12)), RAD(0), RAD(15 + 2.5 * SIN(SINE / 12))), 1 / Animation_Speed)
3283
            Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(-25 + 4.5 * SIN(SINE / 12)), RAD(25), RAD(-15 - 2.5 * SIN(SINE / 12))), 1 / Animation_Speed)
3284
            RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.25, 1.5 + 0.25 * COS(SINE / 12), 0) * ANGLES(RAD(170), RAD(0 - 7.5 * SIN(SINE / 12)), RAD(-12 + 7.5 * SIN(SINE / 12))) * RIGHTSHOULDERC0, 1 / Animation_Speed)
3285
            LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.5 + 0.25 * COS(SINE / 12), 0) * ANGLES(RAD(0), RAD(0 + 7.5 * SIN(SINE / 12)), RAD(-12 - 7.5 * SIN(SINE / 12))) * LEFTSHOULDERC0, 1 / Animation_Speed)
3286
            RightHip.C0 = Clerp(RightHip.C0, CF(1, -1, -0.01) * ANGLES(RAD(-7.5 * SIN(SINE / 12)), RAD(75), RAD(0)) * ANGLES(RAD(-8 - 2.5 * SIN(SINE / 12)), RAD(0), RAD(0)), 1 / Animation_Speed)
3287
            LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -0.5, -0.5) * ANGLES(RAD(-7.5 * SIN(SINE / 12)), RAD(-90), RAD(0)) * ANGLES(RAD(-8 - 2.5 * SIN(SINE / 12)), RAD(0), RAD(0)), 1 / Animation_Speed)
3288
        end
3289
        CreateSound("907330103", Head, 10, 1.2)
3290
        for i = 1, 75 do
3291
            Swait()
3292
            RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, 0 + 0.25 * COS(SINE / 12)) * ANGLES(RAD(4 + 2.5 * SIN(SINE / 12)), RAD(0), RAD(15 + 2.5 * SIN(SINE / 12))), 1 / Animation_Speed)
3293
            Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(-25 + 4.5 * SIN(SINE / 12)), RAD(25), RAD(-15 - 2.5 * SIN(SINE / 12))), 1 / Animation_Speed)
3294
            RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.25, 1.5 + 0.25 * COS(SINE / 12), 0) * ANGLES(RAD(170), RAD(0 - 7.5 * SIN(SINE / 12)), RAD(-12 + 7.5 * SIN(SINE / 12))) * RIGHTSHOULDERC0, 1 / Animation_Speed)
3295
            LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.5 + 0.25 * COS(SINE / 12), 0) * ANGLES(RAD(0), RAD(0 + 7.5 * SIN(SINE / 12)), RAD(-12 - 7.5 * SIN(SINE / 12))) * LEFTSHOULDERC0, 1 / Animation_Speed)
3296
            RightHip.C0 = Clerp(RightHip.C0, CF(1, -1, -0.01) * ANGLES(RAD(-7.5 * SIN(SINE / 12)), RAD(75), RAD(0)) * ANGLES(RAD(-8 - 2.5 * SIN(SINE / 12)), RAD(0), RAD(0)), 1 / Animation_Speed)
3297
            LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -0.5, -0.5) * ANGLES(RAD(-7.5 * SIN(SINE / 12)), RAD(-90), RAD(0)) * ANGLES(RAD(-8 - 2.5 * SIN(SINE / 12)), RAD(0), RAD(0)), 1 / Animation_Speed)
3298
        end
3299
        coroutine.resume(coroutine.create(function()
3300
            for i = 1, 13 do
3301
                for e = 1, 8 do
3302
                    Swait()
3303
                    MagicSphere(VT(1,1,1),15,CF(ABSOLUTE.Position)*CF(MRANDOM(-45,45),MRANDOM(-45,45),MRANDOM(-45,45)),C3(255,0,0),VT(0,0,0))
3304
                    CreateSwirl(ABSOLUTE.Size/2,15,CF(HITPOS),true,15,BRICKC"Reakky red".Color,VT(i,0.3,i)*2)
3305
                end
3306
                for i = 1, 5 do
3307
                    Slice("Round",0,35,CF(ABSOLUTE.Position)*ANGLES(RAD(MRANDOM(-18,18)),RAD(MRANDOM(-180,180)),RAD(MRANDOM(-18,18))),C3(1,1,1),VT(i,0,i)/3)
3308
                    Slice("Thin",i,55,ABSOLUTE.CFrame * CF(0,-1.1,0) * ANGLES(RAD(MRANDOM(-180,180)),RAD(MRANDOM(-180,180)),RAD(MRANDOM(-180,180))),C3(255,0,0),VT(0,0,0))
3309
                end
3310
                CreateSwirl(ABSOLUTE.Size/2,25,CF(ABSOLUTE.Position),true,-25,BRICKC"Institutional White".Color,VT(i,i*2,i))
3311
                CreateSwirl(ABSOLUTE.Size/2,55,CF(ABSOLUTE.Position),true,25,C3(255,0,0),VT(i,i*2,i))
3312
                CreateSound("168586621", ABSOLUTE, 4, 0.8)
3313
                CreateSound("201858144", ABSOLUTE, 10, 0.8)
3314
                killnearest(ABSOLUTE.Position,i*18,i)
3315
                ABSOLUTE.Size = ABSOLUTE.Size*0.9
3316
                MagicSphere(ABSOLUTE.Size,25,CF(ABSOLUTE.Position),BRICKC"Institutional White".Color,VT(i,i,i)/1.1)
3317
                MagicSphere(ABSOLUTE.Size,45,CF(ABSOLUTE.Position),C3(255,0,0),VT(i,i,i))
3318
            end
3319
            ABSOLUTE.Transparency = 1
3320
            Debris:AddItem(ABSOLUTE,10)
3321
        end))
3322
        ATTACK = false
3323
        Rooted = false
3324
    end
3325
end
3326
3327
function DeathAgreement()
3328
	ATTACK = true
3329
	Rooted = false
3330
	local SPEED = Speed
3331
	Speed = 8
3332
	CreateSound("357202141", RightArm, 10, 1.1)
3333
	for i=0, 0, 0.01 / Animation_Speed do
3334
		Swait()
3335
		turnto(Mouse.Hit.p)
3336
		MagicSphere(VT(1,1,1),15,RightArm.CFrame * CF(MRANDOM(-3,3),MRANDOM(-3,3),MRANDOM(-3,3)),"Institutional White",VT(-1/15,-1/15,-1/15))
3337
		MagicSphere(VT(2,2,2),15,RightArm.CFrame * CF(MRANDOM(-3,3),MRANDOM(-3,3),MRANDOM(-3,3)),"Institutional White",VT(-2/15,-2/15,-2/15))
3338
		RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0 * Player_Size, 0 * Player_Size, -0.2 * Player_Size + 0.05 * COS(SINE / 12) * Player_Size) * ANGLES(RAD(0), RAD(0), RAD(-85)), 0.15 / Animation_Speed)
3339
		Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0 * Player_Size, 0 * Player_Size, 0 + ((1 * Player_Size) - 1)) * ANGLES(RAD(0 - 2.5 * SIN(SINE / 12)), RAD(0), RAD(85)), 0.2 / Animation_Speed)
3340
		RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5 * Player_Size, 0.5 * Player_Size, 0 * Player_Size) * ANGLES(RAD(90+(MRANDOM(-45,45)/10)), RAD(0), RAD(12)) * RIGHTSHOULDERC0, 3 / Animation_Speed)
3341
		LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5 * Player_Size, 0.5 * Player_Size, 0 * Player_Size) * ANGLES(RAD(90), RAD(0), RAD(-85)) * LEFTSHOULDERC0, 0.15 / Animation_Speed)
3342
		RightHip.C0 = Clerp(RightHip.C0, CF(1 * Player_Size, -1 * Player_Size, -0 * Player_Size) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.15 / Animation_Speed)
3343
		LeftHip.C0 = Clerp(LeftHip.C0, CF(-1 * Player_Size, -1 * Player_Size, -0 * Player_Size) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.15 / Animation_Speed)
3344
	end
3345
	for i=0, 0, 0.01 / Animation_Speed do
3346
		Swait()
3347
		turnto(Mouse.Hit.p)
3348
		RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0 * Player_Size, 0 * Player_Size, -0.2 * Player_Size + 0.05 * COS(SINE / 12) * Player_Size) * ANGLES(RAD(0), RAD(0), RAD(65)), 1 / Animation_Speed)
3349
		Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0 * Player_Size, 0 * Player_Size, 0 + ((1 * Player_Size) - 1)) * ANGLES(RAD(25), RAD(0), RAD(35)), 1 / Animation_Speed)
3350
		RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5 * Player_Size, 0.5 * Player_Size, 0 * Player_Size) * ANGLES(RAD(90), RAD(0), RAD(65)) * RIGHTSHOULDERC0, 1 / Animation_Speed)
3351
		LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5 * Player_Size, 0.5 * Player_Size, 0 * Player_Size) * ANGLES(RAD(-20), RAD(0), RAD(-25)) * LEFTSHOULDERC0, 1 / Animation_Speed)
3352
		RightHip.C0 = Clerp(RightHip.C0, CF(1 * Player_Size, -1 * Player_Size, -0 * Player_Size) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0)), 1 / Animation_Speed)
3353
		LeftHip.C0 = Clerp(LeftHip.C0, CF(-1 * Player_Size, -1 * Player_Size, -0 * Player_Size) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0)), 1 / Animation_Speed)
3354
	end
3355
	local PART = CreatePart(3, Effects, "Neon", 0, 0.8, "Institutional White", "Punch", VT(50,50,50),false)
3356
	PART.CFrame = RootPart.CFrame * CF(0,0,-25)
3357
	PART.Shape = "Ball"
3358
	local bv = Instance.new("BodyVelocity") 
3359
	bv.maxForce = Vector3.new(1e9, 1e9, 1e9)
3360
	bv.velocity = RootPart.CFrame.lookVector*600
3361
	bv.Parent = PART
3362
	bv.Name = "PROJECTILEVELOCITY"
3363
	CreateWave(VT(1,5,1),55,RootPart.CFrame * CF(0,0,-6)*ANGLES(RAD(-90),RAD(0),RAD(0)),true,1,"Institutional White",VT(3,0.2,3))
3364
	CreateSwirl(VT(3,5,3),75,RootPart.CFrame * CF(0,0,-15)*ANGLES(RAD(-90),RAD(0),RAD(0)),true,1,"Institutional White",VT(2.2,0.6,2.2))
3365
	CreateSound("414517163", Effects, 10, MRANDOM(7, 12) / 10)
3366
	coroutine.resume(coroutine.create(function()
3367
		for i = 1, 3 do
3368
			Swait()
3369
			PART.Transparency = PART.Transparency + 0.2/10
3370
			PART.Size = PART.Size + VT(5,5,5)
3371
			killnearest(PART.Position,PART.Size.Y/2+15,100,RootPart.CFrame)
3372
		end
3373
		PART:Destroy()
3374
	end))
3375
	for i=0, 0, 0.01 / Animation_Speed do
3376
		Swait()
3377
		RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0 * Player_Size, 0 * Player_Size, -0.2 * Player_Size + 0.05 * COS(SINE / 12) * Player_Size) * ANGLES(RAD(15), RAD(0), RAD(95)), 2 / Animation_Speed)
3378
		Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0 * Player_Size, 0 * Player_Size, 0 + ((1 * Player_Size) - 1)) * ANGLES(RAD(25), RAD(0), RAD(35)), 3 / Animation_Speed)
3379
		RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5 * Player_Size, 0.5 * Player_Size, 0 * Player_Size) * ANGLES(RAD(90), RAD(0), RAD(0)) * RIGHTSHOULDERC0, 3 / Animation_Speed)
3380
		LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5 * Player_Size, 0.5 * Player_Size, 0 * Player_Size) * ANGLES(RAD(-70), RAD(0), RAD(-25)) * LEFTSHOULDERC0, 3 / Animation_Speed)
3381
		RightHip.C0 = Clerp(RightHip.C0, CF(1 * Player_Size, -0.8 * Player_Size, -0 * Player_Size) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(-15), RAD(0), RAD(0)), 3 / Animation_Speed)
3382
		LeftHip.C0 = Clerp(LeftHip.C0, CF(-1 * Player_Size, -1 * Player_Size, -0 * Player_Size) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(-5), RAD(0), RAD(0)), 3 / Animation_Speed)
3383
	end
3384
	Speed = SPEED
3385
	ATTACK = false
3386
	Rooted = false
3387
end
3388
3389
function Morning_Star()
3390
	ATTACK = true
3391
	Rooted = true
3392
	CreateSound(LAUGHS[MRANDOM(1,#LAUGHS)], Torso, 7, 1, false)
3393
	for i=0, 1, 0.1 / Animation_Speed do
3394
		Swait()
3395
		RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, 0  + 0.25 * COS(SINE / 12)) * ANGLES(RAD(0), RAD(0), RAD(0)), 1 / Animation_Speed)
3396
		Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(15 - 2.5 * SIN(SINE / 12)), RAD(0), RAD(0)), 1 / Animation_Speed)
3397
		RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5, -0.5) * ANGLES(RAD(0), RAD(0), RAD(-85)) * RIGHTSHOULDERC0, 1 / Animation_Speed)
3398
		LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.15, -0.5) * ANGLES(RAD(-15), RAD(0), RAD(85)) * LEFTSHOULDERC0, 1 / Animation_Speed)
3399
		RightHip.C0 = Clerp(RightHip.C0, CF(1, -1, -0.01) * ANGLES(RAD(-2.5 * SIN(SINE / 12)), RAD(75), RAD(0)) * ANGLES(RAD(-8 - 2.5 * SIN(SINE / 12)), RAD(0), RAD(0)), 1 / Animation_Speed)
3400
		LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -0.5, -0.5) * ANGLES(RAD(-2.5 * SIN(SINE / 12)), RAD(-90), RAD(0)) * ANGLES(RAD(-8 - 2.5 * SIN(SINE / 12)), RAD(0), RAD(0)), 1 / Animation_Speed)
3401
	end	
3402
	coroutine.resume(coroutine.create(function()
3403
		local POS = Mouse.Hit.p
3404
		local RAY = CreatePart(3, Effects, "Neon", 0, 0, "Institutional White", "Strike", VT(0,2000,0))
3405
		MakeForm(RAY,"Cyl")
3406
		local SPHERE = CreatePart(3, Effects, "Neon", 0, 0, "Institutional White", "Strike", VT(0,0,0))
3407
		MakeForm(SPHERE,"Ball")
3408
		local SHIELD = CreatePart(3, Effects, "Neon", 0, 0.5, "Institutional White", "Strike", VT(0,0,0))
3409
		MakeForm(SHIELD,"Ball")
3410
		SHIELD.CFrame = CF(POS)
3411
		RAY.CFrame = CF(POS)
3412
		SPHERE.CFrame = CF(POS)
3413
		CreateSound(440145570, SPHERE, 10, 0.8, false)
3414
		CreateSound(415700134, SPHERE, 10, 0.8, false)
3415
		for i = 1, 200 do
3416
			Swait()
3417
			WACKYEFFECT({Time = 15, EffectType = "Wave", Size = VT(0,0,0), Size2 = VT(SPHERE.Size.X*1.2,5+(i),SPHERE.Size.X*1.2), Transparency = 0, Transparency2 = 1, CFrame = SPHERE.CFrame*ANGLES(RAD(0), RAD(i), RAD(0)), MoveToPos = nil, RotationX = 0, RotationY = i, RotationZ = 0, Material = "Neon", Color = C3(1,0,0), SoundID = nil, SoundPitch = nil, SoundVolume = nil})
3418
			RAY.Size = RAY.Size + VT(0.05,0,0.05)
3419
			SPHERE.Size = SPHERE.Size + VT(2,2,2)
3420
			SHIELD.Size = SPHERE.Size + VT(3,3,3)
3421
			ApplyAoE(SPHERE.Position,SPHERE.Size.X/2,true)
3422
		end	
3423
		for i = 1, 45 do
3424
			Swait()
3425
			RAY.Transparency = RAY.Transparency + 1/45
3426
			SPHERE.Transparency = RAY.Transparency 
3427
			SHIELD.Transparency = SPHERE.Transparency + 1/45
3428
		end
3429
		RAY:remove()
3430
		SHIELD:remove()
3431
		SPHERE:remove()
3432
	end))
3433
	for i=0, 1, 0.1 / Animation_Speed do
3434
		Swait()
3435
		RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, 0  + 0.25 * COS(SINE / 12)) * ANGLES(RAD(-35), RAD(0), RAD(0)), 1 / Animation_Speed)
3436
		Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(-15 - 2.5 * SIN(SINE / 12)), RAD(0), RAD(0)), 1 / Animation_Speed)
3437
		RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5, -0.15) * ANGLES(RAD(65), RAD(-45), RAD(85)) * RIGHTSHOULDERC0, 1 / Animation_Speed)
3438
		LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.5, -0.15) * ANGLES(RAD(65), RAD(45), RAD(-85)) * LEFTSHOULDERC0, 1 / Animation_Speed)
3439
		RightHip.C0 = Clerp(RightHip.C0, CF(1, -1, -0.01) * ANGLES(RAD(-35-2.5 * SIN(SINE / 12)), RAD(75), RAD(0)) * ANGLES(RAD(-8 - 2.5 * SIN(SINE / 12)), RAD(0), RAD(0)), 1 / Animation_Speed)
3440
		LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -0.5, -0.5) * ANGLES(RAD(-35-2.5 * SIN(SINE / 12)), RAD(-90), RAD(0)) * ANGLES(RAD(-8 - 2.5 * SIN(SINE / 12)), RAD(0), RAD(0)), 1 / Animation_Speed)
3441
	end
3442
	ATTACK = false
3443
	Rooted = false
3444
end
3445
3446
function Shot()
3447
	ATTACK = true
3448
	Rooted = false
3449
	for i=0, 0.05, 0.1 / Animation_Speed do
3450
		Swait()
3451
		turnto(Mouse.Hit.p)
3452
		RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, 0) * ANGLES(RAD(0), RAD(0), RAD(90)), 0.5 / Animation_Speed)
3453
		Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0) * ANGLES(RAD(0), RAD(0), RAD(-90)), 0.5 / Animation_Speed)
3454
		RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(90), RAD(0), RAD(90)) * RIGHTSHOULDERC0, 0.5 / Animation_Speed)
3455
		LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.6, 0) * ANGLES(RAD(-45), RAD(0), RAD(45)) * LEFTSHOULDERC0, 0.5 / Animation_Speed)
3456
		RightHip.C0 = Clerp(RightHip.C0, CF(1, -1, 0) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), 0.5 / Animation_Speed)
3457
		LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1, 0) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), 0.5 / Animation_Speed)
3458
	end
3459
	repeat
3460
		for i=0, 0.05, 0.1 / Animation_Speed do
3461
			Swait()
3462
			turnto(Mouse.Hit.p)
3463
			RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, 0) * ANGLES(RAD(0), RAD(0), RAD(90)), 0.5 / Animation_Speed)
3464
			Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0) * ANGLES(RAD(0), RAD(0), RAD(-90)), 0.5 / Animation_Speed)
3465
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(90), RAD(0), RAD(90)) * RIGHTSHOULDERC0, 0.5 / Animation_Speed)
3466
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.6, 0) * ANGLES(RAD(-45), RAD(0), RAD(45)) * LEFTSHOULDERC0, 0.5 / Animation_Speed)
3467
			RightHip.C0 = Clerp(RightHip.C0, CF(1, -1, 0) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), 0.5 / Animation_Speed)
3468
			LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1, 0) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), 0.5 / Animation_Speed)
3469
		end
3470
		local HIT,POS = CastProperRay(Hole.Position, Mouse.Hit.p, 1000, Character)
3471
		SpawnTrail(Hole.Position,POS)
3472
		if HIT ~= nil then
3473
			if HIT.Parent ~= workspace and HIT.Parent.ClassName ~= "Folder" then
3474
				Banish(HIT.Parent)
3475
			end
3476
		end
3477
		WACKYEFFECT({Time = 25, EffectType = "Wave", Size = VT(1,0,1), Size2 = VT(6,7.5,6), Transparency = 0, Transparency2 = 1, CFrame = Hole.CFrame, MoveToPos = Hole.CFrame*CF(0,0.5,0).p, RotationX = 0, RotationY = -15, RotationZ = 0, Material = "Neon", Color = C3(1,0,0), SoundID = nil, SoundPitch = nil, SoundVolume = nil})
3478
		WACKYEFFECT({Time = 25, EffectType = "Wave", Size = VT(1,0,1), Size2 = VT(6,6.5,6), Transparency = 0, Transparency2 = 1, CFrame = Hole.CFrame, MoveToPos = nil, RotationX = 0, RotationY = 5, RotationZ = 0, Material = "Neon", Color = C3(1,0,0), SoundID = 904440937, SoundPitch = MRANDOM(8,11)/10, SoundVolume = 8})
3479
		WACKYEFFECT({Time = 25, EffectType = "Wave", Size = VT(1,0,1), Size2 = VT(6,6.5,6), Transparency = 0, Transparency2 = 1, CFrame = CF(POS,Hole.Position) * ANGLES(RAD(-90), RAD(0), RAD(0)), MoveToPos = nil, RotationX = 0, RotationY = -5, RotationZ = 0, Material = "Neon", Color = C3(1,0,0), SoundID = nil, SoundPitch = MRANDOM(8,11)/10, SoundVolume = 8})
3480
		WACKYEFFECT({Time = 25, EffectType = "Wave", Size = VT(1,0,1), Size2 = VT(6,6.5,6), Transparency = 0, Transparency2 = 1, CFrame = CF(POS,Hole.Position) * ANGLES(RAD(-90), RAD(0), RAD(0)), MoveToPos = nil, RotationX = 0, RotationY = 5, RotationZ = 0, Material = "Neon", Color = C3(1,0,0), SoundID = nil, SoundPitch = MRANDOM(8,11)/10, SoundVolume = 8})
3481
		for i=0, 0.05, 0.1 / Animation_Speed do
3482
			Swait()
3483
			RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, 0) * ANGLES(RAD(0), RAD(0), RAD(90)), 0.5 / Animation_Speed)
3484
			Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0) * ANGLES(RAD(0), RAD(0), RAD(-90)), 0.25 / Animation_Speed)
3485
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(90), RAD(15), RAD(90)) * RIGHTSHOULDERC0, 0.5 / Animation_Speed)
3486
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.6, 0) * ANGLES(RAD(-45), RAD(0), RAD(45)) * LEFTSHOULDERC0, 0.5 / Animation_Speed)
3487
			RightHip.C0 = Clerp(RightHip.C0, CF(1, -1, 0) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), 0.5 / Animation_Speed)
3488
			LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1, 0) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), 0.5 / Animation_Speed)
3489
		end
3490
	until KEYHOLD == false
3491
	ATTACK = false
3492
	Rooted = false
3493
end
3494
3495
function AttackTemplate()
3496
	ATTACK = true
3497
	Rooted = false
3498
	for i=0, 1, 0.1 / Animation_Speed do
3499
		Swait()
3500
		RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, 0 + 0.05 * COS(SINE / 12)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.15 / Animation_Speed)
3501
		Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(0 - 2.5 * SIN(SINE / 12)), RAD(0), RAD(0)), 0.15 / Animation_Speed)
3502
		RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(0), RAD(0), RAD(12)) * RIGHTSHOULDERC0, 0.15 / Animation_Speed)
3503
		LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(0), RAD(0), RAD(-12)) * LEFTSHOULDERC0, 0.15 / Animation_Speed)
3504
		RightHip.C0 = Clerp(RightHip.C0, CF(1, -1 - 0.05 * COS(SINE / 12), -0.01) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), 0.15 / Animation_Speed)
3505
		LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1 - 0.05 * COS(SINE / 12), -0.01) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), 0.15 / Animation_Speed)
3506
	end
3507
	ATTACK = false
3508
	Rooted = false
3509
end
3510
3511
--//=================================\\
3512
--||	  ASSIGN THINGS TO KEYS
3513
--\\=================================//
3514
3515
function MouseDown(Mouse)
3516
	if ATTACK == false then
3517
	end
3518
end
3519
3520
function MouseUp(Mouse)
3521
HOLD = false
3522
end
3523
3524
function KeyDown(Key)
3525
	KEYHOLD = true
3526
	if Key == "z" and ATTACK == false then
3527
		Shot()
3528
	end
3529
3530
	if Key == "q" and ATTACK == false then
3531
		Morning_Star()
3532
	end
3533
3534
	if Key == "f" and ATTACK == false then
3535
		Supernova()
3536
	end
3537
3538
	if Key == "e" and ATTACK == false then
3539
		DeathAgreement()
3540
	end
3541
3542
	if Key == "b" and ATTACK == false then
3543
	end
3544
3545
	if Key == "c" and ATTACK == false then
3546
	end
3547
3548
	if Key == "q" and ATTACK == false then
3549
	end
3550
3551
	if Key == "x" and ATTACK == false then
3552
	end
3553
end
3554
3555
function KeyUp(Key)
3556
	KEYHOLD = false
3557
end
3558
3559
	Mouse.Button1Down:connect(function(NEWKEY)
3560
		MouseDown(NEWKEY)
3561
	end)
3562
	Mouse.Button1Up:connect(function(NEWKEY)
3563
		MouseUp(NEWKEY)
3564
	end)
3565
	Mouse.KeyDown:connect(function(NEWKEY)
3566
		KeyDown(NEWKEY)
3567
	end)
3568
	Mouse.KeyUp:connect(function(NEWKEY)
3569
		KeyUp(NEWKEY)
3570
	end)
3571
3572
--//=================================\\
3573
--\\=================================//
3574
3575
3576
function unanchor()
3577
	if UNANCHOR == true then
3578
		g = Character:GetChildren()
3579
		for i = 1, #g do
3580
			if g[i].ClassName == "Part" then
3581
				g[i].Anchored = false
3582
			end
3583
		end
3584
	end
3585
end
3586
3587
3588
--//=================================\\
3589
--||	WRAP THE WHOLE SCRIPT UP
3590
--\\=================================//
3591
3592
Humanoid.Changed:connect(function(Jump)
3593
	if Jump == "Jump" and (Disable_Jump == true) then
3594
		Humanoid.Jump = false
3595
	end
3596
end)
3597
3598
local CONNECT = nil
3599
3600
while true do
3601
	Swait()
3602
	ANIMATE.Parent = nil
3603
	if Character:FindFirstChildOfClass("Humanoid") == nil then
3604
		Humanoid = IT("Humanoid",Character)
3605
	end
3606
	for _,v in next, Humanoid:GetPlayingAnimationTracks() do
3607
	    v:Stop();
3608
	end
3609
	SINE = SINE + CHANGE
3610
	local TORSOVELOCITY = (RootPart.Velocity * VT(1, 0, 1)).magnitude
3611
	local TORSOVERTICALVELOCITY = RootPart.Velocity.y
3612
	local HITFLOOR = Raycast(RootPart.Position, (CF(RootPart.Position, RootPart.Position + VT(0, -1, 0))).lookVector, 4, Character)
3613
	local WALKSPEEDVALUE = 6 / (Humanoid.WalkSpeed / 16)
3614
	if ANIM == "Walk" and TORSOVELOCITY > 1 then
3615
		RootJoint.C1 = Clerp(RootJoint.C1, ROOTC0 * CF(0, 0, -0.15 * COS(SINE / (WALKSPEEDVALUE / 2))) * ANGLES(RAD(0), RAD(0) - RootPart.RotVelocity.Y / 75, RAD(0)), 2 * (Humanoid.WalkSpeed / 16) / Animation_Speed)
3616
		Neck.C1 = Clerp(Neck.C1, CF(0, -0.5, 0) * ANGLES(RAD(-90), RAD(0), RAD(180)) * ANGLES(RAD(2.5 * SIN(SINE / (WALKSPEEDVALUE / 2))), RAD(0), RAD(0) - Head.RotVelocity.Y / 30), 0.2 * (Humanoid.WalkSpeed / 16) / Animation_Speed)
3617
		RightHip.C1 = Clerp(RightHip.C1, CF(0.5, 0.875 - 0.125 * SIN(SINE / WALKSPEEDVALUE) - 0.15 * COS(SINE / WALKSPEEDVALUE*2), -0.125 * COS(SINE / WALKSPEEDVALUE) +0.2+ 0.2 * COS(SINE / WALKSPEEDVALUE)) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(0) - RightLeg.RotVelocity.Y / 75, RAD(0), RAD(76 * COS(SINE / WALKSPEEDVALUE))), 0.2 * (Humanoid.WalkSpeed / 16) / Animation_Speed)
3618
		LeftHip.C1 = Clerp(LeftHip.C1, CF(-0.5, 0.875 + 0.125 * SIN(SINE / WALKSPEEDVALUE) - 0.15 * COS(SINE / WALKSPEEDVALUE*2), 0.125 * COS(SINE / WALKSPEEDVALUE) +0.2+ -0.2 * COS(SINE / WALKSPEEDVALUE)) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(0) + LeftLeg.RotVelocity.Y / 75, RAD(0), RAD(76 * COS(SINE / WALKSPEEDVALUE))), 0.2 * (Humanoid.WalkSpeed / 16) / Animation_Speed)
3619
	elseif (ANIM ~= "Walk") or (TORSOVELOCITY < 1) then
3620
		RootJoint.C1 = Clerp(RootJoint.C1, ROOTC0 * CF(0, 0, 0) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.2 / Animation_Speed)
3621
		Neck.C1 = Clerp(Neck.C1, CF(0, -0.5, 0) * ANGLES(RAD(-90), RAD(0), RAD(180)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.2 / Animation_Speed)
3622
		RightHip.C1 = Clerp(RightHip.C1, CF(0.5, 1, 0) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.2 / Animation_Speed)
3623
		LeftHip.C1 = Clerp(LeftHip.C1, CF(-0.5, 1, 0) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.2 / Animation_Speed)
3624
	end
3625
	if TORSOVERTICALVELOCITY > 1 and HITFLOOR == nil then
3626
		ANIM = "Jump"
3627
		if ATTACK == false then
3628
			RootJoint.C0 = Clerp(RootJoint.C0, ROOTC0 * CF(0, 0, 0) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.2 / Animation_Speed)
3629
			Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(-20), RAD(0), RAD(0)), 0.2 / Animation_Speed)
3630
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(45), RAD(0), RAD(25))* RIGHTSHOULDERC0, 0.15 / Animation_Speed)
3631
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(-40), RAD(0), RAD(-20)) * LEFTSHOULDERC0, 0.2 / Animation_Speed)
3632
			RightHip.C0 = Clerp(RightHip.C0, CF(1, -1, -0.3) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(-5), RAD(0), RAD(-20)), 0.2 / Animation_Speed)
3633
			LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1, -0.3) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(-5), RAD(0), RAD(20)), 0.2 / Animation_Speed)
3634
	    end
3635
	elseif TORSOVERTICALVELOCITY < -1 and HITFLOOR == nil then
3636
		ANIM = "Fall"
3637
		if ATTACK == false then
3638
			RootJoint.C0 = Clerp(RootJoint.C0, ROOTC0 * CF(0, 0, 0 ) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.2 / Animation_Speed)
3639
			Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0 , 0 + ((1) - 1)) * ANGLES(RAD(20), RAD(0), RAD(0)), 0.2 / Animation_Speed)
3640
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(45), RAD(0), RAD(25))* RIGHTSHOULDERC0, 0.15 / Animation_Speed)
3641
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(0), RAD(0), RAD(-60)) * LEFTSHOULDERC0, 0.2 / Animation_Speed)
3642
			RightHip.C0 = Clerp(RightHip.C0, CF(1, -1, 0) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(20)), 0.2 / Animation_Speed)
3643
			LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1, 0) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(10)), 0.2 / Animation_Speed)
3644
		end
3645
	elseif TORSOVELOCITY < 1 and HITFLOOR ~= nil then
3646
		ANIM = "Idle"
3647
		if ATTACK == false then
3648
			RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, 0 + 0.05 * COS(SINE / 12)) * ANGLES(RAD(0), RAD(0), RAD(-45)), 0.15 / Animation_Speed)
3649
			Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(0 - 2.5 * SIN(SINE / 12)), RAD(0), RAD(45)), 0.15 / Animation_Speed)
3650
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.35, 0.5, -0.5) * ANGLES(RAD(75), RAD(45), RAD(-25))* RIGHTSHOULDERC0, 0.15 / Animation_Speed)
3651
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.25, 0.5, 0.5) * ANGLES(RAD(-45), RAD(0), RAD(45)) * LEFTSHOULDERC0, 0.15 / Animation_Speed)
3652
			RightHip.C0 = Clerp(RightHip.C0, CF(1, -1 - 0.05 * COS(SINE / 12), -0.01) * ANGLES(RAD(0), RAD(75), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), 0.15 / Animation_Speed)
3653
			LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1 - 0.05 * COS(SINE / 12), -0.01) * ANGLES(RAD(0), RAD(-50), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), 0.15 / Animation_Speed)
3654
		end
3655
	elseif TORSOVELOCITY > 1 and HITFLOOR ~= nil then
3656
		ANIM = "Walk"
3657
		if ATTACK == false then
3658
			RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, -0.1) * ANGLES(RAD(5), RAD(0), RAD(0)), 0.15 / Animation_Speed)
3659
			Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(5 - 8 * SIN(SINE / (WALKSPEEDVALUE / 2))), RAD(0), RAD(0)), 0.15 / Animation_Speed)
3660
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.1, -0.4) * ANGLES(RAD(150), RAD(0), RAD(0))* RIGHTSHOULDERC0, 0.15 / Animation_Speed)
3661
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(-60 * COS(SINE / WALKSPEEDVALUE)), RAD(0), RAD(-5)) * LEFTSHOULDERC0, 0.35 / Animation_Speed)
3662
			RightHip.C0 = Clerp(RightHip.C0, CF(1 , -1, 0) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(-15)), 2 / Animation_Speed)
3663
			LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1, 0) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(15)), 2 / Animation_Speed)
3664
		end
3665
	end
3666
	unanchor()
3667
	Humanoid.MaxHealth = "inf"
3668
	Humanoid.Health = "inf"
3669
	if Rooted == false then
3670
		Disable_Jump = false
3671
		Humanoid.WalkSpeed = Speed
3672
	elseif Rooted == true then
3673
		Disable_Jump = true
3674
		Humanoid.WalkSpeed = 0
3675
	end
3676
	sick.Parent = Torso
3677
	sick:resume()
3678
	sick.Volume = 8.2
3679
	sick.Pitch = 1
3680
	sick.SoundId = "rbxassetid://1329622781"
3681
	sick.Name = "Dead"
3682
end
3683
3684
--//=================================\\
3685
--\\=================================//
3686
3687
3688
3689
3690
3691
--//====================================================\\--
3692
--||			  		 END OF SCRIPT
3693
--\\====================================================//--