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