View difference between Paste ID: giqVXpMV and xPHzLQ3T
SHOW: | | - or go back to the newest paste.
1
--//====================================================\\--
2
--||			   CREATED BY SHACKLUSTER
3
--\\====================================================//--
4
5
--https://github.com/Mokiros/roblox-FE-compatibility
6
if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
7
local Player,game,owner = owner,game
8
local RealPlayer = Player
9
do
10
	print("FE Compatibility code V2 by Mokiros")
11
	local RealPlayer = RealPlayer
12
	script.Parent = RealPlayer.Character
13
14
	--Fake event to make stuff like Mouse.KeyDown work
15
	local Disconnect_Function = function(this)
16
		this[1].Functions[this[2]] = nil
17
	end
18
	local Disconnect_Metatable = {__index={disconnect=Disconnect_Function,Disconnect=Disconnect_Function}}
19
	local FakeEvent_Metatable = {__index={
20
		Connect = function(this,f)
21
			local i = tostring(math.random(0,10000))
22
			while this.Functions[i] do
23
				i = tostring(math.random(0,10000))
24
			end
25
			this.Functions[i] = f
26
			return setmetatable({this,i},Disconnect_Metatable)
27
		end
28
	}}
29
	FakeEvent_Metatable.__index.connect = FakeEvent_Metatable.__index.Connect
30
	local function fakeEvent()
31
		return setmetatable({Functions={}},FakeEvent_Metatable)
32
	end
33
34
	--Creating fake input objects with fake variables
35
    local FakeMouse = {Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent(),Button2Up=fakeEvent(),Button2Down=fakeEvent()}
36
    FakeMouse.keyUp = FakeMouse.KeyUp
37
    FakeMouse.keyDown = FakeMouse.KeyDown
38
	local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
39
	local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
40
		CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
41
	end}
42
	--Merged 2 functions into one by checking amount of arguments
43
	CAS.UnbindAction = CAS.BindAction
44
45
	--This function will trigger the events that have been :Connect()'ed
46
	local function TriggerEvent(self,ev,...)
47
		for _,f in pairs(self[ev].Functions) do
48
			f(...)
49
		end
50
	end
51
	FakeMouse.TriggerEvent = TriggerEvent
52
	UIS.TriggerEvent = TriggerEvent
53
54
	--Client communication
55
	local Event = Instance.new("RemoteEvent")
56
	Event.Name = "UserInput_Event"
57
	Event.OnServerEvent:Connect(function(plr,io)
58
	    if plr~=RealPlayer then return end
59
		FakeMouse.Target = io.Target
60
		FakeMouse.Hit = io.Hit
61
		if not io.isMouse then
62
			local b = io.UserInputState == Enum.UserInputState.Begin
63
			if io.UserInputType == Enum.UserInputType.MouseButton1 then
64
				return FakeMouse:TriggerEvent(b and "Button1Down" or "Button1Up")
65
			end
66
			if io.UserInputType == Enum.UserInputType.MouseButton2 then
67
				return FakeMouse:TriggerEvent(b and "Button2Down" or "Button2Up")
68
			end
69
			for _,t in pairs(CAS.Actions) do
70
				for _,k in pairs(t.Keys) do
71
					if k==io.KeyCode then
72
						t.Function(t.Name,io.UserInputState,io)
73
					end
74
				end
75
			end
76
			FakeMouse:TriggerEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
77
			UIS:TriggerEvent(b and "InputBegan" or "InputEnded",io,false)
78
	    end
79
	end)
80
	Event.Parent = NLS([==[local Event = script:WaitForChild("UserInput_Event")
81
	local Mouse = owner:GetMouse()
82
	local UIS = game:GetService("UserInputService")
83
	local input = function(io,RobloxHandled)
84
		if RobloxHandled then return end
85
		--Since InputObject is a client-side instance, we create and pass table instead
86
		Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target})
87
	end
88
	UIS.InputBegan:Connect(input)
89
	UIS.InputEnded:Connect(input)
90
	local h,t
91
	--Give the server mouse data every second frame, but only if the values changed
92
	--If player is not moving their mouse, client won't fire events
93
	local HB = game:GetService("RunService").Heartbeat
94
	while true do
95
		if h~=Mouse.Hit or t~=Mouse.Target then
96
			h,t=Mouse.Hit,Mouse.Target
97
			Event:FireServer({isMouse=true,Target=t,Hit=h})
98
		end
99
		--Wait 2 frames
100
		for i=1,2 do
101
			HB:Wait()
102
		end
103
	end]==],script)
104
105
	----Sandboxed game object that allows the usage of client-side methods and services
106
	--Real game object
107
	local RealGame = game
108
109
	--Metatable for fake service
110
	local FakeService_Metatable = {
111
		__index = function(self,k)
112
			local s = rawget(self,"_RealService")
113
			if s then
114
				return typeof(s[k])=="function"
115
				and function(_,...)return s[k](s,...)end or s[k]
116
			end
117
		end,
118
		__newindex = function(self,k,v)
119
			local s = rawget(self,"_RealService")
120
			if s then s[k]=v end
121
		end
122
	}
123
	local function FakeService(t,RealService)
124
		t._RealService = typeof(RealService)=="string" and RealGame:GetService(RealService) or RealService
125
		return setmetatable(t,FakeService_Metatable)
126
	end
127
128
	--Fake game object
129
	local FakeGame = {
130
		GetService = function(self,s)
131
			return rawget(self,s) or RealGame:GetService(s)
132
		end,
133
		Players = FakeService({
134
			LocalPlayer = FakeService({GetMouse=function(self)return FakeMouse end},Player)
135
		},"Players"),
136
		UserInputService = FakeService(UIS,"UserInputService"),
137
		ContextActionService = FakeService(CAS,"ContextActionService"),
138
		RunService = FakeService({
139
			_btrs = {},
140
			RenderStepped = RealGame:GetService("RunService").Heartbeat,
141
			BindToRenderStep = function(self,name,_,fun)
142
				self._btrs[name] = self.Heartbeat:Connect(fun)
143
			end,
144
			UnbindFromRenderStep = function(self,name)
145
				self._btrs[name]:Disconnect()
146
			end,
147
		},"RunService")
148
	}
149
	rawset(FakeGame.Players,"localPlayer",FakeGame.Players.LocalPlayer)
150
	FakeGame.service = FakeGame.GetService
151
	FakeService(FakeGame,game)
152
	--Changing owner to fake player object to support owner:GetMouse()
153
	game,owner = FakeGame,FakeGame.Players.LocalPlayer
154
end
155
156
wait(0.2)
157
158
Player = game:GetService("Players").LocalPlayer
159
PlayerGui = Player.PlayerGui
160
Cam = workspace.CurrentCamera
161
Backpack = Player.Backpack
162
Character = Player.Character
163
Humanoid = Character.Humanoid
164
Mouse = Player:GetMouse()
165
RootPart = Character["HumanoidRootPart"]
166
Torso = Character["Torso"]
167
Head = Character["Head"]
168
RightArm = Character["Right Arm"]
169
LeftArm = Character["Left Arm"]
170
RightLeg = Character["Right Leg"]
171
LeftLeg = Character["Left Leg"]
172
RootJoint = RootPart["RootJoint"]
173
Neck = Torso["Neck"]
174
RightShoulder = Torso["Right Shoulder"]
175
LeftShoulder = Torso["Left Shoulder"]
176
RightHip = Torso["Right Hip"]
177
LeftHip = Torso["Left Hip"]
178
179
IT = Instance.new
180
CF = CFrame.new
181
VT = Vector3.new
182
RAD = math.rad
183
C3 = Color3.new
184
UD2 = UDim2.new
185
BRICKC = BrickColor.new
186
ANGLES = CFrame.Angles
187
EULER = CFrame.fromEulerAnglesXYZ
188
COS = math.cos
189
ACOS = math.acos
190
SIN = math.sin
191
ASIN = math.asin
192
ABS = math.abs
193
MRANDOM = math.random
194
FLOOR = math.floor
195
196
--//=================================\\
197
--|| 	      USEFUL VALUES
198
--\\=================================//
199
200
Animation_Speed = 3
201
Frame_Speed = 1 / 60 -- (1 / 30) OR (1 / 60)
202
local Speed = 16
203
local ROOTC0 = CF(0, 0, 0) * ANGLES(RAD(-90), RAD(0), RAD(180))
204
local NECKC0 = CF(0, 1, 0) * ANGLES(RAD(-90), RAD(0), RAD(180))
205
local RIGHTSHOULDERC0 = CF(-0.5, 0, 0) * ANGLES(RAD(0), RAD(90), RAD(0))
206
local LEFTSHOULDERC0 = CF(0.5, 0, 0) * ANGLES(RAD(0), RAD(-90), RAD(0))
207
local DAMAGEMULTIPLIER = 1
208
local ANIM = "Idle"
209
local ATTACK = false
210
local EQUIPPED = false
211
local HOLD = false
212
local COMBO = 1
213
local Rooted = false
214
local SINE = 0
215
local KEYHOLD = false
216
local CHANGE = 2 / Animation_Speed
217
local WALKINGANIM = false
218
local VALUE1 = false
219
local VALUE2 = false
220
local ROBLOXIDLEANIMATION = IT("Animation")
221
ROBLOXIDLEANIMATION.Name = "Roblox Idle Animation"
222
ROBLOXIDLEANIMATION.AnimationId = "http://www.roblox.com/asset/?id=180435571"
223
--ROBLOXIDLEANIMATION.Parent = Humanoid
224
local WEAPONGUI = IT("ScreenGui", PlayerGui)
225
WEAPONGUI.Name = "Weapon GUI"
226
local Weapon = IT("Model")
227
Weapon.Name = "Adds"
228
local Effects = IT("Folder", Weapon)
229
Effects.Name = "Effects"
230
local ANIMATOR = Humanoid.Animator
231
local ANIMATE = Character.Animate
232
local UNANCHOR = true
233
local ENERGYSOUND = 1417051162
234
local BEAMSOUND = 1417056781
235
local EXPLOSIONSOUND = 1417056081
236
237
--//=================================\\
238
--\\=================================//
239
240
241
--//=================================\\
242
--|| SAZERENOS' ARTIFICIAL HEARTBEAT
243
--\\=================================//
244
245
ArtificialHB = Instance.new("BindableEvent", script)
246
ArtificialHB.Name = "ArtificialHB"
247
248
script:WaitForChild("ArtificialHB")
249
250
frame = Frame_Speed
251
tf = 0
252
allowframeloss = false
253
tossremainder = false
254
lastframe = tick()
255
script.ArtificialHB:Fire()
256
257
game:GetService("RunService").Heartbeat:connect(function(s, p)
258
	tf = tf + s
259
	if tf >= frame then
260
		if allowframeloss then
261
			script.ArtificialHB:Fire()
262
			lastframe = tick()
263
		else
264
			for i = 1, math.floor(tf / frame) do
265
				script.ArtificialHB:Fire()
266
			end
267
		lastframe = tick()
268
		end
269
		if tossremainder then
270
			tf = 0
271
		else
272
			tf = tf - frame * math.floor(tf / frame)
273
		end
274
	end
275
end)
276
277
--//=================================\\
278
--\\=================================//
279
280
--//=================================\\
281
--|| 	      SOME FUNCTIONS
282
--\\=================================//
283
284
function Raycast(POSITION, DIRECTION, RANGE, IGNOREDECENDANTS)
285
	return workspace:FindPartOnRay(Ray.new(POSITION, DIRECTION.unit * RANGE), IGNOREDECENDANTS)
286
end
287
288
function PositiveAngle(NUMBER)
289
	if NUMBER >= 0 then
290
		NUMBER = 0
291
	end
292
	return NUMBER
293
end
294
295
function NegativeAngle(NUMBER)
296
	if NUMBER <= 0 then
297
		NUMBER = 0
298
	end
299
	return NUMBER
300
end
301
302
function Swait(NUMBER)
303
	if NUMBER == 0 or NUMBER == nil then
304
		ArtificialHB.Event:wait()
305
	else
306
		for i = 1, NUMBER do
307
			ArtificialHB.Event:wait()
308
		end
309
	end
310
end
311
312
function CreateMesh(MESH, PARENT, MESHTYPE, MESHID, TEXTUREID, SCALE, OFFSET)
313
	local NEWMESH = IT(MESH)
314
	if MESH == "SpecialMesh" then
315
		NEWMESH.MeshType = MESHTYPE
316
		if MESHID ~= "nil" and MESHID ~= "" then
317
			NEWMESH.MeshId = "http://www.roblox.com/asset/?id="..MESHID
318
		end
319
		if TEXTUREID ~= "nil" and TEXTUREID ~= "" then
320
			NEWMESH.TextureId = "http://www.roblox.com/asset/?id="..TEXTUREID
321
		end
322
	end
323
	NEWMESH.Offset = OFFSET or VT(0, 0, 0)
324
	NEWMESH.Scale = SCALE
325
	NEWMESH.Parent = PARENT
326
	return NEWMESH
327
end
328
329
function CreatePart(FORMFACTOR, PARENT, MATERIAL, REFLECTANCE, TRANSPARENCY, BRICKCOLOR, NAME, SIZE, ANCHOR)
330
	local NEWPART = IT("Part")
331
	NEWPART.formFactor = FORMFACTOR
332
	NEWPART.Reflectance = REFLECTANCE
333
	NEWPART.Transparency = TRANSPARENCY
334
	NEWPART.CanCollide = false
335
	NEWPART.Locked = true
336
	NEWPART.Anchored = true
337
	if ANCHOR == false then
338
		NEWPART.Anchored = false
339
	end
340
	NEWPART.BrickColor = BRICKC(tostring(BRICKCOLOR))
341
	NEWPART.Name = NAME
342
	NEWPART.Size = SIZE
343
	NEWPART.Position = Torso.Position
344
	NEWPART.Material = MATERIAL
345
	NEWPART:BreakJoints()
346
	NEWPART.Parent = PARENT
347
	return NEWPART
348
end
349
350
	local function weldBetween(a, b)
351
	    local weldd = Instance.new("ManualWeld")
352
	    weldd.Part0 = a
353
	    weldd.Part1 = b
354
	    weldd.C0 = CFrame.new()
355
	    weldd.C1 = b.CFrame:inverse() * a.CFrame
356
	    weldd.Parent = a
357
	    return weldd
358
	end
359
360
361
function QuaternionFromCFrame(cf)
362
	local mx, my, mz, m00, m01, m02, m10, m11, m12, m20, m21, m22 = cf:components()
363
	local trace = m00 + m11 + m22
364
	if trace > 0 then 
365
		local s = math.sqrt(1 + trace)
366
		local recip = 0.5 / s
367
		return (m21 - m12) * recip, (m02 - m20) * recip, (m10 - m01) * recip, s * 0.5
368
	else
369
		local i = 0
370
		if m11 > m00 then
371
			i = 1
372
		end
373
		if m22 > (i == 0 and m00 or m11) then
374
			i = 2
375
		end
376
		if i == 0 then
377
			local s = math.sqrt(m00 - m11 - m22 + 1)
378
			local recip = 0.5 / s
379
			return 0.5 * s, (m10 + m01) * recip, (m20 + m02) * recip, (m21 - m12) * recip
380
		elseif i == 1 then
381
			local s = math.sqrt(m11 - m22 - m00 + 1)
382
			local recip = 0.5 / s
383
			return (m01 + m10) * recip, 0.5 * s, (m21 + m12) * recip, (m02 - m20) * recip
384
		elseif i == 2 then
385
			local s = math.sqrt(m22 - m00 - m11 + 1)
386
			local recip = 0.5 / s return (m02 + m20) * recip, (m12 + m21) * recip, 0.5 * s, (m10 - m01) * recip
387
		end
388
	end
389
end
390
 
391
function QuaternionToCFrame(px, py, pz, x, y, z, w)
392
	local xs, ys, zs = x + x, y + y, z + z
393
	local wx, wy, wz = w * xs, w * ys, w * zs
394
	local xx = x * xs
395
	local xy = x * ys
396
	local xz = x * zs
397
	local yy = y * ys
398
	local yz = y * zs
399
	local zz = z * zs
400
	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))
401
end
402
 
403
function QuaternionSlerp(a, b, t)
404
	local cosTheta = a[1] * b[1] + a[2] * b[2] + a[3] * b[3] + a[4] * b[4]
405
	local startInterp, finishInterp;
406
	if cosTheta >= 0.0001 then
407
		if (1 - cosTheta) > 0.0001 then
408
			local theta = ACOS(cosTheta)
409
			local invSinTheta = 1 / SIN(theta)
410
			startInterp = SIN((1 - t) * theta) * invSinTheta
411
			finishInterp = SIN(t * theta) * invSinTheta
412
		else
413
			startInterp = 1 - t
414
			finishInterp = t
415
		end
416
	else
417
		if (1 + cosTheta) > 0.0001 then
418
			local theta = ACOS(-cosTheta)
419
			local invSinTheta = 1 / SIN(theta)
420
			startInterp = SIN((t - 1) * theta) * invSinTheta
421
			finishInterp = SIN(t * theta) * invSinTheta
422
		else
423
			startInterp = t - 1
424
			finishInterp = t
425
		end
426
	end
427
	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
428
end
429
430
function Clerp(a, b, t)
431
	local qa = {QuaternionFromCFrame(a)}
432
	local qb = {QuaternionFromCFrame(b)}
433
	local ax, ay, az = a.x, a.y, a.z
434
	local bx, by, bz = b.x, b.y, b.z
435
	local _t = 1 - t
436
	return QuaternionToCFrame(_t * ax + t * bx, _t * ay + t * by, _t * az + t * bz, QuaternionSlerp(qa, qb, t))
437
end
438
439
function CreateFrame(PARENT, TRANSPARENCY, BORDERSIZEPIXEL, POSITION, SIZE, COLOR, BORDERCOLOR, NAME)
440
	local frame = IT("Frame")
441
	frame.BackgroundTransparency = TRANSPARENCY
442
	frame.BorderSizePixel = BORDERSIZEPIXEL
443
	frame.Position = POSITION
444
	frame.Size = SIZE
445
	frame.BackgroundColor3 = COLOR
446
	frame.BorderColor3 = BORDERCOLOR
447
	frame.Name = NAME
448
	frame.Parent = PARENT
449
	return frame
450
end
451
452
function CreateLabel(PARENT, TEXT, TEXTCOLOR, TEXTFONTSIZE, TEXTFONT, TRANSPARENCY, BORDERSIZEPIXEL, STROKETRANSPARENCY, NAME)
453
	local label = IT("TextLabel")
454
	label.BackgroundTransparency = 1
455
	label.Size = UD2(1, 0, 1, 0)
456
	label.Position = UD2(0, 0, 0, 0)
457
	label.TextColor3 = TEXTCOLOR
458
	label.TextStrokeTransparency = STROKETRANSPARENCY
459
	label.TextTransparency = TRANSPARENCY
460
	label.FontSize = TEXTFONTSIZE
461
	label.Font = TEXTFONT
462
	label.BorderSizePixel = BORDERSIZEPIXEL
463
	label.TextScaled = false
464
	label.Text = TEXT
465
	label.Name = NAME
466
	label.Parent = PARENT
467
	return label
468
end
469
470
function NoOutlines(PART)
471
	PART.TopSurface, PART.BottomSurface, PART.LeftSurface, PART.RightSurface, PART.FrontSurface, PART.BackSurface = 10, 10, 10, 10, 10, 10
472
end
473
474
function CreateWeldOrSnapOrMotor(TYPE, PARENT, PART0, PART1, C0, C1)
475
	local NEWWELD = IT(TYPE)
476
	NEWWELD.Part0 = PART0
477
	NEWWELD.Part1 = PART1
478
	NEWWELD.C0 = C0
479
	NEWWELD.C1 = C1
480
	NEWWELD.Parent = PARENT
481
	return NEWWELD
482
end
483
484
local S = IT("Sound")
485
function CreateSound(ID, PARENT, VOLUME, PITCH, DOESLOOP)
486
	local NEWSOUND = nil
487
	coroutine.resume(coroutine.create(function()
488
		NEWSOUND = S:Clone()
489
		NEWSOUND.Parent = PARENT
490
		NEWSOUND.Volume = VOLUME
491
		NEWSOUND.Pitch = PITCH
492
		NEWSOUND.SoundId = "http://www.roblox.com/asset/?id="..ID
493
		NEWSOUND:play()
494
		if DOESLOOP == true then
495
			NEWSOUND.Looped = true
496
		else
497
			repeat wait(1) until NEWSOUND.Playing == false
498
			NEWSOUND:remove()
499
		end
500
	end))
501
	return NEWSOUND
502
end
503
504
function CFrameFromTopBack(at, top, back)
505
	local right = top:Cross(back)
506
	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)
507
end
508
509
--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})
510
function WACKYEFFECT(Table)
511
	local TYPE = (Table.EffectType or "Sphere")
512
	local SIZE = (Table.Size or VT(1,1,1))
513
	local ENDSIZE = (Table.Size2 or VT(0,0,0))
514
	local TRANSPARENCY = (Table.Transparency or 0)
515
	local ENDTRANSPARENCY = (Table.Transparency2 or 1)
516
	local CFRAME = (Table.CFrame or Torso.CFrame)
517
	local MOVEDIRECTION = (Table.MoveToPos or nil)
518
	local ROTATION1 = (Table.RotationX or 0)
519
	local ROTATION2 = (Table.RotationY or 0)
520
	local ROTATION3 = (Table.RotationZ or 0)
521
	local MATERIAL = (Table.Material or "Neon")
522
	local COLOR = (Table.Color or C3(1,1,1))
523
	local TIME = (Table.Time or 45)
524
	local SOUNDID = (Table.SoundID or nil)
525
	local SOUNDPITCH = (Table.SoundPitch or nil)
526
	local SOUNDVOLUME = (Table.SoundVolume or nil)
527
	coroutine.resume(coroutine.create(function()
528
		local PLAYSSOUND = false
529
		local SOUND = nil
530
		local EFFECT = CreatePart(3, Effects, MATERIAL, 0, TRANSPARENCY, BRICKC("Pearl"), "Effect", VT(1,1,1), true)
531
		if SOUNDID ~= nil and SOUNDPITCH ~= nil and SOUNDVOLUME ~= nil then
532
			PLAYSSOUND = true
533
			SOUND = CreateSound(SOUNDID, EFFECT, SOUNDVOLUME, SOUNDPITCH, false)
534
		end
535
		EFFECT.Color = COLOR
536
		local MSH = nil
537
		if TYPE == "Sphere" then
538
			MSH = CreateMesh("SpecialMesh", EFFECT, "Sphere", "", "", SIZE, VT(0,0,0))
539
		elseif TYPE == "Block" then
540
			MSH = IT("BlockMesh",EFFECT)
541
			MSH.Scale = VT(SIZE.X,SIZE.X,SIZE.X)
542
		elseif TYPE == "Wave" then
543
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "20329976", "", SIZE, VT(0,0,-SIZE.X/8))
544
		elseif TYPE == "Ring" then
545
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "559831844", "", VT(SIZE.X,SIZE.X,0.1), VT(0,0,0))
546
		elseif TYPE == "Slash" then
547
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "662586858", "", VT(SIZE.X/10,0,SIZE.X/10), VT(0,0,0))
548
		elseif TYPE == "Round Slash" then
549
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "662585058", "", VT(SIZE.X/10,0,SIZE.X/10), VT(0,0,0))
550
		elseif TYPE == "Swirl" then
551
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "1051557", "", SIZE, VT(0,0,0))
552
		elseif TYPE == "Skull" then
553
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "4770583", "", SIZE, VT(0,0,0))
554
		elseif TYPE == "Crystal" then
555
			MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "9756362", "", SIZE, VT(0,0,0))
556
		end
557
		if MSH ~= nil then
558
			local MOVESPEED = nil
559
			if MOVEDIRECTION ~= nil then
560
				MOVESPEED = (CFRAME.p - MOVEDIRECTION).Magnitude/TIME
561
			end
562
			local GROWTH = SIZE - ENDSIZE
563
			local TRANS = TRANSPARENCY - ENDTRANSPARENCY
564
			if TYPE == "Block" then
565
				EFFECT.CFrame = CFRAME*ANGLES(RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)))
566
			else
567
				EFFECT.CFrame = CFRAME
568
			end
569
			for LOOP = 1, TIME+1 do
570
				Swait()
571
				MSH.Scale = MSH.Scale - GROWTH/TIME
572
				if TYPE == "Wave" then
573
					MSH.Offset = VT(0,0,-MSH.Scale.X/8)
574
				end
575
				EFFECT.Transparency = EFFECT.Transparency - TRANS/TIME
576
				if TYPE == "Block" then
577
					EFFECT.CFrame = CFRAME*ANGLES(RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)))
578
				else
579
					EFFECT.CFrame = EFFECT.CFrame*ANGLES(RAD(ROTATION1),RAD(ROTATION2),RAD(ROTATION3))
580
				end
581
				if MOVEDIRECTION ~= nil then
582
					local ORI = EFFECT.Orientation
583
					EFFECT.CFrame = CF(EFFECT.Position,MOVEDIRECTION)*CF(0,0,-MOVESPEED)
584
					EFFECT.Orientation = ORI
585
				end
586
			end
587
			if PLAYSSOUND == false then
588
				EFFECT:remove()
589
			else
590
				repeat Swait() until SOUND.Playing == false
591
				EFFECT:remove()
592
			end
593
		else
594
			if PLAYSSOUND == false then
595
				EFFECT:remove()
596
			else
597
				repeat Swait() until SOUND.Playing == false
598
				EFFECT:remove()
599
			end
600
		end
601
	end))
602
end
603
604
function MakeForm(PART,TYPE)
605
	if TYPE == "Cyl" then
606
		local MSH = IT("CylinderMesh",PART)
607
	elseif TYPE == "Ball" then
608
		local MSH = IT("SpecialMesh",PART)
609
		MSH.MeshType = "Sphere"
610
	elseif TYPE == "Wedge" then
611
		local MSH = IT("SpecialMesh",PART)
612
		MSH.MeshType = "Wedge"
613
	end
614
end
615
616
Debris = game:GetService("Debris")
617
618
function CastProperRay(StartPos, EndPos, Distance, Ignore)
619
	local DIRECTION = CF(StartPos,EndPos).lookVector
620
	return Raycast(StartPos, DIRECTION, Distance, Ignore)
621
end
622
623
function turnto(position)
624
	RootPart.CFrame=CFrame.new(RootPart.CFrame.p,VT(position.X,RootPart.Position.Y,position.Z)) * CFrame.new(0, 0, 0)
625
end
626
627
--//=================================\\
628
--||	     WEAPON CREATION
629
--\\=================================//
630
631
local BasePart = CreatePart(3, Weapon, "Marble", 0, 0, "Institutional white", "BraceletPart", VT(1.01,0.3,1.01),false)
632
CreateWeldOrSnapOrMotor("Weld", RightArm, RightArm, BasePart, CF(0, -0.2, 0) * ANGLES(RAD(0), RAD(0), RAD(0)), CF(0, 0, 0))
633
for i = 1, 3 do
634
	local Part = CreatePart(3, Weapon, "Marble", 0, 0, "Daisy orange", "BraceletPart", VT(0.2,1.02,0.2),false)
635
	CreateWeldOrSnapOrMotor("Weld", BasePart, BasePart, Part, CF(0, 0, 0.6-0.3*i) * ANGLES(RAD(0), RAD(0), RAD(90)), CF(0, 0, 0))
636
	MakeForm(Part,"Cyl")
637
end
638
for i = 1, 3 do
639
	local Part = CreatePart(3, Weapon, "Marble", 0, 0, "Daisy orange", "BraceletPart", VT(0.2,1.02,0.2),false)
640
	CreateWeldOrSnapOrMotor("Weld", BasePart, BasePart, Part, CF(0.6-0.3*i, 0, 0) * ANGLES(RAD(0), RAD(90), RAD(90)), CF(0, 0, 0))
641
	MakeForm(Part,"Cyl")
642
end
643
local Part = CreatePart(3, Weapon, "Marble", 0, 0, "Institutional white", "BraceletPart", VT(0.51,0.6,0.25),false)
644
CreateWeldOrSnapOrMotor("Weld", BasePart, BasePart, Part, CF(-0.125, -0.4, -0.25) * ANGLES(RAD(0), RAD(90), RAD(180)), CF(0, 0, 0))
645
MakeForm(Part,"Wedge")
646
local Part = CreatePart(3, Weapon, "Marble", 0, 0, "Institutional white", "BraceletPart", VT(0.51,0.6,0.25),false)
647
CreateWeldOrSnapOrMotor("Weld", BasePart, BasePart, Part, CF(0.125, -0.4, -0.25) * ANGLES(RAD(0), RAD(-90), RAD(180)), CF(0, 0, 0))
648
MakeForm(Part,"Wedge")
649
local Part = CreatePart(3, Weapon, "Marble", 0, 0, "Daisy orange", "BraceletPart", VT(0.52,0.5,0.25/2.3),false)
650
CreateWeldOrSnapOrMotor("Weld", BasePart, BasePart, Part, CF(-0.125/2.3, -0.25, -0.25) * ANGLES(RAD(0), RAD(90), RAD(180)), CF(0, 0, 0))
651
MakeForm(Part,"Wedge")
652
local Part = CreatePart(3, Weapon, "Marble", 0, 0, "Daisy orange", "BraceletPart", VT(0.52,0.5,0.25/2.3),false)
653
CreateWeldOrSnapOrMotor("Weld", BasePart, BasePart, Part, CF(0.125/2.3, -0.25, -0.25) * ANGLES(RAD(0), RAD(-90), RAD(180)), CF(0, 0, 0))
654
MakeForm(Part,"Wedge")
655
656
for _, c in pairs(Weapon:GetChildren()) do
657
	if c.ClassName == "Part" then
658
		c.CustomPhysicalProperties = PhysicalProperties.new(0, 0, 0, 0, 0)
659
		local AURA = c:Clone()
660
		AURA:BreakJoints()
661
		AURA.Parent = c
662
		AURA.CFrame = c.CFrame
663
		AURA.Size = AURA.Size*1.001
664
		AURA.Transparency = 0.3
665
		AURA.BrickColor = BRICKC"Gold"
666
		AURA.Material = "Neon"
667
		weldBetween(c,AURA)
668
	end
669
end
670
671
local SKILLTEXTCOLOR = BRICKC"Gold".Color
672
local SKILLFONT = "Bodoni"
673
local SKILLTEXTSIZE = 7
674
675
Weapon.Parent = Character
676
677
Humanoid.Died:connect(function()
678
	ATTACK = true
679
end)
680
681
local SKILL1FRAME = CreateFrame(WEAPONGUI, 0.75, 2, UD2(0.23, 0, 0.80, 0), UD2(0.26, 0, 0.07, 0), C3(0,0,0), C3(0, 0, 0), "Skill 1 Frame")
682
local SKILL2FRAME = CreateFrame(WEAPONGUI, 0.75, 2, UD2(0.50, 0, 0.80, 0), UD2(0.26, 0, 0.07, 0), C3(0,0,0), C3(0, 0, 0), "Skill 2 Frame")
683
local SKILL3FRAME = CreateFrame(WEAPONGUI, 0.75, 2, UD2(0.365, 0, 0.90, 0), UD2(0.26, 0, 0.07, 0), C3(0,0,0), C3(0, 0, 0), "Skill 3 Frame")
684
685
local SKILL1TEXT = CreateLabel(SKILL1FRAME, "[Z] Aether Beam", SKILLTEXTCOLOR, SKILLTEXTSIZE, SKILLFONT, 0, 2, 1, "Text 1")
686
local SKILL2TEXT = CreateLabel(SKILL2FRAME, "[B] Aether Explosion", SKILLTEXTCOLOR, SKILLTEXTSIZE, SKILLFONT, 0, 2, 1, "Text 2")
687
local SKILL3TEXT = CreateLabel(SKILL3FRAME, "[C] Aether Immobilization", SKILLTEXTCOLOR, SKILLTEXTSIZE, SKILLFONT, 0, 2, 1, "Text 3")
688
689
--//=================================\\
690
--||	     DAMAGE FUNCTIONS
691
--\\=================================//
692
693
function StatLabel(CFRAME, TEXT, COLOR)
694
	local STATPART = CreatePart(3, Effects, "SmoothPlastic", 0, 1, "Really black", "Effect", VT())
695
	STATPART.CFrame = CF(CFRAME.p,CFRAME.p+VT(MRANDOM(-5,5),MRANDOM(0,5),MRANDOM(-5,5)))
696
	local BODYGYRO = IT("BodyGyro", STATPART)
697
	game:GetService("Debris"):AddItem(STATPART ,5)
698
	local BILLBOARDGUI = Instance.new("BillboardGui", STATPART)
699
	BILLBOARDGUI.Adornee = STATPART
700
	BILLBOARDGUI.Size = UD2(2.5, 0, 2.5 ,0)
701
	BILLBOARDGUI.StudsOffset = VT(-2, 2, 0)
702
	BILLBOARDGUI.AlwaysOnTop = false
703
	local TEXTLABEL = Instance.new("TextLabel", BILLBOARDGUI)
704
	TEXTLABEL.BackgroundTransparency = 1
705
	TEXTLABEL.Size = UD2(2.5, 0, 2.5, 0)
706
	TEXTLABEL.Text = TEXT
707
	TEXTLABEL.Font = SKILLFONT
708
	TEXTLABEL.FontSize="Size42"
709
	TEXTLABEL.TextColor3 = COLOR
710
	TEXTLABEL.TextStrokeTransparency = 0
711
	TEXTLABEL.TextScaled = true
712
	TEXTLABEL.TextWrapped = true
713
	coroutine.resume(coroutine.create(function(THEPART, THEBODYPOSITION, THETEXTLABEL)
714
		for i = 1, 50 do
715
			Swait()
716
			STATPART.CFrame = STATPART.CFrame * CF(0,0,-0.2)
717
			TEXTLABEL.TextTransparency = TEXTLABEL.TextTransparency + (1/50)
718
			TEXTLABEL.TextStrokeTransparency = TEXTLABEL.TextTransparency
719
		end
720
		THEPART.Parent = nil
721
	end),STATPART, TEXTLABEL)
722
end
723
724
--//=================================\\
725
--||			DAMAGING
726
--\\=================================//
727
728
function ApplyDamage(Humanoid,Damage,TorsoPart)
729
	local defence = Instance.new("BoolValue",Humanoid.Parent)
730
	defence.Name = ("HitBy"..Player.Name)
731
	game:GetService("Debris"):AddItem(defence, 0.001)
732
	Damage = Damage * DAMAGEMULTIPLIER
733
	if Humanoid.Health ~= 0 then
734
		local CritChance = MRANDOM(1,100)
735
		if Damage > Humanoid.Health then
736
			Damage = math.ceil(Humanoid.Health)
737
			if Damage == 0 then
738
				Damage = 0.1
739
			end
740
		end
741
		Humanoid.Health = Humanoid.Health - Damage
742
		StatLabel(TorsoPart.CFrame * CF(0, 0 + (TorsoPart.Size.z - 1), 0), Damage, C3(0, 0, 0))
743
	end
744
end
745
746
function ApplyAoE(POSITION,RANGE,MINDMG,MAXDMG,FLING,STUNS)
747
	local CHILDREN = workspace:GetDescendants()
748
	for index, CHILD in pairs(CHILDREN) do
749
		if CHILD.ClassName == "Model" and CHILD ~= Character then
750
			local HUM = CHILD:FindFirstChildOfClass("Humanoid")
751
			if HUM then
752
				local TORSO = CHILD:FindFirstChild("Torso") or CHILD:FindFirstChild("UpperTorso")
753
				if TORSO then
754
					if (TORSO.Position - POSITION).Magnitude <= RANGE then
755
						if STUNS == true then
756
							coroutine.resume(coroutine.create(function()
757
								if HUM:FindFirstChild("StunValue") == nil then
758
									StatLabel(TORSO.CFrame * CF(0, 0 + (TORSO.Size.z - 1), 0), "Stunned!", C3(1,1,1))
759
									HUM.PlatformStand = true
760
									local STUNVALUE = IT("NumberValue",HUM)
761
									STUNVALUE.Name = "StunValue"
762
									STUNVALUE.Value = 8
763
									repeat wait(1) STUNVALUE.Value = STUNVALUE.Value - 1 until STUNVALUE.Value <= 0
764
									HUM.PlatformStand = false
765
									STUNVALUE:remove()
766
								else
767
									HUM.StunValue.Value = 8
768
								end
769
							end))
770
						end
771
						local DMG = MRANDOM(MINDMG,MAXDMG)
772
						ApplyDamage(HUM,DMG,TORSO)
773
						if FLING > 0 then
774
							for _, c in pairs(CHILD:GetChildren()) do
775
								if c:IsA("BasePart") then
776
									local bv = Instance.new("BodyVelocity") 
777
									bv.maxForce = Vector3.new(1e9, 1e9, 1e9)
778
									bv.velocity = CF(POSITION,TORSO.Position).lookVector*FLING
779
									bv.Parent = c
780
									Debris:AddItem(bv,0.05)
781
								end
782
							end
783
						end
784
					end
785
				end
786
			end
787
		end
788
	end
789
end
790
791
--//=================================\\
792
--||	ATTACK FUNCTIONS AND STUFF
793
--\\=================================//
794
795
function Charge(TIME,GYRO)
796
	local SND = CreateSound(ENERGYSOUND,Torso,6,TIME,false)
797
	local G = nil
798
	if GYRO == true then
799
		G = IT("BodyGyro",RootPart)
800
		G.D = 250
801
		G.P = 200000
802
		G.MaxTorque = VT(math.huge,math.huge,math.huge)
803
	end
804
	for i=0, TIME, 0.1 / Animation_Speed do
805
		Swait()
806
		if G then
807
			G.cframe = CF(RootPart.Position,Mouse.Hit.p)
808
		end
809
		WACKYEFFECT({TIME = 25, EffectType = "Sphere", Size = VT(1.2,1.2,1.2), Size2 = VT(0,0,0), Transparency = 0.5, Transparency2 = 1, CFrame = BasePart.CFrame, MoveToPos = BasePart.CFrame*ANGLES(RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)))*CF(0,0,-4).p, RotationX = 0, RotationY = 0, RotationZ = 0, Material = "Neon", Color = SKILLTEXTCOLOR, SoundID = nil, SoundPitch = nil, SoundVolume = nil})
810
		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)
811
		Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(15 - 2.5 * SIN(SINE / 12)), RAD(0), RAD(0)), 0.15 / Animation_Speed)
812
		RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.25, 0.5, -0.5) * ANGLES(RAD(90), RAD(0), RAD(-45)) * RIGHTSHOULDERC0, 2 / Animation_Speed)
813
		LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.25, 0.5, -0.5) * ANGLES(RAD(90), RAD(0), RAD(45)) * LEFTSHOULDERC0, 2 / Animation_Speed)
814
		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)
815
		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)
816
	end
817
	SND:remove()
818
	if G then
819
		return G
820
	end
821
end
822
823
function Aether_Beam()
824
	ATTACK = true
825
	Rooted = false
826
	local GRAV = IT("BodyPosition",RootPart)
827
	GRAV.D = 75
828
	GRAV.P = 20000
829
	GRAV.MaxForce = VT(math.huge,math.huge,math.huge)
830
	GRAV.Position = RootPart.Position
831
	local GYRO = Charge(2,true)
832
	local BEAM = CreatePart(3, Effects, "Neon", 0, 0, "Gold", "Beam", VT(15,15,0))
833
	MakeForm(BEAM,"Ball")
834
	CreateSound(BEAMSOUND,BEAM,10,1,false)
835
	CreateSound(BEAMSOUND,BEAM,10,0.9,false)
836
	CreateSound(BEAMSOUND,BEAM,10,0.8,false)
837
	for i = 1, 150 do
838
		Swait()
839
		BEAM.Size = BEAM.Size + VT(-0.1,-0.1,2)
840
		ApplyAoE(BEAM.CFrame*CF(0,0,-BEAM.Size.Z/2).p,BEAM.Size.Y/2,5,8,125,false)
841
		WACKYEFFECT({TIME = 25, EffectType = "Sphere", Size = VT(3,3,3), Size2 = VT(0,0,0), Transparency = 0.5, Transparency2 = 1, CFrame = BEAM.CFrame*CF(0,0,BEAM.Size.Z/2), MoveToPos = BEAM.CFrame*CF(0,0,BEAM.Size.Z/2)*ANGLES(RAD(90),RAD(MRANDOM(0,360)),RAD(0))*CF(0,0.3,-25).p, RotationX = 0, RotationY = 0, RotationZ = 0, Material = "Neon", Color = SKILLTEXTCOLOR, SoundID = nil, SoundPitch = nil, SoundVolume = nil})
842
		BEAM.CFrame = CF(Torso.Position,Torso.CFrame*CF(0,0,-1).p)*CF(0,0,-2-(BEAM.Size.Z/2))
843
		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)
844
		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)
845
		RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5, -0.5) * ANGLES(RAD(90), RAD(0), RAD(12)) * RIGHTSHOULDERC0, 2 / Animation_Speed)
846
		LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.5, -0.5) * ANGLES(RAD(90), RAD(0), RAD(-12)) * LEFTSHOULDERC0, 2 / Animation_Speed)
847
		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)
848
		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)
849
	end
850
	GRAV:remove()
851
	BEAM:remove()
852
	GYRO:remove()
853
	ATTACK = false
854
	Rooted = false
855
end
856
857
function Aether_Explosion()
858
	ATTACK = true
859
	Rooted = true
860
	for i=0, 1, 0.1 / Animation_Speed do
861
		Swait()
862
		RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, -0.3, 0) * ANGLES(RAD(0), RAD(0), RAD(-75)), 0.6 / Animation_Speed)
863
		Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(0), RAD(0), RAD(75)), 0.6 / Animation_Speed)
864
		RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(90), RAD(0), RAD(15)) * RIGHTSHOULDERC0, 0.3 / Animation_Speed)
865
		LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(0), RAD(0), RAD(-90)) * LEFTSHOULDERC0, 0.1 / Animation_Speed)
866
		RightHip.C0 = Clerp(RightHip.C0, CF(1, -1, -0.01) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(-15), RAD(0), RAD(0)), 0.5 / Animation_Speed)
867
		LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1, -0.01) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(-15), RAD(0), RAD(0)), 0.5 / Animation_Speed)
868
	end
869
	for i=0, 0.4, 0.1 / Animation_Speed do
870
		Swait()
871
		RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, -1, -0.3) * ANGLES(RAD(75), RAD(0), RAD(75)), 1 / Animation_Speed)
872
		Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(0), RAD(0), RAD(-75)), 1/ Animation_Speed)
873
		RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(0), RAD(0), RAD(90)) * RIGHTSHOULDERC0, 1 / Animation_Speed)
874
		LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(0), RAD(0), RAD(0)) * LEFTSHOULDERC0, 1 / Animation_Speed)
875
		RightHip.C0 = Clerp(RightHip.C0, CF(1, -0.5, -0.01) * ANGLES(RAD(75), RAD(25), RAD(0)) * ANGLES(RAD(-35), RAD(0), RAD(0)), 1 / Animation_Speed)
876
		LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1, -0.01) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(-15), RAD(0), RAD(0)), 1 / Animation_Speed)
877
	end
878
	local BEAM = CreatePart(3, Effects, "Neon", 0, 0, "Gold", "Beam", VT(0,0,0))
879
	local BEAM2 = CreatePart(3, Effects, "Neon", 0, 0, "Gold", "Beam", VT(0,0,0))
880
	MakeForm(BEAM,"Ball")
881
	MakeForm(BEAM2,"Ball")
882
	BEAM.CFrame = CF(RootPart.Position)
883
	BEAM2.CFrame = CF(RootPart.Position)
884
	CreateSound(EXPLOSIONSOUND,RootPart,10,1,false)
885
	for i=1, 100 do
886
		Swait()
887
		BEAM.Size = BEAM.Size + VT(0.7,8,0.7)
888
		BEAM2.Size = BEAM2.Size + VT(2,2,2)
889
		ApplyAoE(BEAM2.Position,BEAM2.Size.Z/2,1,1,15,false)
890
		BEAM.CFrame = CF(RootPart.Position)
891
		BEAM2.CFrame = CF(RootPart.Position)
892
		WACKYEFFECT({TIME = 5+i, EffectType = "Swirl", Size = BEAM2.Size*1.15, Size2 = VT(0,BEAM.Size.Y,0), Transparency = 0.8, Transparency2 = 1, CFrame = BEAM.CFrame * ANGLES(RAD(0), RAD(i*5), RAD(0)), MoveToPos = nil, RotationX = 0, RotationY = i/8, RotationZ = 0, Material = "Neon", Color = SKILLTEXTCOLOR, SoundID = nil, SoundPitch = nil, SoundVolume = nil})
893
		RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, -1, -0.3) * ANGLES(RAD(75), RAD(0), RAD(75)), 1 / Animation_Speed)
894
		Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(0), RAD(0), RAD(-75)), 1/ Animation_Speed)
895
		RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(0), RAD(0), RAD(90)) * RIGHTSHOULDERC0, 1 / Animation_Speed)
896
		LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(0), RAD(0), RAD(0)) * LEFTSHOULDERC0, 1 / Animation_Speed)
897
		RightHip.C0 = Clerp(RightHip.C0, CF(1, -0.5, -0.01) * ANGLES(RAD(75), RAD(25), RAD(0)) * ANGLES(RAD(-35), RAD(0), RAD(0)), 1 / Animation_Speed)
898
		LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1, -0.01) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(-15), RAD(0), RAD(0)), 1 / Animation_Speed)
899
	end
900
	WACKYEFFECT({TIME = 75, EffectType = "Sphere", Size = BEAM.Size, Size2 = VT(0,BEAM.Size.Y,0), Transparency = 0, Transparency2 = 0, CFrame = BEAM.CFrame, MoveToPos = nil, RotationX = 0, RotationY = 0, RotationZ = 0, Material = "Neon", Color = SKILLTEXTCOLOR, SoundID = nil, SoundPitch = nil, SoundVolume = nil})
901
	WACKYEFFECT({TIME = 75, EffectType = "Sphere", Size = BEAM2.Size, Size2 = VT(0,0,0), Transparency = 0, Transparency2 = 0.6, CFrame = BEAM2.CFrame, MoveToPos = nil, RotationX = 0, RotationY = 0, RotationZ = 0, Material = "Neon", Color = SKILLTEXTCOLOR, SoundID = nil, SoundPitch = nil, SoundVolume = nil})
902
	BEAM2:remove()
903
	BEAM:remove()
904
	ATTACK = false
905
	Rooted = false
906
end
907
908
function Aether_Immobilization()
909
	ATTACK = true
910
	Rooted = true
911
	Charge(2,false)
912
	local SND = CreateSound(EXPLOSIONSOUND,RootPart,10,1,false)
913
	local SND2 = CreateSound(ENERGYSOUND,RootPart,10,1,false)
914
	for i = 1, 60 do
915
		Swait()
916
		ApplyAoE(RootPart.Position,i*1.3,1,1,-200,true)
917
		SND.Pitch = SND.Pitch - 1/60
918
		SND2.Pitch = SND.Pitch
919
		WACKYEFFECT({TIME = 4, EffectType = "Wave", Size = VT(i*2,10,i*2), Size2 = VT(i*2,10,i*2), Transparency = 0.9, Transparency2 = 1, CFrame = CF(RootPart.Position-VT(0,3,0)) * ANGLES(RAD(0), RAD(i*5), RAD(0)), MoveToPos = nil, RotationX = 0, RotationY = i/8, RotationZ = 0, Material = "Neon", Color = SKILLTEXTCOLOR, SoundID = nil, SoundPitch = nil, SoundVolume = nil})
920
		WACKYEFFECT({TIME = math.ceil(15-(i/10)), EffectType = "Wave", Size = VT(0,10,0), Size2 = VT(i*2,6,i*2), Transparency = 0.8, Transparency2 = 1, CFrame = CF(RootPart.Position-VT(0,3,0)) * ANGLES(RAD(0), RAD(i*5), RAD(0)), MoveToPos = nil, RotationX = 0, RotationY = i/8, RotationZ = 0, Material = "Neon", Color = SKILLTEXTCOLOR, SoundID = nil, SoundPitch = nil, SoundVolume = nil})
921
		WACKYEFFECT({TIME = math.ceil(15-(i/10)), EffectType = "Wave", Size = VT(0,6,0), Size2 = VT(i*1.6,10,i*1.6), Transparency = 0.8, Transparency2 = 1, CFrame = CF(RootPart.Position-VT(0,3,0)) * ANGLES(RAD(MRANDOM(-5,5)), RAD(i*5), RAD(MRANDOM(-5,5))), MoveToPos = nil, RotationX = 0, RotationY = i/8, RotationZ = 0, Material = "Neon", Color = SKILLTEXTCOLOR, SoundID = nil, SoundPitch = nil, SoundVolume = nil})
922
		RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, 0 + 0.05 * COS(SINE / 12)) * ANGLES(RAD(0), RAD(0), RAD(0)), 1 / Animation_Speed)
923
		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)
924
		RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(-45), RAD(-45), RAD(45)) * RIGHTSHOULDERC0, 1 / Animation_Speed)
925
		LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(-45), RAD(45), RAD(-45)) * LEFTSHOULDERC0, 1 / Animation_Speed)
926
		RightHip.C0 = Clerp(RightHip.C0, CF(1, -1 - 0.05 * COS(SINE / 12), -0.01) * ANGLES(RAD(0), RAD(65), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), 1 / Animation_Speed)
927
		LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1 - 0.05 * COS(SINE / 12), -0.01) * ANGLES(RAD(0), RAD(-65), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), 1 / Animation_Speed)
928
	end
929
	SND:remove()
930
	SND2:remove()
931
	ATTACK = false
932
	Rooted = false
933
end
934
935
--//=================================\\
936
--||	  ASSIGN THINGS TO KEYS
937
--\\=================================//
938
939
function MouseDown(Mouse)
940
	if ATTACK == false then
941
	end
942
end
943
944
function MouseUp(Mouse)
945
HOLD = false
946
end
947
948
function KeyDown(Key)
949
	KEYHOLD = true
950
	if Key == "z" and ATTACK == false then
951
		Aether_Beam()
952
	end
953
954
	if Key == "b" and ATTACK == false then
955
		Aether_Explosion()
956
	end
957
958
	if Key == "c" and ATTACK == false then
959
		Aether_Immobilization()
960
	end
961
end
962
963
function KeyUp(Key)
964
	KEYHOLD = false
965
end
966
967
	Mouse.Button1Down:connect(function(NEWKEY)
968
		MouseDown(NEWKEY)
969
	end)
970
	Mouse.Button1Up:connect(function(NEWKEY)
971
		MouseUp(NEWKEY)
972
	end)
973
	Mouse.KeyDown:connect(function(NEWKEY)
974
		KeyDown(NEWKEY)
975
	end)
976
	Mouse.KeyUp:connect(function(NEWKEY)
977
		KeyUp(NEWKEY)
978
	end)
979
980
--//=================================\\
981
--\\=================================//
982
983
function unanchor()
984
	if UNANCHOR == true then
985
		g = Character:GetChildren()
986
		for i = 1, #g do
987
			if g[i].ClassName == "Part" then
988
				g[i].Anchored = false
989
			end
990
		end
991
	end
992
end
993
994
--//=================================\\
995
--||	WRAP THE WHOLE SCRIPT UP
996
--\\=================================//
997
998
Humanoid.Changed:connect(function(Jump)
999
	if Jump == "Jump" and (Disable_Jump == true) then
1000
		Humanoid.Jump = false
1001
	end
1002
end)
1003
1004
while true do
1005
	Swait()
1006
	script.Parent = WEAPONGUI
1007
	ANIMATE.Parent = nil
1008
	if Humanoid then
1009
		local IDLEANIMATION = Humanoid:LoadAnimation(ROBLOXIDLEANIMATION)
1010
		IDLEANIMATION:Play()
1011
	end
1012
	SINE = SINE + CHANGE
1013
	local TORSOVELOCITY = (RootPart.Velocity * VT(1, 0, 1)).magnitude
1014
	local TORSOVERTICALVELOCITY = RootPart.Velocity.y
1015
	local HITFLOOR = Raycast(RootPart.Position, (CF(RootPart.Position, RootPart.Position + VT(0, -1, 0))).lookVector, 4, Character)
1016
	local WALKSPEEDVALUE = 5 / (Humanoid.WalkSpeed / 16)
1017
	if ANIM == "Walk" and TORSOVELOCITY > 1 then
1018
		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)
1019
		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)
1020
		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(45 * COS(SINE / WALKSPEEDVALUE))), 1 / Animation_Speed)
1021
		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(45 * COS(SINE / WALKSPEEDVALUE))), 1 / Animation_Speed)
1022
	elseif (ANIM ~= "Walk") or (TORSOVELOCITY < 1) then
1023
		RootJoint.C1 = Clerp(RootJoint.C1, ROOTC0 * CF(0, 0, 0) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.2 / Animation_Speed)
1024
		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)
1025
		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)
1026
		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)
1027
	end
1028
	if TORSOVERTICALVELOCITY > 1 and HITFLOOR == nil then
1029
		ANIM = "Jump"
1030
		if ATTACK == false then
1031
			RootJoint.C0 = Clerp(RootJoint.C0, ROOTC0 * CF(0, 0, 0) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.2 / Animation_Speed)
1032
			Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(-20), RAD(0), RAD(0)), 0.2 / Animation_Speed)
1033
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(-40), RAD(0), RAD(20)) * RIGHTSHOULDERC0, 0.2 / Animation_Speed)
1034
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(-40), RAD(0), RAD(-20)) * LEFTSHOULDERC0, 0.2 / Animation_Speed)
1035
			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)
1036
			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)
1037
	    end
1038
	elseif TORSOVERTICALVELOCITY < -1 and HITFLOOR == nil then
1039
		ANIM = "Fall"
1040
		if ATTACK == false then
1041
			RootJoint.C0 = Clerp(RootJoint.C0, ROOTC0 * CF(0, 0, 0 ) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.2 / Animation_Speed)
1042
			Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0 , 0 + ((1) - 1)) * ANGLES(RAD(20), RAD(0), RAD(0)), 0.2 / Animation_Speed)
1043
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(0), RAD(0), RAD(60)) * RIGHTSHOULDERC0, 0.2 / Animation_Speed)
1044
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(0), RAD(0), RAD(-60)) * LEFTSHOULDERC0, 0.2 / Animation_Speed)
1045
			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)
1046
			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)
1047
		end
1048
	elseif TORSOVELOCITY < 1 and HITFLOOR ~= nil then
1049
		ANIM = "Idle"
1050
		if ATTACK == false then
1051
			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)
1052
			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)
1053
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(0), RAD(0), RAD(12)) * RIGHTSHOULDERC0, 0.15 / Animation_Speed)
1054
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(0), RAD(0), RAD(-12)) * LEFTSHOULDERC0, 0.15 / Animation_Speed)
1055
			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)
1056
			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)
1057
		end
1058
	elseif TORSOVELOCITY > 1 and HITFLOOR ~= nil then
1059
		ANIM = "Walk"
1060
		if ATTACK == false then
1061
			RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, -0.1) * ANGLES(RAD(5), RAD(0), RAD(0)), 0.15 / Animation_Speed)
1062
			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)
1063
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5, 0.15 * SIN(SINE / WALKSPEEDVALUE)) * ANGLES(RAD(25 * COS(SINE / WALKSPEEDVALUE)), RAD(0), RAD(5)) * RIGHTSHOULDERC0, 1 / Animation_Speed)
1064
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.5, -0.15 * SIN(SINE / WALKSPEEDVALUE)) * ANGLES(RAD(-25 * COS(SINE / WALKSPEEDVALUE)), RAD(0), RAD(-5)) * LEFTSHOULDERC0, 1 / Animation_Speed)
1065
			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)
1066
			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)
1067
		end
1068
	end
1069
	unanchor()
1070
	Humanoid.MaxHealth = "inf"
1071
	Humanoid.Health = "inf"
1072
	if Rooted == false then
1073
		Disable_Jump = false
1074
		Humanoid.WalkSpeed = Speed
1075
	elseif Rooted == true then
1076
		Disable_Jump = true
1077
		Humanoid.WalkSpeed = 0
1078
	end
1079
end
1080
1081
--//=================================\\
1082
--\\=================================//
1083
1084
1085
1086
1087
1088
--//====================================================\\--
1089
--||			  		 END OF SCRIPT
1090
--\\====================================================//--