View difference between Paste ID: YvvnTs5S and aPu14cRx
SHOW: | | - or go back to the newest paste.
1
--https://github.com/Mokiros/roblox-FE-compatibility
2
if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
3
local Player,game,owner = owner,game
4
local RealPlayer = Player
5
do
6
	print("FE Compatibility code V2 by Mokiros")
7
	local RealPlayer = RealPlayer
8
	script.Parent = RealPlayer.Character
9
10
	--Fake event to make stuff like Mouse.KeyDown work
11
	local Disconnect_Function = function(this)
12
		this[1].Functions[this[2]] = nil
13
	end
14
	local Disconnect_Metatable = {__index={disconnect=Disconnect_Function,Disconnect=Disconnect_Function}}
15
	local FakeEvent_Metatable = {__index={
16
		Connect = function(this,f)
17
			local i = tostring(math.random(0,10000))
18
			while this.Functions[i] do
19
				i = tostring(math.random(0,10000))
20
			end
21
			this.Functions[i] = f
22
			return setmetatable({this,i},Disconnect_Metatable)
23
		end
24
	}}
25
	FakeEvent_Metatable.__index.connect = FakeEvent_Metatable.__index.Connect
26
	local function fakeEvent()
27
		return setmetatable({Functions={}},FakeEvent_Metatable)
28
	end
29
30
	--Creating fake input objects with fake variables
31
    local FakeMouse = {Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent(),Button2Up=fakeEvent(),Button2Down=fakeEvent()}
32
    FakeMouse.keyUp = FakeMouse.KeyUp
33
    FakeMouse.keyDown = FakeMouse.KeyDown
34
	local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
35
	local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
36
		CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
37
	end}
38
	--Merged 2 functions into one by checking amount of arguments
39
	CAS.UnbindAction = CAS.BindAction
40
41
	--This function will trigger the events that have been :Connect()'ed
42
	local function TriggerEvent(self,ev,...)
43
		for _,f in pairs(self[ev].Functions) do
44
			f(...)
45
		end
46
	end
47
	FakeMouse.TriggerEvent = TriggerEvent
48
	UIS.TriggerEvent = TriggerEvent
49
50
	--Client communication
51
	local Event = Instance.new("RemoteEvent")
52
	Event.Name = "UserInput_Event"
53
	Event.OnServerEvent:Connect(function(plr,io)
54
	    if plr~=RealPlayer then return end
55
		FakeMouse.Target = io.Target
56
		FakeMouse.Hit = io.Hit
57
		if not io.isMouse then
58
			local b = io.UserInputState == Enum.UserInputState.Begin
59
			if io.UserInputType == Enum.UserInputType.MouseButton1 then
60
				return FakeMouse:TriggerEvent(b and "Button1Down" or "Button1Up")
61
			end
62
			if io.UserInputType == Enum.UserInputType.MouseButton2 then
63
				return FakeMouse:TriggerEvent(b and "Button2Down" or "Button2Up")
64
			end
65
			for _,t in pairs(CAS.Actions) do
66
				for _,k in pairs(t.Keys) do
67
					if k==io.KeyCode then
68
						t.Function(t.Name,io.UserInputState,io)
69
					end
70
				end
71
			end
72
			FakeMouse:TriggerEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
73
			UIS:TriggerEvent(b and "InputBegan" or "InputEnded",io,false)
74
	    end
75
	end)
76
	Event.Parent = NLS([==[local Event = script:WaitForChild("UserInput_Event")
77
	local Mouse = owner:GetMouse()
78
	local UIS = game:GetService("UserInputService")
79
	local input = function(io,RobloxHandled)
80
		if RobloxHandled then return end
81
		--Since InputObject is a client-side instance, we create and pass table instead
82
		Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target})
83
	end
84
	UIS.InputBegan:Connect(input)
85
	UIS.InputEnded:Connect(input)
86
	local h,t
87
	--Give the server mouse data every second frame, but only if the values changed
88
	--If player is not moving their mouse, client won't fire events
89
	local HB = game:GetService("RunService").Heartbeat
90
	while true do
91
		if h~=Mouse.Hit or t~=Mouse.Target then
92
			h,t=Mouse.Hit,Mouse.Target
93
			Event:FireServer({isMouse=true,Target=t,Hit=h})
94
		end
95
		--Wait 2 frames
96
		for i=1,2 do
97
			HB:Wait()
98
		end
99
	end]==],script)
100
101
	----Sandboxed game object that allows the usage of client-side methods and services
102
	--Real game object
103
	local RealGame = game
104
105
	--Metatable for fake service
106
	local FakeService_Metatable = {
107
		__index = function(self,k)
108
			local s = rawget(self,"_RealService")
109
			if s then
110
				return typeof(s[k])=="function"
111
				and function(_,...)return s[k](s,...)end or s[k]
112
			end
113
		end,
114
		__newindex = function(self,k,v)
115
			local s = rawget(self,"_RealService")
116
			if s then s[k]=v end
117
		end
118
	}
119
	local function FakeService(t,RealService)
120
		t._RealService = typeof(RealService)=="string" and RealGame:GetService(RealService) or RealService
121
		return setmetatable(t,FakeService_Metatable)
122
	end
123
124
	--Fake game object
125
	local FakeGame = {
126
		GetService = function(self,s)
127
			return rawget(self,s) or RealGame:GetService(s)
128
		end,
129
		Players = FakeService({
130
			LocalPlayer = FakeService({GetMouse=function(self)return FakeMouse end},Player)
131
		},"Players"),
132
		UserInputService = FakeService(UIS,"UserInputService"),
133
		ContextActionService = FakeService(CAS,"ContextActionService"),
134
		RunService = FakeService({
135
			_btrs = {},
136
			RenderStepped = RealGame:GetService("RunService").Heartbeat,
137
			BindToRenderStep = function(self,name,_,fun)
138
				self._btrs[name] = self.Heartbeat:Connect(fun)
139
			end,
140
			UnbindFromRenderStep = function(self,name)
141
				self._btrs[name]:Disconnect()
142
			end,
143
		},"RunService")
144
	}
145
	rawset(FakeGame.Players,"localPlayer",FakeGame.Players.LocalPlayer)
146
	FakeGame.service = FakeGame.GetService
147
	FakeService(FakeGame,game)
148
	--Changing owner to fake player object to support owner:GetMouse()
149
	game,owner = FakeGame,FakeGame.Players.LocalPlayer
150
end
151
--[[ World eater Script ]]--
152
--[[ Declarations ]]--
153
wait(.0000000000000000000001)
154
local Player = game:GetService("Players").LocalPlayer
155
local Character = Player.Character
156
local Head = Character.Head
157
local Torso = Character.Torso
158
local Right_Arm = Character["Right Arm"]
159
local Right_Leg = Character["Right Leg"]
160
local Left_Arm = Character["Left Arm"]
161
local Left_Leg = Character["Left Leg"]
162
local Humanoid = Character.Humanoid
163
local Animation = "Idle"
164
local Mouse = Player:GetMouse()
165
local LeftShoulder = Torso["Left Shoulder"] 
166
local Left_Hip = Torso["Left Hip"] 
167
local RightShoulder = Torso["Right Shoulder"] 
168
local Right_Hip = Torso["Right Hip"] 
169
local Root = Character.HumanoidRootPart
170
local RootJoint = Root.RootJoint
171
local Attacking = false
172
local CanAttack = true
173
local Anim = "Idle"
174
local Combo = 1 
175
local Blocking = false
176
local MaxDestruction = 1000
177
local Destruction = 0
178
local MaxBlock = 100
179
local Effects = {}
180
local Color = "Bright yellow"
181
local Invert = false
182
local Idle = 0
183
local Equipped = false
184
local Running = false
185
local Unseathed = false
186
local Shard = "None"
187
188
Humanoid.MaxHealth = 3000
189
Humanoid.Health = 3000
190
191
local WorldEaterTheme = Instance.new("Sound",Character)
192
WorldEaterTheme.Name = "WorldEaterTheme"
193
WorldEaterTheme.Looped = true
194
WorldEaterTheme.SoundId = "http://www.roblox.com/asset?id=149981769"
195
WorldEaterTheme:Play()
196
197
Left_Shoulder = Instance.new("Weld", Torso)
198
Left_Shoulder.Part0 = Torso
199
Left_Shoulder.Part1 = Left_Arm
200
Left_Shoulder.Name = "Left Shoulder"
201
Left_Shoulder.C0 = CFrame.new(-1.5,0,0)
202
203
Right_Shoulder = Instance.new("Weld", Torso)
204
Right_Shoulder.Part0 = Torso
205
Right_Shoulder.Part1 = Right_Arm
206
Right_Shoulder.Name = "Right Shoulder"
207
Right_Shoulder.C0 = CFrame.new(1.5,0,0)
208
209
LeftShoulder.Parent = nil
210
RightShoulder.Parent = nil
211
Humanoid.WalkSpeed = 10
212
213
local RootCFrame = CFrame.fromEulerAnglesXYZ(-1.57,0,3.14)
214
Necko = CFrame.new(0, 1, 0, -1, -0, -0, 0, 0, 1, 0, 1, 0)
215
Necko2 = CFrame.new(0, -0.5, 0, -1, -0, -0, 0, 0, 1, 0, 1, 0)
216
Right_Hip_C1 = CFrame.new(0.5, 1, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0)
217
Left_Hip_C1 = CFrame.new(-0.5, 1, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
218
219
220
Movemment = 1
221
Walk = 0
222
223
Animator = Humanoid.Animator
224
--Animate = Character.Animate
225
226
Animator.Parent = nil
227
--Animate.Parent = nil
228
229
local Services = {
230
231
SoundService = game:GetService("SoundService");
232
Players = game:GetService("Players");
233
Debris = game:GetService("Debris");
234
Workspace = game:GetService("Workspace");
235
Lighting = game:GetService("Lighting");
236
HttpService = game:GetService("HttpService");
237
InsertService = game:GetService("InsertService");
238
	
239
}
240
241
local ManaBarGUI = Instance.new("ScreenGui", Player.PlayerGui)
242
ManaBarGUI.Name = "ManaBarGUI"
243
244
local ManaBarP1 = Instance.new("Frame", ManaBarGUI)
245
ManaBarP1.Name = "ManaBarPart1"
246
ManaBarP1.Size = UDim2.new(0,300,0,20)
247
ManaBarP1.Position = UDim2.new(0,350,0.1,0)
248
ManaBarP1.BackgroundColor3 = BrickColor.Black().Color
249
250
local ManaBarP2 = Instance.new("Frame", ManaBarP1)
251
ManaBarP2.Name = "ManaBarPart2"
252
ManaBarP2.Size = UDim2.new(0,300,0,20)
253
ManaBarP2.Position = UDim2.new(0,0,0,0)
254
ManaBarP2.BackgroundColor3 = BrickColor.new("Black").Color
255
256
local ManaBarText = Instance.new("TextLabel", ManaBarP1)
257
ManaBarText.Name = "ManaBarText"
258
ManaBarText.Size = UDim2.new(0,300,0,20)
259
ManaBarText.Position = UDim2.new(0,0,-1.5,0)	
260
ManaBarText.TextScaled = true
261
ManaBarText.Text = "<{[ Destruction ]}> 0 <{[ Destruction ]}>"
262
ManaBarText.BackgroundTransparency = 1
263
ManaBarText.TextStrokeTransparency = 0
264
ManaBarText.TextStrokeColor3 = Color3.new(1,1,1)
265
ManaBarText.TextColor3 = Color3.new(0,0,0)
266
ManaBarText.Font = "Garamond"
267
268
local WorldEaterGui = Instance.new("BillboardGui", Head)
269
WorldEaterGui.ExtentsOffset = Vector3.new(0,5,0)
270
WorldEaterGui.Adornee = Head
271
WorldEaterGui.AlwaysOnTop = true
272
WorldEaterGui.Enabled = true
273
WorldEaterGui.Size = UDim2.new(0, 200,0, 50)
274
275
local WorldEaterText = Instance.new("TextLabel", WorldEaterGui)
276
WorldEaterText.BackgroundTransparency = 1
277
WorldEaterText.Font = "Garamond"
278
WorldEaterText.Size = UDim2.new(0, 200,0, 50)
279
WorldEaterText.TextStrokeColor3 = BrickColor.Red().Color
280
WorldEaterText.TextStrokeTransparency = 0
281
WorldEaterText.TextColor3 = BrickColor.Black().Color
282
WorldEaterText.TextScaled = true
283
WorldEaterText.Text = "World Eater"
284
285
--------[[ Mesh Ids ]]--------
286
287
SpikeMeshId = 1033714
288
SpikeBallId = 9982590
289
StarMeshId = 45428961
290
CrystalMeshId = 9756362
291
292
--[[ Essential Functions ]]--
293
function NoOutlines(Part)
294
		Part.TopSurface,Part.BottomSurface,Part.LeftSurface,Part.RightSurface,Part.FrontSurface,Part.BackSurface = 10,10,10,10,10,10
295
end
296
	
297
298
local CreatePart = function(Parent, Name, Color, Size, Material, Transparency, Shape)
299
300
local Part = Instance.new("Part", Parent)
301
Part.Name = Name
302
Part.BrickColor = BrickColor.new(Color)
303
Part.Size = Size
304
Part.Material = Material
305
Part.Transparency = Transparency
306
Part.Shape = Shape
307
Part.CanCollide = false
308
NoOutlines(Part)
309
310
return Part
311
312
end
313
314
local CreateMesh = function(Parent, Scale, Shape)
315
316
317
local Mesh = Instance.new("BlockMesh", Parent)
318
Mesh.Scale = Scale
319
320
return Mesh
321
322
end
323
324
local CreateWedge = function(Parent, Name, Color, Size, Material, Transparency)
325
326
local WedgePart = Instance.new("WedgePart", Parent)
327
WedgePart.Name = Name
328
WedgePart.BrickColor = BrickColor.new(Color)
329
WedgePart.Size = Size
330
WedgePart.Material = Material
331
WedgePart.Transparency = Transparency
332
WedgePart.CanCollide = false
333
NoOutlines(WedgePart)
334
335
return WedgePart
336
337
end
338
339
local CreateWeld = function(Parent, Cframe, P1 , P0)
340
	
341
local Weld = Instance.new("Weld", Parent)
342
Weld.Part0 = P0
343
Weld.Part1 = P1
344
Weld.Name = P0.Name .. "To" .. P1.Name
345
Weld.C0 = Cframe
346
347
return Weld	
348
	
349
end
350
351
local CreateVelocity = function(Parent,Velocity,Force)
352
	
353
local BodyVelocity = Instance.new("BodyVelocity", Parent)
354
BodyVelocity.Velocity = Velocity
355
BodyVelocity.MaxForce = Force	
356
357
	
358
	
359
return BodyVelocity	
360
	
361
end
362
363
364
local CreateCrystal = function(Parent, Name, Color, Size, Material, Transparency, Scale)
365
366
367
local Part = Instance.new("Part", Parent)
368
Part.Name = Name
369
Part.BrickColor = BrickColor.new(Color)
370
Part.Size = Size
371
Part.Material = Material
372
Part.Transparency = Transparency
373
Part.CanCollide = false
374
NoOutlines(Part)
375
376
local Mesh = Instance.new("SpecialMesh", Part)
377
Mesh.MeshId = "http://www.roblox.com/asset?id=" .. CrystalMeshId
378
Mesh.Scale = Scale
379
380
return Mesh and Part
381
382
end
383
384
local MakeSFX = function(Parent, Id, Volume, Pitch, Type)
385
	
386
local SFX = Instance.new("Sound", Parent)
387
SFX.SoundId = "http://www.roblox.com/asset?id=" .. Id
388
SFX.Name = "SFX"
389
SFX:Play()
390
SFX.Volume = Volume
391
SFX.Pitch = Pitch
392
SFX.PlayOnRemove = true
393
SFX:Remove()
394
	
395
if Type == "Echo" then
396
	
397
Instance.new("EchoSoundEffect", SFX)	
398
	
399
end	
400
	
401
end
402
403
local CreateSpike = function(Parent, Name, Color, Size, Material, Transparency, Scale)
404
405
406
local Part = Instance.new("Part", Parent)
407
Part.Name = Name
408
Part.BrickColor = BrickColor.new(Color)
409
Part.Size = Size
410
Part.Material = Material
411
Part.Transparency = Transparency
412
Part.CanCollide = false
413
NoOutlines(Part)
414
415
local Mesh = Instance.new("SpecialMesh", Part)
416
Mesh.MeshId = "http://www.roblox.com/asset?id=" .. SpikeMeshId
417
Mesh.Scale = Scale
418
419
return Mesh and Part
420
421
end
422
423
CircleEffect = function(Position, Parent, DSX, DSY, DSZ, SX, SY, SZ, Time, Brickcolor, Material, Transparency)
424
	
425
local Part = Instance.new("Part", Parent)
426
Part.Transparency = Transparency
427
Part.Name = "CircleEffect"
428
Part.Size = Vector3.new()
429
Part.Anchored = true
430
Part.CanCollide = false
431
Part.Position = Position
432
Part.BrickColor = BrickColor.new(Brickcolor)
433
Part.Material = Material
434
NoOutlines(Part)
435
436
local Mesh = Instance.new("SpecialMesh", Part)
437
Mesh.MeshType = "Sphere"
438
Mesh.Scale = Vector3.new(DSX, DSY, DSZ)
439
440
Services.Debris:AddItem(Part, Time)
441
442
443
table.insert(Effects, {Part, "Circle", Time, SX, SY, SZ})
444
445
446
end
447
448
BlockEffect = function(Position, Parent, DSX, DSY, DSZ, SX, SY, SZ, Time, Brickcolor, Material, Transparency)
449
	
450
local Part = Instance.new("Part", Parent)
451
Part.Transparency = Transparency
452
Part.Name = "BlockEffect"
453
Part.Size = Vector3.new()
454
Part.Anchored = true
455
Part.Position = Position
456
Part.CanCollide = false
457
Part.BrickColor = BrickColor.new(Brickcolor)
458
Part.Material = Material
459
NoOutlines(Part)
460
461
local Mesh = Instance.new("BlockMesh", Part)
462
Mesh.Scale = Vector3.new(DSX, DSY, DSZ)
463
464
Services.Debris:AddItem(Part, Time)
465
466
table.insert(Effects, {Part, "Block", Time, SX, SY, SZ})
467
468
469
end
470
471
--[[ Damage function ]]--
472
473
474
function DamageFunction(Hit, Part, Type, HitSFX, Knockback, Min, Max)
475
	
476
local HitHumanoid = Hit.Parent.Humanoid
477
478
479
local Damage = math.random(Min, Max)
480
481
482
coroutine.resume(coroutine.create(function()
483
HitHumanoid:TakeDamage(Damage)
484
end))
485
	
486
if Type == "Shrink" then
487
MakeSFX(Hit.Parent.Torso, 209527235, 1, 1)	
488
for i,v in pairs(Hit.Parent:children()) do
489
if v:IsA("Part") then
490
coroutine.resume(coroutine.create(function()		
491
for i = 1,100 do
492
wait()	
493
v.Size = v.Size - Vector3.new(0.05,0.05,0.05)
494
v.Transparency = v.Transparency + 0.05
495
	
496
end		
497
end))
498
end	
499
end
500
	
501
end	
502
	
503
	
504
	
505
if Type == "Normal" then
506
	
507
local Push = CreateVelocity(Hit.Parent.Torso, Torso.CFrame.lookVector * Knockback, Vector3.new(math.huge,math.huge,math.huge))
508
Services.Debris:AddItem(Push, 0)	
509
DamageLabel(Hit.Parent, Damage, Hit)
510
511
elseif Type == "Ranged" then
512
local Push = CreateVelocity(Hit.Parent.Torso, Part.CFrame.lookVector * Knockback, Vector3.new(math.huge,math.huge,math.huge))
513
Services.Debris:AddItem(Push, 0)	
514
DamageLabel(Hit.Parent, Damage, Hit)
515
516
elseif Type == "Impale" then
517
518
local Spike = CreateSpike(Services.Workspace, "D e a t h", "Black", Vector3.new(), "SmoothPlastic", 0, Vector3.new(1,20,1))	
519
Spike.Anchored = true
520
Spike.Rotation = Vector3.new(math.random(-50,50), 0 , math.random(-50,50))
521
Spike.Position = Hit.Parent.Torso.Position
522
523
524
Services.Debris:AddItem(Spike, 30)
525
526
Hit.Parent:BreakJoints()
527
Hit.Parent.Torso.Position = Spike.Position + Vector3.new(0,5,0)
528
Hit.Parent.Torso.Anchored = true
529
	
530
MakeSFX(Spike, 306247724, 1,1)	
531
MakeSFX(Hit.Parent.Torso, 209527175, 10,1)
532
elseif Type == "Knockdown" then
533
	
534
		
535
local Push = CreateVelocity(Hit.Parent.Torso, Part.CFrame.lookVector * Knockback, Vector3.new(math.huge,math.huge,math.huge))
536
DamageLabel(Hit.Parent, Damage, Hit)
537
Services.Debris:AddItem(Push, 0.3)
538
539
coroutine.resume(coroutine.create(function()
540
	
541
HitHumanoid.PlatformStand = true
542
wait(1)
543
HitHumanoid.PlatformStand = false	
544
	
545
	
546
end))	
547
end
548
549
if HitSFX == "Penetration" then
550
	
551
MakeSFX(Hit, 199149269, 1 , 1)
552
553
elseif HitSFX == "Punch" then
554
	
555
MakeSFX(Hit, 278062209, 1 , 1)
556
	
557
	
558
	
559
	
560
end
561
end
562
563
function DamageLabel(HitCharacter, DamageDealt, Hit)
564
	
565
local DamageShowingPart = CreatePart(Services.Workspace, "ShowDamage", "Bright yellow", Vector3.new(0.8,0.8,0.8), "Neon", 1, "Block")
566
DamageShowingPart.Position = HitCharacter.Head.Position
567
568
local DamageGui = Instance.new("BillboardGui", DamageShowingPart)
569
DamageGui.Name = "Damage"
570
DamageGui.AlwaysOnTop = true
571
DamageGui.Size = UDim2.new(5, 0, 5, 0)
572
573
local DamageNumber = Instance.new("TextLabel", DamageGui)
574
DamageNumber.Size = UDim2.new(1,0,1,0)
575
if Hit.Parent:FindFirstChild("Head") then
576
DamageNumber.TextStrokeColor3 = Hit.Parent.Head.BrickColor.Color
577
DamageNumber.TextColor3 = Hit.BrickColor.Color
578
end
579
DamageNumber.TextStrokeTransparency = 0
580
DamageNumber.BackgroundTransparency = 1
581
DamageNumber.Font = "SourceSansBold"
582
DamageNumber.TextScaled = true
583
DamageNumber.Text = DamageDealt
584
	
585
local BodyVelocity = Instance.new("BodyVelocity", DamageShowingPart)
586
BodyVelocity.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
587
BodyVelocity.Velocity = Vector3.new(0,2,0)	
588
	
589
Services.Debris:AddItem(DamageShowingPart, 3)
590
	
591
	
592
end 
593
594
function ValidateDamage(Part, Distance ,Min , Max, Type, HitSFX, Knockback)
595
for _,WorkspaceChildren in pairs(workspace:children()) do
596
	
597
local HitHumanoid = WorkspaceChildren:findFirstChild("Humanoid")
598
599
if HitHumanoid ~= nil then
600
local Hit = WorkspaceChildren:findFirstChild("Torso")
601
602
if Hit ~= nil then
603
	
604
local Target = Hit.Position - Part.Position
605
606
local Magnitude = Target.magnitude
607
608
if Magnitude <= Distance and WorkspaceChildren.Name ~= Player.Name then
609
	
610
local HitBlock = Hit.Parent:FindFirstChild("Block")	
611
	
612
if HitBlock ~= nil and HitBlock:FindFirstChild("BlockDurability") and HitBlock.Value == true then
613
614
local HitBlock2 = Hit.Parent.Block.BlockDurability	
615
	
616
if HitBlock2.Value > 15 then
617
	
618
local HitN = math.random(1,5)
619
	
620
HitBlock2.Value = HitBlock2.Value - 15	
621
	
622
	
623
if HitN == 1 then
624
MakeSFX(Hit ,199148971, 0.5, 1)	
625
end
626
627
if HitN == 2 then
628
MakeSFX(Hit ,199149025, 0.5, 1)	
629
end
630
631
if HitN == 3 then
632
MakeSFX(Hit ,199149072, 0.5, 1)	
633
end
634
635
if HitN == 4 then
636
MakeSFX(Hit ,199149109, 0.5, 1)	
637
end
638
639
if HitN == 5 then
640
MakeSFX(Hit ,199149119, 0.5, 1)	
641
end
642
return
643
end	
644
end
645
646
DamageFunction(Hit, Part, Type, HitSFX, Knockback, Min, Max)
647
648
	
649
650
end
651
end
652
end
653
end
654
end
655
 
656
657
658
local Cloak = Instance.new("Part", Character)
659
Cloak.Name = "Cloak"
660
Cloak.CanCollide = false
661
Cloak.BrickColor = BrickColor.new("Institutional white")
662
663
local CloakMesh = Instance.new("SpecialMesh", Cloak)
664
CloakMesh.MeshId = "http://www.roblox.com/asset?id=16150814"
665
CloakMesh.TextureId = "http://www.roblox.com/asset?id=16150799"
666
667
local CloakWeld = CreateWeld(Cloak, CFrame.new(0,0,0) * CFrame.Angles(0,0,0), Head , Cloak, "ArkusToCharacter")
668
669
for i,v in pairs(Character:children()) do
670
if v:IsA("Accessory") then
671
	v:Remove()
672
elseif v:IsA("Shirt") then
673
	v:Remove()
674
elseif v:IsA("Pants") then
675
	v:Remove()	
676
elseif v:IsA("BodyColors") then
677
678
Head.BrickColor =BrickColor.new("Really black")
679
Torso.BrickColor = BrickColor.new("Really black")
680
Right_Arm.BrickColor = BrickColor.new("Really black")
681
Right_Leg.BrickColor = BrickColor.new("Really black")
682
Left_Arm.BrickColor = BrickColor.new("Really black")
683
Left_Leg.BrickColor = BrickColor.new("Really black")
684
685
v.HeadColor = BrickColor.new("Really black")
686
v.TorsoColor = BrickColor.new("Really black")
687
v.RightArmColor = BrickColor.new("Really black")
688
v.LeftArmColor = BrickColor.new("Really black")
689
v.RightLegColor = BrickColor.new("Really black")
690
v.LeftLegColor = BrickColor.new("Really black")
691
	
692
end	
693
end
694
695
696
697
--[[ CLerp Declarations ]]--
698
699
function clerp(a,b,t)
700
	local qa = {QuaternionFromCFrame(a)}
701
	local qb = {QuaternionFromCFrame(b)} 
702
	local ax, ay, az = a.x, a.y, a.z 
703
	local bx, by, bz = b.x, b.y, b.z
704
	local _t = 1-t
705
	return QuaternionToCFrame(_t*ax + t*bx, _t*ay + t*by, _t*az + t*bz,QuaternionSlerp(qa, qb, t)) 
706
end 
707
 
708
function QuaternionFromCFrame(cf) -- dis one
709
	local mx, my, mz, m00, m01, m02, m10, m11, m12, m20, m21, m22 = cf:components() 
710
	local trace = m00 + m11 + m22 
711
	if trace > 0 then 
712
		local s = math.sqrt(1 + trace) 
713
		local recip = 0.5/s 
714
		return (m21-m12)*recip, (m02-m20)*recip, (m10-m01)*recip, s*0.5 
715
	else 
716
		local i = 0 
717
		if m11 > m00 then
718
			i = 1
719
		end
720
		if m22 > (i == 0 and m00 or m11) then 
721
			i = 2 
722
		end 
723
		if i == 0 then 
724
			local s = math.sqrt(m00-m11-m22+1) 
725
			local recip = 0.5/s 
726
			return 0.5*s, (m10+m01)*recip, (m20+m02)*recip, (m21-m12)*recip 
727
		elseif i == 1 then 
728
			local s = math.sqrt(m11-m22-m00+1) 
729
			local recip = 0.5/s 
730
			return (m01+m10)*recip, 0.5*s, (m21+m12)*recip, (m02-m20)*recip 
731
		elseif i == 2 then 
732
			local s = math.sqrt(m22-m00-m11+1) 
733
			local recip = 0.5/s return (m02+m20)*recip, (m12+m21)*recip, 0.5*s, (m10-m01)*recip 
734
		end 
735
	end 
736
end
737
 
738
function QuaternionToCFrame(px, py, pz, x, y, z, w) 
739
	local xs, ys, zs = x + x, y + y, z + z 
740
	local wx, wy, wz = w*xs, w*ys, w*zs 
741
	local xx = x*xs 
742
	local xy = x*ys 
743
	local xz = x*zs 
744
	local yy = y*ys 
745
	local yz = y*zs 
746
	local zz = z*zs 
747
	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)) 
748
end
749
 
750
function QuaternionSlerp(a, b, t) 
751
	local cosTheta = a[1]*b[1] + a[2]*b[2] + a[3]*b[3] + a[4]*b[4] 
752
	local startInterp, finishInterp; 
753
	if cosTheta >= 0.0001 then 
754
		if (1 - cosTheta) > 0.0001 then 
755
			local theta = math.acos(cosTheta) 
756
			local invSinTheta = 1/math.sin(theta) 
757
			startInterp = math.sin((1-t)*theta)*invSinTheta 
758
			finishInterp = math.sin(t*theta)*invSinTheta  
759
		else 
760
			startInterp = 1-t 
761
			finishInterp = t 
762
		end 
763
	else 
764
		if (1+cosTheta) > 0.0001 then 
765
			local theta = math.acos(-cosTheta) 
766
			local invSinTheta = 1/math.sin(theta) 
767
			startInterp = math.sin((t-1)*theta)*invSinTheta 
768
			finishInterp = math.sin(t*theta)*invSinTheta 
769
		else 
770
			startInterp = t-1 
771
			finishInterp = t 
772
		end 
773
	end 
774
	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 
775
end
776
777
function RayCast(Pos, Dir, Max, Ignore)
778
	return game:service("Workspace"):FindPartOnRay(Ray.new(Pos, Dir.unit * (Max or 999.999)), Ignore) 
779
end 
780
781
782
function Bars()
783
	
784
--[[ Mana Bar ]]--	
785
if Destruction ~= MaxDestruction then
786
	
787
Destruction = Destruction + 1
788
789
end
790
791
if Destruction >= MaxDestruction then
792
	
793
Destruction = Destruction
794
	
795
end
796
797
798
ManaBarText.Text = "<{[ Destruction ]}> <|"..Destruction.."|> <{[ Destruction ]}>"
799
800
ManaBarP2.Size = UDim2.new(Destruction / Destruction,0,0,20)	
801
	
802
end
803
local EyeReference = CreatePart(Character, "Reference", "Dark stone grey", Vector3.new(), "SmoothPlastic", 1, "Block")
804
local EyeReferenceWeld = CreateWeld(EyeReference,  CFrame.new(0.15,-0.1,-0.7), EyeReference, Head)
805
806
coroutine.resume(coroutine.create(function()
807
	
808
while wait(3) do
809
810
	
811
CircleEffect(EyeReference.Position, Services.Workspace,  1, 1, 1, 1, 1, 1, 0.5, "Bright red", "Neon", 0.5)
812
	
813
	
814
end
815
	
816
end))
817
--[[ Attacks ]]--
818
819
function Attack1()
820
Attacking = true
821
MakeSFX(EyeReference, 341336274, 1,1)
822
wait(0.3)
823
local Reference = CreatePart(Services.Workspace, "Reference", "Dark stone grey", Vector3.new(), "SmoothPlastic", 1, "Block")
824
local ReferenceWeld = CreateWeld(Reference,  CFrame.new(0,0.5,-5), Reference, Root)
825
826
local Reference2 = CreatePart(Services.Workspace, "Reference", "Dark stone grey", Vector3.new(), "SmoothPlastic", 1, "Block")
827
local Reference2Weld = CreateWeld(Reference2,  CFrame.new(0,0.5,-2), Reference2, Root)
828
829
830
for i = 1,10 do
831
832
wait()
833
RootJoint.C0 = clerp(RootJoint.C0,RootCFrame*CFrame.new(0,0,0)* CFrame.Angles(0,0,-1.6),0.5)
834
Torso.Neck.C0 = clerp(Torso.Neck.C0,Necko * CFrame.Angles(0,0,1.3),0.2)
835
Right_Shoulder.C0 = clerp(Right_Shoulder.C0, CFrame.new(1.5, 0.1, 0) * CFrame.Angles(0,0,0.2), 0.3)
836
Left_Shoulder.C0 = clerp(Left_Shoulder.C0,  CFrame.new(-1.5, 0.5, 0) * CFrame.Angles(0,0,-1.6), 0.4)
837
Right_Hip.C0=clerp(Right_Hip.C0,CFrame.new(1,-1,0) * CFrame.Angles(0,1.6,0),0.3)
838
Left_Hip.C0=clerp(Left_Hip.C0,CFrame.new(-1,-1,0) * CFrame.Angles(0,-1.6,0),0.3) 
839
840
end
841
842
CircleEffect(Reference2.Position, Services.Workspace,  50, 50, 50, -5, -5, -5, 5, "Bright red", "Neon", 0.5)
843
wait(0.5)
844
CircleEffect(Reference2.Position, Services.Workspace,  50, 50, 50, -5, -5, -5, 5, "Bright red", "Neon", 0.5)
845
wait(0.5)
846
CircleEffect(Reference2.Position, Services.Workspace,  50, 50, 50, -5, -5, -5, 5, "Bright red", "Neon", 0.5)
847
wait(0.5)
848
CircleEffect(Reference2.Position, Services.Workspace,  50, 50, 50, -5, -5, -5, 5, "Bright red", "Neon", 0.5)
849
wait(0.5)
850
MakeSFX(Reference, 306247724, 1,1)	
851
CircleEffect(Reference.Position, Services.Workspace,  1, 1, 1, 5, 5, 5, 5, "Bright red", "Neon", 0.5)
852
ValidateDamage(Reference, 10 ,10 , 14, "Shrink", "Penetration", 5)
853
Attacking = false
854
end
855
856
function Attack2()
857
	
858
Attacking = true
859
Humanoid.WalkSpeed = 0
860
Humanoid.JumpPower = 0
861
862
863
for i = 1,25 do
864
wait()
865
866
RootJoint.C0 = clerp(RootJoint.C0,RootCFrame*CFrame.new(0,0,0)* CFrame.Angles(-0.5,0,0),0.2)
867
Torso.Neck.C0 = clerp(Torso.Neck.C0,Necko * CFrame.Angles(-0.5,0,0),0.3)
868
Right_Shoulder.C0 = clerp(Right_Shoulder.C0, CFrame.new(1, 1, 0) * CFrame.Angles(3.2,0,-0.6), 0.3)
869
Left_Shoulder.C0 = clerp(Left_Shoulder.C0, CFrame.new(-1, 1, 0) * CFrame.Angles(3.2,0,0.6), 0.3)
870
Right_Hip.C0=clerp(Right_Hip.C0,CFrame.new(1,-1,0)*CFrame.Angles(0,1.6,-0.3),0.2)
871
Left_Hip.C0=clerp(Left_Hip.C0,CFrame.new(-1,-1,-0.5)*CFrame.Angles(0,-1.6,0),0.2)
872
	
873
end
874
875
MakeSFX(Torso, 142070127, 1, 1)
876
ValidateDamage(Torso, 60 ,23, 26, "Knockdown", "Penetration", 15)
877
local Hit, Position = RayCast(Torso.Position,(CFrame.new(Root.Position,Root.Position - Vector3.new(0,1,0))).lookVector,100,Character)
878
if Hit ~= nil then
879
local Reference = CreatePart(Services.Workspace, "Reference", "Dark stone grey", Vector3.new(), "SmoothPlastic", 1, "Block")
880
Reference.Anchored = true
881
Reference.CFrame = CFrame.new(Position)
882
883
CircleEffect(Reference.Position, Services.Workspace,  1, 1, 1, 5, 5, 5, 5, "Bright red", "Neon", 0.5)
884
885
game:GetService("Debris"):AddItem(Reference,0.1)
886
for i=1,50 do
887
	
888
local Ground = CreatePart(Services.Workspace, "Ground", Hit.BrickColor.Color, Vector3.new(math.random(1,3), math.random(1,3), math.random(1,3)), Hit.Material, 0, "Block")
889
Ground.Anchored = true
890
Ground.CanCollide = true
891
Ground.CFrame = CFrame.new(Position) * CFrame.new(math.random(-30,30), 0, math.random(-30,30)) * CFrame.Angles(math.random(-50,50),math.random(-50,50), math.random(-50,50))
892
893
game:GetService("Debris"):AddItem(Ground,10)
894
895
end
896
end
897
	
898
for i = 1,25 do
899
wait()
900
901
RootJoint.C0 = clerp(RootJoint.C0,RootCFrame*CFrame.new(0,0,0)* CFrame.Angles(0,0,0),0.5)
902
Torso.Neck.C0 = clerp(Torso.Neck.C0,Necko * CFrame.Angles(0.5,0,0),0.3)
903
Right_Shoulder.C0 = clerp(Right_Shoulder.C0, CFrame.new(1.5, 0, 0.1) * CFrame.Angles(-0.2,0,0), 0.3)
904
Left_Shoulder.C0 = clerp(Left_Shoulder.C0, CFrame.new(-1.5, 0, 0.1) * CFrame.Angles(-0.2,0,0), 0.3)
905
Right_Hip.C0=clerp(Right_Hip.C0,CFrame.new(1,-1,0)*CFrame.Angles(0,1.6,-0.3),0.2)
906
Left_Hip.C0=clerp(Left_Hip.C0,CFrame.new(-1,-1,-0.5)*CFrame.Angles(0,-1.6,0),0.2)
907
	
908
end
909
910
Attacking = false
911
Humanoid.WalkSpeed = 16
912
Humanoid.JumpPower = 50
913
	
914
	
915
	
916
end
917
918
919
function Attack3()
920
Humanoid.WalkSpeed = 0
921
Humanoid.JumpPower = 0
922
Attacking = true
923
wait(1)
924
MakeSFX(Torso, 341336274, 1, 1.2)
925
CircleEffect(Torso.Position, Services.Workspace,  1, 1, 1, 20, 20, 20, 5, "Black", "Neon", 0.5)
926
wait(1)
927
MakeSFX(Torso, 341336274, 1, 1.2)
928
CircleEffect(Torso.Position, Services.Workspace,  1, 1, 1, 20, 20, 20, 5, "Black", "Neon", 0.5)
929
wait(1)
930
MakeSFX(Torso, 341336274, 1, 1.2)
931
CircleEffect(Torso.Position, Services.Workspace,  1, 1, 1, 20, 20, 20, 5, "Black", "Neon", 0.5)
932
ValidateDamage(Torso, 60 ,0, 0, "Impale", "Penetration", 15)
933
Humanoid.WalkSpeed = 16
934
Humanoid.JumpPower = 50
935
Attacking = false
936
end
937
938
Mouse.Button1Down:connect(function()
939
if not Attacking then
940
if Combo == 1 then
941
942
Combo = 2
943
Attack1()
944
945
946
elseif Combo == 2 then
947
948
Attack2()
949
Combo = 3
950
951
elseif Combo == 3 then
952
	
953
Attack3()
954
Combo = 1
955
956
end	
957
end
958
end)
959
960
--[[ CLerp Animations ]]--
961
Change1 = 0
962
Change2 = 0
963
Change3 = 0
964
Change4 = 0
965
966
while true do
967
wait()
968
969
local Torvel = (Root.Velocity*Vector3.new(1,0,1)).magnitude 
970
local Velderp = Root.Velocity.y
971
HitFloor,PosFloor = RayCast(Root.Position,(CFrame.new(Root.Position,Root.Position - Vector3.new(0,1,0))).lookVector,4,Character)	
972
973
Bars()
974
975
976
if Torvel < 1 and HitFloor ~= nil and Attacking == false then
977
Anim = "Idle"
978
	
979
RootJoint.C0 = clerp(RootJoint.C0,RootCFrame*CFrame.new(0,0,0)* CFrame.Angles(0,0,0),0.2)
980
Torso.Neck.C0 = clerp(Torso.Neck.C0,Necko * CFrame.Angles(0,-0.3,0),0.3)
981
Right_Shoulder.C0 = clerp(Right_Shoulder.C0, CFrame.new(1.5, 0.1, 0) * CFrame.Angles(0,0,0.2), 0.3)
982
Left_Shoulder.C0 = clerp(Left_Shoulder.C0, CFrame.new(-1.5, 0.1, 0) * CFrame.Angles(0,0,-0.2), 0.3)
983
Right_Hip.C0=clerp(Right_Hip.C0,CFrame.new(1,-1,0)*CFrame.Angles(0,1.6,0) * CFrame.Angles(-0.1,0,0),0.2)
984
Left_Hip.C0=clerp(Left_Hip.C0,CFrame.new(-1,-1,0)*CFrame.Angles(0,-1.6,0) * CFrame.Angles(-0.1,0,0),0.2)
985
986
end
987
988
989
if 2 < Torvel and Torvel < 22 and HitFloor ~= nil and Attacking == false then
990
Anim = "Walking"
991
992
if Invert == false then
993
Change1 = Change1 + 0.1
994
995
elseif Invert == true then
996
	
997
Change1 = Change1 - 0.1
998
999
end
1000
1001
if Change1 > 0.5 then
1002
	
1003
Invert = true
1004
1005
elseif Change1 < -0.5 then
1006
1007
Invert  = false
1008
1009
end
1010
1011
if Attacking == false then
1012
1013
RootJoint.C0 = clerp(RootJoint.C0,RootCFrame*CFrame.new(0,0,0)* CFrame.Angles(0,0,0),0.2)
1014
Torso.Neck.C0 = clerp(Torso.Neck.C0,Necko * CFrame.Angles(0,-0.3,0),0.3)
1015
Right_Shoulder.C0 = clerp(Right_Shoulder.C0, CFrame.new(1.5, 0, -Change1) * CFrame.Angles(Change1,0,0), 0.3)
1016
Left_Shoulder.C0 = clerp(Left_Shoulder.C0, CFrame.new(-1.5, 0, Change1) * CFrame.Angles(-Change1,0,0), 0.3)
1017
Right_Hip.C0=clerp(Right_Hip.C0,CFrame.new(1,-1,-Change1 / 4)*CFrame.Angles(Change1,1.6,0),0.2)
1018
Left_Hip.C0=clerp(Left_Hip.C0,CFrame.new(-1,-1,Change1 / 4)*CFrame.Angles(-Change1,-1.6,0),0.2)
1019
1020
end
1021
end
1022
1023
if Root.Velocity.y > 1 and HitFloor == nil and Attacking == false then 
1024
Anim = "Jump"
1025
	
1026
RootJoint.C0 = clerp(RootJoint.C0,RootCFrame*CFrame.new(0,0,0)* CFrame.Angles(0,0,0),0.2)
1027
Torso.Neck.C0 = clerp(Torso.Neck.C0,Necko * CFrame.Angles(-0.5,0,0),0.3)
1028
Right_Shoulder.C0 = clerp(Right_Shoulder.C0, CFrame.new(1.5, 0, 0.2) * CFrame.Angles(-0.4,0,0.2), 0.3)
1029
Left_Shoulder.C0 = clerp(Left_Shoulder.C0, CFrame.new(-1.5, 0, 0.2) * CFrame.Angles(-0.4,0,-0.2), 0.3)
1030
Right_Hip.C0=clerp(Right_Hip.C0,CFrame.new(1,-1,-0.2)*CFrame.Angles(-0.2,1.6,0),0.2)
1031
Left_Hip.C0=clerp(Left_Hip.C0,CFrame.new(-1,-1,0)*CFrame.Angles(0,-1.6,0),0.2)
1032
1033
end
1034
1035
if Root.Velocity.y < -1 and HitFloor == nil and Attacking == false then 
1036
Anim = "Fall"
1037
	
1038
RootJoint.C0 = clerp(RootJoint.C0,RootCFrame*CFrame.new(0,0,0)* CFrame.Angles(0,0,0),0.2)
1039
Torso.Neck.C0 = clerp(Torso.Neck.C0,Necko * CFrame.Angles(0.5,0,0),0.3)
1040
Right_Shoulder.C0 = clerp(Right_Shoulder.C0, CFrame.new(1.5, 0, -0.2) * CFrame.Angles(0.4,0,0.2), 0.3)
1041
Left_Shoulder.C0 = clerp(Left_Shoulder.C0, CFrame.new(-1.5, 0, -0.2) * CFrame.Angles(0.4,0,-0.2), 0.3)
1042
Right_Hip.C0=clerp(Right_Hip.C0,CFrame.new(1,-1,-0.2)*CFrame.Angles(-0.2,1.6,0),0.2)
1043
Left_Hip.C0=clerp(Left_Hip.C0,CFrame.new(-1,-1,0)*CFrame.Angles(0,-1.6,0),0.2)
1044
1045
end
1046
1047
1048
if #Effects > 0 then
1049
for E = 1, #Effects do
1050
if Effects[E]~=nil then
1051
local Effect = Effects[E]
1052
1053
if Effect ~= nil then
1054
	
1055
local Part = Effect[1]
1056
local Mode = Effect[2]
1057
local Time = Effect[3]
1058
local SizeX = Effect[4]
1059
local SizeY = Effect[5]
1060
local SizeZ = Effect[6]
1061
1062
if Effect[1].Transparency <= 1 then
1063
if Effect[2] == "Block" then
1064
Effect[1].CFrame = Effect[1].CFrame * CFrame.Angles(math.random(-50,50),math.random(-50,50),math.random(-50,50))
1065
1066
Mesh = Effect[1]:FindFirstChild("Mesh")
1067
if Mesh ~= nil then
1068
Mesh.Scale = Mesh.Scale + Vector3.new(Effect[4],Effect[5],Effect[6])
1069
end
1070
1071
elseif Effect[2] == "Circle" then
1072
	
1073
if Effect[1]:FindFirstChild("Mesh") ~= nil then
1074
Mesh=Effect[1].Mesh
1075
Mesh.Scale = Mesh.Scale + Vector3.new(Effect[4],Effect[5],Effect[6])
1076
end
1077
1078
Effect[1].Transparency = Effect[1].Transparency + 0.05
1079
1080
else
1081
	
1082
Part.Parent=nil
1083
1084
table.remove(Effects, E)
1085
1086
end
1087
end
1088
end
1089
end
1090
end
1091
end
1092
end