View difference between Paste ID: 214wsPa6 and jTXy9SVd
SHOW: | | - or go back to the newest paste.
1
if game:GetService("RunService"):IsClient() then error("Please run as a server script. Use h/ instead of hl/.") end
2
print("FE Compatibility: by WaverlyCole & Mokiros")
3
InternalData = {}
4
do
5
    script.Parent = owner.Character
6
    local Event = Instance.new("RemoteEvent")
7
    Event.Name = "UserInput"
8
    local function NewFakeEvent()
9
        local Fake = {fakeEvent=true,Connect=function(self,Func)self.Function=Func end}Fake.connect = Fake.Connect
10
        return Fake
11
    end
12
    local Mouse = {Target=nil,Hit=CFrame.new(),KeyUp=NewFakeEvent(),KeyDown=NewFakeEvent(),Button1Up=NewFakeEvent(),Button1Down=NewFakeEvent()}
13
    local UserInputService = {InputBegan=NewFakeEvent(),InputEnded=NewFakeEvent()}
14
    local ContextActionService = {Actions={},BindAction = function(self,actionName,Func,touch,...)
15
        self.Actions[actionName] = Func and {Name=actionName,Function=Func,Keys={...}} or nil
16
    end};ContextActionService.UnBindAction = ContextActionService.BindAction
17
    local function TriggerEvent(self,Event,...)
18
        local Trigger = Mouse[Event]
19
        if Trigger and Trigger.fakeEvent and Trigger.Function then
20
            Trigger.Function(...)
21
        end
22
    end
23
    Mouse.TrigEvent = TriggerEvent
24
    UserInputService.TrigEvent = TriggerEvent
25
    Event.OnServerEvent:Connect(function(FiredBy,Input)
26
        if FiredBy.Name ~= owner.Name then end
27
        if Input.MouseEvent then
28
            Mouse.Target = Input.Target
29
            Mouse.Hit = Input.Hit
30
        else
31
            local Begin = Input.UserInputState == Enum.UserInputState.Begin
32
            if Input.UserInputType == Enum.UserInputType.MouseButton1 then
33
                return Mouse:TrigEvent(Begin and "Button1Down" or "Button1Up")
34
            end
35
            for _,Action in pairs(ContextActionService.Actions) do
36
                for _,Key in pairs(Action.Keys) do
37
                    if Key==Input.KeyCode then
38
                        Action.Function(Action.Name,Input.UserInputState,Input)
39
                    end
40
                end
41
            end
42
            Mouse:TrigEvent(Begin and "KeyDown" or "KeyUp",Input.KeyCode.Name:lower())
43
            UserInputService:TrigEvent(Begin and "InputBegan" or "InputEnded",Input,false)
44
        end
45
    end)
46
    InternalData["Mouse"] = Mouse
47
    InternalData["ContextActionService"] = ContextActionService
48
    InternalData["UserInputService"] = UserInputService
49
    Event.Parent = NLS([[
50
        local Player = owner
51
        local Event = script:WaitForChild("UserInput")
52
        local UserInputService = game:GetService("UserInputService")
53
        local Mouse = Player:GetMouse()
54
        local Input = function(Input,gameProcessedEvent)
55
            if gameProcessedEvent then return end
56
            Event:FireServer({KeyCode=Input.KeyCode,UserInputType=Input.UserInputType,UserInputState=Input.UserInputState})
57
        end
58
        UserInputService.InputBegan:Connect(Input)
59
        UserInputService.InputEnded:Connect(Input)
60
        local Hit,Target
61
        while wait(1/30) do
62
            if Hit ~= Mouse.Hit or Target ~= Mouse.Target then
63
                Hit,Target = Mouse.Hit,Mouse.Target
64
                Event:FireServer({["MouseEvent"]=true,["Target"]=Target,["Hit"]=Hit})
65
            end
66
        end
67
    ]],owner.Character)
68
end
69
RealGame = game;game = setmetatable({},{
70
    __index = function (self,Index)
71
        local Sandbox = function (Thing)
72
            if Thing:IsA("Player") then
73
                local RealPlayer = Thing
74-
if Player.Name == "modFrost" then
74+
                return setmetatable({},{
75-
	ColorGlobe = "Bright orange"
75+
                    __index = function (self,Index)
76
                        local Type = type(RealPlayer[Index])
77
                        if Type == "function" then
78
                            if Index:lower() == "getmouse" or Index:lower() == "mouse" then
79
                                return function (self)
80
                                    return InternalData["Mouse"]
81
                                end
82
                            end
83
                            return function (self,...)
84
                                return RealPlayer[Index](RealPlayer,...)
85
                            end
86
                        else
87
                            if Index == "PlrObj" then
88
                                return RealPlayer
89
                            end
90
                            return RealPlayer[Index]
91
                        end
92
                    end;
93
                    __tostring = function(self)
94
                        return RealPlayer.Name
95
                    end
96
                })
97
            end
98
        end
99
        if RealGame[Index] then
100
            local Type = type(RealGame[Index])
101
            if Type == "function" then
102
                if Index:lower() == "getservice" or Index:lower() == "service" then
103
                    return function (self,Service)
104
                        if Service:lower() == "players" then
105
                            return setmetatable({},{
106
                                __index = function (self2,Index2)
107
                                    local RealService = RealGame:GetService(Service)
108
                                    local Type2 = type(Index2)
109
                                    if Type2 == "function" then
110
                                        return function (self,...)
111
                                            return RealService[Index2](RealService,...)
112
                                        end
113
                                    else
114
                                        if Index2:lower() == "localplayer" then
115
                                            return Sandbox(owner)
116
                                        end
117
                                        return RealService[Index2]
118
                                    end
119
                                end;
120
                                __tostring = function(self)
121
                                    return RealGame:GetService(Service).Name
122
                                end
123
                            })
124
                        elseif Service:lower() == "contextactionservice" then
125
                            return InternalData["ContextActionService"]
126
                        elseif Service:lower() == "contextactionservice" then
127
                            return InternalData["UserInputService"]
128
                        elseif Service:lower() == "runservice" then
129
                            return setmetatable({},{
130
                                __index = function(self2,Index2)
131
                                    local RealService = RealGame:GetService(Service)
132
                                    local Type2 = type(Index2)
133
                                    if Type2 == "function" then
134
                                        return function (self,...)
135
                                            return RealService[Index2](RealService,...)
136
                                        end
137
                                    else
138
                                        if Index2:lower() == "bindtorenderstep" then
139
                                            return function (self,Name,Priority,Function)
140
                                                return RealGame:GetService("RunService").Stepped:Connect(Function)
141
                                            end
142
                                        end
143
                                        if Index2:lower() == "renderstepped" then
144
                                            return RealService["Stepped"]
145
                                        end
146
                                        return RealService[Index2]
147
                                    end
148
                                end
149
                            })
150
                        else
151
                            return RealGame:GetService(Service)
152
                        end
153
                    end
154
                end
155
                return function (self,...)
156
                    return RealGame[Index](RealGame,...)
157
                end
158
            else
159
                if game:GetService(Index) then
160
                    return game:GetService(Index)
161
                end
162
                return RealGame[Index]
163
            end
164
        else
165
            return nil
166
        end
167
    end
168
});Game = game;owner = game:GetService("Players").LocalPlayer;script = {}
169
print("Complete! Running...")
170
 
171
 
172
--//Paste script below this line.
173
174
local Player = game:GetService("Players").LocalPlayer
175
local Character = Player.Character
176
local Mouse = Player:GetMouse()
177
local Camera = game:GetService("Workspace").CurrentCamera
178
local Humanoid = Character:findFirstChild("Humanoid")
179
local Torso = Character.Torso
180
local PlayerGui = Player.PlayerGui
181
local Torso = Character:findFirstChild("Torso")
182
local Head = Character:findFirstChild("Head")
183
local RootPart = Character:findFirstChild("HumanoidRootPart")
184
local Root = RootPart.RootJoint
185
local Sides = {"Left","Right"}
186
local Arms = {Character["Left Arm"],Character["Right Arm"]}
187
local Legs = {Character["Left Leg"],Character["Right Leg"]}
188
189
local Bits = {}
190
local Disposables = {}
191
local Discs = {}
192
193
local DiscSpin = 0
194
local Spread = 1.25
195
local RateTop = 1
196
local RateBot = 1
197
local Distance = 0.5
198
local ExtendTop = 1
199
local ExtendBot = 1 
200
local CurrentFrame = 1
201
local Lift = 0
202
local Accel = 1
203
local TurnAngle = 0
204
local rofTop = 1
205
local rofBot = 1
206
local Flutter = 0
207
208
local Front = false
209
local Back = false
210
local Left = false
211
local Right = false
212
local AddSub = false
213
local ChargeHeld = false
214
local BoostHeld = false
215
local BeamHeld = false
216
local AbsDefHeld = false
217
local ExtendGrowthTop = false
218
local ExtendGrowthBot = false
219
local UpdateAnim = true
220
221
222
local CurrentAnimation = "Idle"
223
local LastAnimation = "Idle"
224
local MobilityType = "Float"
225
local ColorGlobe = "White"
226
local ColorBlades = "Black"
227
local xmove,zmove
228
229
local LastBeam = tick()
230
231
if Torso then
232
    for _,v in pairs(Torso:children()) do
233
        if v:IsA("BodyGyro") or v:IsA("BodyVelocity") then
234
            v:Destroy();
235
        end
236
    end
237
end
238
239
local Energy = {}
240
local TotalEnergy = 1000
241
local CurrentEnergy = 1000
242
243
pcall(function()
244
	PlayerGui.EnergyMeter:Destroy()
245
end)
246
if Player.Name == "SonicSydney" then
247
	ColorGlobe = "Bright red"
248
end
249
250
local FlapSound = Instance.new("Sound", Torso)
251
FlapSound.Name = "Flap"
252
FlapSound.SoundId = "http://www.roblox.com/asset/?id=257002377"
253
FlapSound.Volume = 1
254
255
local EnergyMeter = Instance.new("ScreenGui", PlayerGui)
256
EnergyMeter.Name = "EnergyMeter"
257
local Bar = Instance.new("Frame", EnergyMeter)
258
Bar.Size = UDim2.new(0,200,0,10)
259
Bar.Position = UDim2.new(1,-205,1,-15)
260
Bar.BorderSizePixel = 0
261
Bar.BackgroundColor = BrickColor.new("Really black")
262
Bar.BackgroundTransparency = 0.5
263
local Text = Instance.new("TextLabel", Bar)
264
Text.Text = "Energy"
265
Text.TextColor = BrickColor.new("White")
266
Text.BackgroundTransparency = 1
267
Text.Size = UDim2.new(1,0,1,0)
268
Text.Position = UDim2.new(0,0,-1,-10)
269
Text.TextXAlignment = "Left"
270
Text.FontSize = "Size12"
271
local EnergyFill = Instance.new("Frame", Bar)
272
EnergyFill.Size = UDim2.new(0,0,1,-5)
273
EnergyFill.Position = UDim2.new(0,2.5,0,2.5)
274
EnergyFill.BorderSizePixel = 0
275
EnergyFill.BackgroundColor = BrickColor.new(ColorGlobe)
276
EnergyFill.BackgroundTransparency = 0.25
277
278
local ChargeMeter = Instance.new("ScreenGui", PlayerGui)
279
ChargeMeter.Name = "EnergyMeter"
280
local ChargeBar = Instance.new("Frame", ChargeMeter)
281
ChargeBar.Size = UDim2.new(0,200,0,10)
282
ChargeBar.Position = UDim2.new(0.5,-102.5,0.8,-5)
283
ChargeBar.BorderSizePixel = 0
284
ChargeBar.BackgroundColor = BrickColor.new("Really black")
285
ChargeBar.BackgroundTransparency = 0.5
286
local ChargeFill = Instance.new("Frame", ChargeBar)
287
ChargeFill.Size = UDim2.new(0,0,1,-5)
288
ChargeFill.Position = UDim2.new(0,2.5,0,2.5)
289
ChargeFill.BorderSizePixel = 0
290
ChargeFill.BackgroundColor = BrickColor.new("Bright blue")
291
ChargeFill.BackgroundTransparency = 0.25
292
ChargeBar.Visible = false
293
294
local function _Part(Parent,canc,anc,tr,ref,mat,color,size, meshtype, scale)
295
	local part = Instance.new("Part", Parent)
296
	part.Transparency = tr
297
	part.Anchored = anc
298
	part.TopSurface = 10
299
	part.BottomSurface = 10
300
	part.LeftSurface = 10
301
	part.RightSurface = 10
302
	part.FrontSurface = 10
303
	part.BackSurface = 10
304
	part.Locked = true
305
	part.formFactor = 3
306
	part.Reflectance = ref
307
	part.Material = mat
308
	part.CanCollide = canc
309
	part.Size = Vector3.new(size[1],size[2],size[3])
310
	part.BrickColor = BrickColor.new(color)
311
	local mesh
312
	if meshtype == "BlockMesh" then
313
		mesh = Instance.new("BlockMesh", part)
314
	elseif meshtype == "CylinderMesh" then
315
		mesh = Instance.new("CylinderMesh", part)
316
	else
317
		mesh = Instance.new("SpecialMesh", part)
318
		mesh.MeshType = meshtype
319
	end
320
	mesh.Name = "Mesh"
321
	mesh.Scale = Vector3.new(scale[1],scale[2],scale[3])
322
	return part
323
end
324
325
local function _Weld(Parent, p0, c1, c0)
326
	local weld = Instance.new("Motor", Parent)
327
	weld.Part1 = Parent
328
	weld.Part0 = p0
329
	weld.C1 = c1
330
	weld.C0 = c0
331
	weld.Name = "Weld"
332
	return weld
333
end
334
335
local Main = Character:findFirstChild("Main") or Instance.new("Model", Character)
336
Main.Name = "Main"
337
Main:ClearAllChildren()
338
339
pcall(function() Character["Head"]["face"]:Destroy() end)
340
341
for _,Hat in pairs(Character:GetChildren()) do
342
	if Hat:IsA("Accoutrement") then
343
		Hat:Destroy()
344
	end
345
end
346
347
for _,Part in pairs(Character:GetChildren()) do
348
	if Part:IsA("BasePart") then
349
		Part.Transparency = 1
350
	end
351
end
352
353
local function GenF(Part, Cframe, Color)
354
	local A = _Part(Main,false,false,0,0,"SmoothPlastic",Color,{0.05,0.5,0.05},"BlockMesh",{1,1,0.5})
355
	_Weld(A, Part, CFrame.new(), Cframe)
356
	local B = _Part(Main,false,false,0,0,"SmoothPlastic",Color,{0.2,0.2,0.3},"BlockMesh",{1,0.5,1})
357
	_Weld(B, A, CFrame.new(), CFrame.new(0,-0.2,0.2))
358
	local C = _Part(Main,false,false,0,0,"SmoothPlastic",Color,{0.2,0.2,0.2},"BlockMesh",{1,0.5,1})
359
	_Weld(C, A, CFrame.new(), CFrame.new(0,-0.025,0.15))
360
end
361
362
local Down = _Part(Main,false,false,1,1,"SmoothPlastic","Black",{1,1,1},"Brick",{1,1,1})
363
_Weld(Down, Torso, CFrame.Angles(math.rad(90),0,0), CFrame.new())
364
365
local AnchorPart = _Part(Main,false,false,0.1,0,"Neon",ColorGlobe,{0.8,0.8,0.8},"Sphere",{1,1,1})
366
_Weld(AnchorPart, Character["Right Arm"], CFrame.new(0,1.5,0), CFrame.new())
367
368
local AnchorPart2 = _Part(Main,false,false,0.1,0,"Neon",ColorGlobe,{0.8,0.8,0.8},"Sphere",{1,1,1})
369
_Weld(AnchorPart2, Character["Left Arm"], CFrame.new(0,1.5,0), CFrame.new())
370
371
local AnchorPart3 = _Part(Main,false,false,0.1,0,"Neon",ColorGlobe,{0.8,0.8,0.8},"Sphere",{1,1,1})
372
_Weld(AnchorPart3, Character["Right Leg"], CFrame.new(0,1.5,0), CFrame.new())
373
374
local AnchorPart4 = _Part(Main,false,false,0.1,0,"Neon",ColorGlobe,{0.8,0.8,0.8},"Sphere",{1,1,1})
375
_Weld(AnchorPart4, Character["Left Leg"], CFrame.new(0,1.5,0), CFrame.new())
376
377
--Back
378
379
local AnchorPart5 = _Part(Main,false,false,0.1,0,"Neon",ColorGlobe,{0.6,0.6,0.6},"Sphere",{1,1,1})
380
_Weld(AnchorPart5, Character.Torso, CFrame.new(0.75,-0.5,-1), CFrame.new())
381
382
local AnchorPart6 = _Part(Main,false,false,0.1,0,"Neon",ColorGlobe,{0.6,0.6,0.6},"Sphere",{1,1,1})
383
_Weld(AnchorPart6, Character.Torso, CFrame.new(-0.75,-0.5,-1), CFrame.new())
384
385
local AnchorPart7 = _Part(Main,false,false,0.1,0,"Neon",ColorGlobe,{0.4,0.4,0.4},"Sphere",{1,1,1})
386
_Weld(AnchorPart7, Character.Torso, CFrame.new(0.5,0.25,-0.8), CFrame.new())
387
388
local AnchorPart8 = _Part(Main,false,false,0.1,0,"Neon",ColorGlobe,{0.4,0.4,0.4},"Sphere",{1,1,1})
389
_Weld(AnchorPart8, Character.Torso, CFrame.new(-0.5,0.25,-0.8), CFrame.new())
390
391
local WingLeft = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,2,1},"Wedge",{1,1,1})
392
local WingLeftMain = _Weld(WingLeft, AnchorPart5, CFrame.new(), CFrame.new())
393
local WingLeftP1 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,2,1},"Wedge",{1,1,1})
394
_Weld(WingLeftP1, WingLeft, CFrame.new(0,-2,0) * CFrame.Angles(math.rad(180),0,0), CFrame.new())
395
local WingLeftD = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{0.25,1.8*2,0.45*2})
396
WingLeftD.Mesh.MeshId = "rbxassetid://9756362"
397
_Weld(WingLeftD, WingLeft, CFrame.new(0,1,-0.25) * CFrame.Angles(math.rad(-15),0,0), CFrame.new())
398
table.insert(Bits, {Side = true; Weld = WingLeftMain; Series = 0;Type = "Wing"})
399
400
local WingRight = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,2,1},"Wedge",{1,1,1})
401
local WingRightMain = _Weld(WingRight, AnchorPart6, CFrame.new(), CFrame.new())
402
local WingRightP1 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,2,1},"Wedge",{1,1,1})
403
_Weld(WingRightP1, WingRight, CFrame.new(0,-2,0) * CFrame.Angles(math.rad(180),0,0), CFrame.new())
404
local WingRightD = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{0.25,1.8*2,0.45*2})
405
WingRightD.Mesh.MeshId = "rbxassetid://9756362"
406
_Weld(WingRightD, WingRight, CFrame.new(0,1,-0.25) * CFrame.Angles(math.rad(-15),0,0), CFrame.new())
407
table.insert(Bits, {Side = false; Weld = WingRightMain; Series = 0;Type = "Wing"})
408
409
local WingLeftLower = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1.5,0.5},"Wedge",{1,1,1})
410
local WingLeftLowerMain = _Weld(WingLeftLower, AnchorPart7, CFrame.new(), CFrame.new())
411
local WingLeftLowerP1 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1.5,0.5},"Wedge",{1,1,1})
412
_Weld(WingLeftLowerP1, WingLeftLower, CFrame.new(0,-1.5,0) * CFrame.Angles(math.rad(180),0,0), CFrame.new())
413
local WingLeftLowerD = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{0.25,2.8,0.45})
414
WingLeftLowerD.Mesh.MeshId = "rbxassetid://9756362"
415
_Weld(WingLeftLowerD, WingLeftLower, CFrame.new(0,0.75,-0.15) * CFrame.Angles(math.rad(-10),0,0), CFrame.new())
416
table.insert(Bits, {Side = true; Weld = WingLeftLowerMain; Series = 0;Type = "WingLow"})
417
418
local WingRightLower = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1.5,0.5},"Wedge",{1,1,1})
419
local WingRightLowerMain = _Weld(WingRightLower, AnchorPart8, CFrame.new(), CFrame.new())
420
local WingRightLowerP1 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1.5,0.5},"Wedge",{1,1,1})
421
_Weld(WingRightLowerP1, WingRightLower, CFrame.new(0,-1.5,0) * CFrame.Angles(math.rad(180),0,0), CFrame.new())
422
local WingRightLowerD = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{0.25,2.8,0.45})
423
WingRightLowerD.Mesh.MeshId = "rbxassetid://9756362"
424
_Weld(WingRightLowerD, WingRightLower, CFrame.new(0,0.75,-0.15) * CFrame.Angles(math.rad(-10),0,0), CFrame.new())
425
table.insert(Bits, {Side = false; Weld = WingRightLowerMain; Series = 0;Type = "WingLow"})
426
427
for i = 1, 6, 1 do
428
	local TriP1 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1,0.5},"Wedge",{1,1,1})
429
	local Main = _Weld(TriP1, AnchorPart, CFrame.new(), CFrame.new())
430
	local TriP2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1,0.5},"Wedge",{1,1,1})
431
	_Weld(TriP2, TriP1, CFrame.new(0,-1,0) * CFrame.Angles(math.rad(180),0,0), CFrame.new())
432
	local DiamondB = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{0.25,1.8,0.45})
433
	DiamondB.Mesh.MeshId = "rbxassetid://9756362"
434
	_Weld(DiamondB, TriP1, CFrame.new(0,0.5,-0.125) * CFrame.Angles(math.rad(-15),0,0),CFrame.new())
435
	table.insert(Bits, {Side = false; Weld = Main; Series = i;Type = "Top"})
436
end
437
438
for i = 1, 6, 1 do
439
	local TriP1 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1,0.5},"Wedge",{1,1,1})
440
	local Main = _Weld(TriP1, AnchorPart2, CFrame.new(), CFrame.new())
441
	local TriP2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1,0.5},"Wedge",{1,1,1})
442
	_Weld(TriP2, TriP1, CFrame.new(0,-1,0) * CFrame.Angles(math.rad(180),0,0), CFrame.new())
443
	local DiamondB = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{0.25,1.8,0.45})
444
	DiamondB.Mesh.MeshId = "rbxassetid://9756362"
445
	_Weld(DiamondB, TriP1, CFrame.new(0,0.5,-0.125) * CFrame.Angles(math.rad(-15),0,0),CFrame.new())
446
	table.insert(Bits, {Side = true; Weld = Main; Series = i;Type = "Top"})
447
end
448
449
for i = 1, 6, 1 do
450
	local TriP1 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1,0.5},"Wedge",{1,1,1})
451
	local Main = _Weld(TriP1, AnchorPart3, CFrame.new(), CFrame.new())
452
	local TriP2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1,0.5},"Wedge",{1,1,1})
453
	_Weld(TriP2, TriP1, CFrame.new(0,-1,0) * CFrame.Angles(math.rad(180),0,0), CFrame.new())
454
	local DiamondB = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{0.25,1.8,0.45})
455
	DiamondB.Mesh.MeshId = "rbxassetid://9756362"
456
	_Weld(DiamondB, TriP1, CFrame.new(0,0.5,-0.125) * CFrame.Angles(math.rad(-15),0,0),CFrame.new())
457
	table.insert(Bits, {Side = false; Weld = Main; Series = i;Type = "Bot"})
458
end
459
460
for i = 1, 6, 1 do
461
	local TriP1 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1,0.5},"Wedge",{1,1,1})
462
	local Main = _Weld(TriP1, AnchorPart4, CFrame.new(), CFrame.new())
463
	local TriP2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1,0.5},"Wedge",{1,1,1})
464
	_Weld(TriP2, TriP1, CFrame.new(0,-1,0) * CFrame.Angles(math.rad(180),0,0), CFrame.new())
465
	local DiamondB = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{0.25,1.8,0.45})
466
	DiamondB.Mesh.MeshId = "rbxassetid://9756362"
467
	_Weld(DiamondB, TriP1, CFrame.new(0,0.5,-0.125) * CFrame.Angles(math.rad(-15),0,0),CFrame.new())
468
	table.insert(Bits, {Side = true; Weld = Main; Series = i;Type = "Bot"})
469
end
470
471
--[[local WingAnchor = _Part(Main,false,false,1,0,"SmoothPlastic",ColorBlades,{1,1,1},"BlockMesh",{1,1,1})
472
_Weld(WingAnchor, Character.Torso, CFrame.new(0.5,-0.5,-1), CFrame.new())
473
local LengthWing1 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.3,1.5,0.3},"BlockMesh",{1,1,1})
474
_Weld(LengthWing1, WingAnchor, CFrame.new(0.5,-0.55,0.35) * CFrame.Angles(math.rad(290),math.rad(45),0), CFrame.new())
475
local WingAnchor2 = _Part(Main,false,false,1,0,"SmoothPlastic",ColorBlades,{1,1,1},"BlockMesh",{1,1,1})
476
_Weld(WingAnchor2, LengthWing1, CFrame.new(0,-0.75,0), CFrame.new())
477
local LengthWing2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.3,1.5,0.3},"BlockMesh",{1,1,1})
478
_Weld(LengthWing2, WingAnchor2, CFrame.new(0,-0.6,0) * CFrame.Angles(math.rad(350),0,0), CFrame.new())
479
local WingAnchor3 = _Part(Main,false,false,1,0,"SmoothPlastic",ColorBlades,{1,1,1},"BlockMesh",{1,1,1})
480
_Weld(WingAnchor3, LengthWing2, CFrame.new(0,-0.75,0), CFrame.new())
481
local LengthWing3 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.3,1.5,0.3},"BlockMesh",{1,1,1})
482
_Weld(LengthWing3, WingAnchor3, CFrame.new(0,-0.6,0) * CFrame.Angles(math.rad(-10),0,0), CFrame.new())
483
local WingAnchor4 = _Part(Main,false,false,1,0,"SmoothPlastic",ColorBlades,{1,1,1},"BlockMesh",{1,1,1})
484
_Weld(WingAnchor4, LengthWing3, CFrame.new(0,-0.75,0), CFrame.new())
485
local LengthWing4 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.3,1.5,0.3},"BlockMesh",{1,1,1})
486
_Weld(LengthWing4, WingAnchor4, CFrame.new(0,-0.6,0) * CFrame.Angles(math.rad(-15),0,0), CFrame.new())
487
]]-- Scrapped for now...
488
489
--[[Body]]--
490
491
local BHead = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"Head",{1.25,1.25,1.25})
492
_Weld(BHead,Head,CFrame.new(),CFrame.new())
493
local BHelm = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{1,1,1})
494
BHelm.Mesh.MeshId = "rbxassetid://17438747"
495
_Weld(BHelm,BHead,CFrame.new(0,-0.2,0),CFrame.new())
496
local BHelm2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{0.95,0.97,0.95})
497
BHelm2.Mesh.MeshId = "rbxassetid://17438747"
498
_Weld(BHelm2,BHelm,CFrame.new(0,0,-0.02),CFrame.new())
499
local EyeL = _Part(Main,false,false,0,0,"Neon",ColorGlobe,{1,1,1},"Sphere",{0.25,0.075,0.075})
500
_Weld(EyeL,Head,CFrame.new(0.2,0.25,0.55)*CFrame.Angles(0,math.rad(40),0),CFrame.new())
501
local EyeR = _Part(Main,false,false,0,0,"Neon",ColorGlobe,{1,1,1},"Sphere",{0.25,0.075,0.075})
502
_Weld(EyeR,Head,CFrame.new(-0.2,0.25,0.55)*CFrame.Angles(0,math.rad(-40),0),CFrame.new())
503
local Mouth = _Part(Main,false,false,0,0,"Neon",ColorGlobe,{1,1,1},"Sphere",{0.25,0.075,0.075})
504
_Weld(Mouth,Head,CFrame.new(0,0.45,0.53),CFrame.new())
505
local BTorso = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{1,0.4,1})
506
BTorso.Mesh.MeshId = "rbxasset://fonts\\torso.mesh"
507
_Weld(BTorso,Torso,CFrame.new(0,-0.45,0),CFrame.new())
508
local BTorso2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{0.85,0.6,0.85})
509
BTorso2.Mesh.MeshId = "rbxasset://fonts\\torso.mesh"
510
_Weld(BTorso2,BTorso,CFrame.new(0,0.8,0),CFrame.new())
511
local BTorsoCore = _Part(Main,false,false,0,0,"Neon",ColorGlobe,{1,1,1},"Sphere",{0.5,0.5,0.5})
512
_Weld(BTorsoCore, Torso, CFrame.new(0,-0.5,0.4),CFrame.new())
513
local BTorsoCoreDisc = _Part(Main,false,false,0,0,"SmoothPlastic","Medium stone grey",{1,1,1},"FileMesh",{0.525,0.525,0.2})
514
BTorsoCoreDisc.Mesh.MeshId = "rbxassetid://3270017"
515
_Weld(BTorsoCoreDisc, BTorsoCore, CFrame.new(0,0,0.1),CFrame.new())
516
local BNeck = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"Head",{0.8,1,0.8})
517
_Weld(BNeck,Head,CFrame.new(0,0.8,0),CFrame.new())
518
519
for i=1,3 do
520
	local BTorsoAb = _Part(Main,false,false,0,0,"SmoothPlastic","Medium stone grey",{1,1,1},"FileMesh",{0.2,0.075,0.2})
521
	BTorsoAb.Mesh.MeshId = "rbxasset://fonts\\torso.mesh"
522
	_Weld(BTorsoAb, Torso, CFrame.new(-0.5,-0.3 + 0.3*i,0.35)*CFrame.Angles(0,0,math.rad(15)),CFrame.new())
523
end
524
for i=1,3 do
525
	local BTorsoAb = _Part(Main,false,false,0,0,"SmoothPlastic","Medium stone grey",{1,1,1},"FileMesh",{0.2,0.075,0.2})
526
	BTorsoAb.Mesh.MeshId = "rbxasset://fonts\\torso.mesh"
527
	_Weld(BTorsoAb, Torso, CFrame.new(0.5,-0.3 + 0.3*i,0.35)*CFrame.Angles(0,0,math.rad(-15)),CFrame.new())
528
end
529
530
local function Arm(bool)
531
	local Limb, Offset
532
	if bool then
533
		Limb = Character["Left Arm"]
534
		Offset = 0.52
535
	else
536
		Limb = Character["Right Arm"]
537
		Offset = -0.52
538
	end
539
540
	local ShldrL = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{1,0.35,1})
541
	ShldrL.Mesh.MeshId = "rbxasset://fonts\\rightarm.mesh"
542
	_Weld(ShldrL,Limb,CFrame.new(0,-0.6,0),CFrame.new())
543
	local ShldrL2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{0.85,0.5,0.85})
544
	ShldrL2.Mesh.MeshId = "rbxasset://fonts\\rightarm.mesh"
545
	_Weld(ShldrL2,Limb,CFrame.new(0,0.2,0),CFrame.new())
546
	local ShldrL3 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{0.75,0.2,0.75})
547
	ShldrL3.Mesh.MeshId = "rbxasset://fonts\\rightarm.mesh"
548
	_Weld(ShldrL3,Limb,CFrame.new(0,0.85,0),CFrame.new())
549
	local ShldrL4 = _Part(Main,false,false,0,0,"SmoothPlastic","Really black",{1,1,1},"FileMesh",{0.5,0.05,0.5})
550
	ShldrL4.Mesh.MeshId = "rbxasset://fonts\\rightarm.mesh"
551
	_Weld(ShldrL4,ShldrL3,CFrame.new(0,0.16,0),CFrame.new())
552
	--X Pat--
553
	local ShldrLD = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{1.1,0.03,1.35})
554
	ShldrLD.Mesh.MeshId = "rbxasset://fonts\\rightarm.mesh"
555
	_Weld(ShldrLD,Limb,CFrame.new(0,0,0),CFrame.Angles(math.rad(45),0,0))
556
	local ShldrLD2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{1.1,0.03,1.35})
557
	ShldrLD2.Mesh.MeshId = "rbxasset://fonts\\rightarm.mesh"
558
	_Weld(ShldrLD2,Limb,CFrame.new(0,0,0),CFrame.Angles(math.rad(-45),0,0))
559
	local ShldrLDB = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{1.35,0.03,1.1})
560
	ShldrLDB.Mesh.MeshId = "rbxasset://fonts\\rightarm.mesh"
561
	_Weld(ShldrLDB,Limb,CFrame.new(0,0,0),CFrame.Angles(0,0,math.rad(45)))
562
	local ShldrLD2B = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{1.35,0.03,1.1})
563
	ShldrLD2B.Mesh.MeshId = "rbxasset://fonts\\rightarm.mesh"
564
	_Weld(ShldrLD2B,Limb,CFrame.new(0,0,0),CFrame.Angles(0,0,math.rad(-45)))
565
566
	local Disc = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{0.55,0.55,0.55})
567
	Disc.Mesh.MeshId = "rbxassetid://47260990"
568
	_Weld(Disc, ShldrL, CFrame.new(0,0,Offset),CFrame.Angles(0,math.rad(90),0))
569
	--3270017
570
	local DiscC = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{0.55,0.55,0.1})
571
	DiscC.Mesh.MeshId = "rbxassetid://3270017"
572
	_Weld(DiscC, Disc, CFrame.new(),CFrame.new())
573
574
	table.insert(Discs, Disc)
575
end
576
577
local function Leg(bool)
578
	local Limb, Offset
579
	if bool then
580
		Limb = Character["Left Leg"]
581
		Offset = 0.5
582
	else
583
		Limb = Character["Right Leg"]
584
		Offset = -0.5
585
	end
586
	local LegL = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{0.95,0.35,0.95})
587
	LegL.Mesh.MeshId = "rbxasset://fonts\\leftleg.mesh"
588
	_Weld(LegL,Limb,CFrame.new(0,-0.7,0),CFrame.new())
589
	local LegL2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{0.85,0.5,0.85})
590
	LegL2.Mesh.MeshId = "rbxasset://fonts\\leftleg.mesh"
591
	_Weld(LegL2,Limb,CFrame.new(0,0.15,0),CFrame.new())
592
	local LegL3 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{0.75,0.2,0.75})
593
	LegL3.Mesh.MeshId = "rbxasset://fonts\\leftleg.mesh"
594
	_Weld(LegL3,Limb,CFrame.new(0,0.85,0),CFrame.new())
595
	local LegL4 = _Part(Main,false,false,0,0,"SmoothPlastic","Really black",{1,1,1},"FileMesh",{0.5,0.05,0.5})
596
	LegL4.Mesh.MeshId = "rbxasset://fonts\\leftleg.mesh"
597
	_Weld(LegL4,LegL3,CFrame.new(0,0.16,0),CFrame.new())
598
	local LegL5 = _Part(Main,false,false,0,0,"SmoothPlastic","Medium stone grey",{1,1,1},"FileMesh",{0.9,0.2,0.9})
599
	LegL5.Mesh.MeshId = "rbxasset://fonts\\leftleg.mesh"
600
	_Weld(LegL5,LegL2,CFrame.new(0,0,0),CFrame.new())
601
602
	local MiniRocket = _Part(Main,false,false,0,0,"SmoothPlastic","Medium stone grey",{1,1,1},"FileMesh",{0.2,0.2,0.2})
603
	MiniRocket.Mesh.MeshId = "rbxasset://fonts\\leftleg.mesh"
604
	_Weld(MiniRocket,LegL5,CFrame.new(Offset,0,0),CFrame.new())
605
	local MiniRocket2 = _Part(Main,false,false,0,0,"SmoothPlastic","Really black",{1,1,1},"BlockMesh",{0.125,0.1,0.125})
606
	_Weld(MiniRocket2,LegL5,CFrame.new(Offset,0.16,0),CFrame.new())
607
end
608
609
Arm(true)
610
Arm(false)
611
Leg(true)
612
Leg(false)
613
614
--Spin Disc 22768172
615
--[[Done]]--
616
617
local Welds = {
618
	ArmW = {
619
		Left = Instance.new("Weld",Character);
620
		Right = Instance.new("Weld",Main);
621
	};
622
	LegW = {
623
		Left = Instance.new("Weld",Main);
624
		Right = Instance.new("Weld",Main);
625
	};
626
	HeadW = {
627
		Middle = Instance.new("Weld",Main);
628
	};
629
}
630
local RWelds = {
631
	ArmW = {
632
		Left = Torso["Left Shoulder"];
633
		Right = Torso["Right Shoulder"];
634
	};
635
	LegW = {
636
		Left = Torso["Left Hip"];
637
		Right = Torso["Right Hip"];
638
	};
639
	HeadW = {
640
		Middle = Torso["Neck"];
641
	};
642
}
643
644
local LA,RA = Welds.ArmW.Left,Welds.ArmW.Right
645
local LL,LR = Welds.LegW.Left,Welds.LegW.Right
646
local HD = Welds.HeadW.Middle
647
local LAD = CFrame.new(-1.5,0.5,0)
648
local RAD = CFrame.new(1.5,0.5,0)
649
local HDD = CFrame.new(0,-1.5,0)
650
local LLD = CFrame.new(0.5,2,0)
651
local RLD = CFrame.new(-0.5,2,0)
652
local RootD = CFrame.Angles(-1.57,0,-3.15)
653
Welds.ArmW.Left.C1,Welds.ArmW.Left.C0,Welds.ArmW.Left.Part0 = CFrame.new(0, 0.5, 0),CFrame.new(-1.5, 0.5, 0),Torso
654
Welds.ArmW.Right.C1,Welds.ArmW.Right.C0,Welds.ArmW.Right.Part0 = CFrame.new(0, 0.5, 0),CFrame.new(1.5, 0.5, 0),Torso
655
Welds.LegW.Left.C1,Welds.LegW.Left.Part0 = LLD,Torso
656
Welds.LegW.Right.C1,Welds.LegW.Right.Part0 = RLD,Torso 
657
Welds.HeadW.Middle.C1,Welds.HeadW.Middle.Part0 = HDD,Torso
658
659
local CurrentLeftArm = LAD
660
local CurrentRightArm = RAD
661
local CurrentLeftLeg = LLD
662
local CurrentRightLeg = RLD
663
664
local function lerp(a, b, c)
665
    return a+(b-a)*c
666
end
667
668
local function AnimLerp(c1, c2, al)
669
    local com1 = {c1.X,c1.Y,c1.Z,c1:toEulerAnglesXYZ()}
670
    local com2 = {c2.X,c2.Y,c2.Z,c2:toEulerAnglesXYZ()}
671
    for i,v in pairs(com1) do 
672
    	com1[i] = lerp(v,com2[i],al) 
673
   	end
674
    return CFrame.new(com1[1],com1[2],com1[3]) * CFrame.Angles(select(4,unpack(com1)))
675
end
676
677
local _Arm = function(side,tf)
678
	local Arm = nil
679
	local Weld = nil
680
	local RWeld = nil
681
	for _,S in pairs(Sides) do
682
		if side:lower() == S:lower() then
683
			for _,A in pairs(Arms) do
684
				if A.Name:lower():find(side:lower()) then
685
					Arm = A
686
					Weld = Welds.ArmW[S]
687
					RWeld = RWelds.ArmW[S]
688
				end
689
			end
690
		end
691
	end
692
	if Arm and Weld and RWeld then
693
		if tf then
694
			Weld.Part1 = Arm
695
			RWeld.Part1 = nil
696
		elseif not tf then
697
			Weld.Part1 = nil
698
			RWeld.Part1 = Arm
699
		else
700
			print("Error")
701
		end
702
	end
703
end
704
705
local _Leg = function(side,tf)
706
	local Leg = nil
707
	local Weld = nil
708
	local RWeld = nil
709
	for _,S in pairs(Sides) do
710
		if side:lower() == S:lower() then
711
			for _,A in pairs(Legs) do
712
				if A.Name:lower():find(side:lower()) then
713
					Leg = A
714
					Weld = Welds.LegW[S]
715
					RWeld = RWelds.LegW[S]
716
				end
717
			end
718
		end
719
	end
720
	if Leg and Weld and RWeld then
721
		if tf then
722
			Weld.Part1 = Leg
723
			RWeld.Part1 = nil
724
		elseif not tf then
725
			Weld.Part1 = nil
726
			RWeld.Part1 = Leg
727
		else
728
			print("Error")
729
		end
730
	end
731
end
732
733
local _Head = function(tf)
734
	local Head = nil
735
	local Weld = nil
736
	local RWeld = nil
737
	Head = Character["Head"]
738
	Weld = Welds.HeadW.Middle
739
	RWeld = RWelds.HeadW.Middle
740
	if Head and Weld and RWeld then
741
		if tf then
742
			Weld.Part1 = Head
743
			RWeld.Part1 = nil
744
		elseif not tf then
745
			Weld.Part1 = nil
746
			RWeld.Part1 = Head
747
		else
748
			print("Error")
749
		end
750
	end 
751
end
752
753
pcall(function()
754
    Character.Animate.Disabled = true
755
end)
756
if Humanoid then
757
    Humanoid.PlatformStand = true
758
end
759
pcall(function()
760
    Torso.Velocity = Variables.Momentum
761
end)
762
763
local Rotate = Instance.new("BodyGyro",Torso)
764
Rotate.P = 10^6
765
Rotate.maxTorque = Vector3.new(Rotate.P,Rotate.P,Rotate.P)
766
Rotate.cframe = Torso.CFrame
767
768
local Move = Instance.new("BodyPosition",Torso)
769
Move.maxForce = Vector3.new(1,1,1)*(10^6)
770
Move.position = Torso.CFrame.p
771
772
local function LaserBeam()
773
	UpdateAnim = false
774
	CurrentAnimation = "DisableHandAnim"
775
	rofTop = 6
776
	for i=0,1,0.1 do
777
		RA.C0 = AnimLerp(CurrentRightArm, RAD * CFrame.Angles(math.rad(75),0,math.rad(-20)), i)
778
	    LA.C0 = AnimLerp(CurrentLeftArm, LAD * CFrame.Angles(math.rad(75),0,math.rad(20)), i)
779
	    wait()
780
	end
781
782
	ChargeBar.Visible = true;
783
784
	local Charge = 0
785
	local Downt = _Part(Main,false,true,0,0,"Neon",ColorGlobe,{1,1,1},"Sphere",{1,1,1})
786
	local Effect = Instance.new("ParticleEmitter", Downt)
787
	Effect.Texture = "rbxassetid://283631720"
788
	Effect.VelocitySpread = 0
789
	Effect.Acceleration = Vector3.new(0,0,0)
790
	Effect.Color = ColorSequence.new(Downt.BrickColor.Color,Downt.BrickColor.Color)
791
	Effect.Speed = NumberRange.new(0)
792
	Effect.Lifetime = NumberRange.new(1,1)
793
	Effect.Rate = 60
794
	Effect.Transparency = NumberSequence.new(0.5,0.8)
795
	Effect.Rotation = NumberRange.new(1,2)
796
797
	while BeamHeld do
798
		Charge = Charge + 1
799
		CurrentEnergy = CurrentEnergy - 1.5
800
		Downt.Mesh.Scale = Downt.Mesh.Scale + Vector3.new(0.02,0.02,0.02)
801
		Downt.CFrame = RootPart.CFrame + (RootPart.CFrame.lookVector * 4)
802
		Effect.Size = NumberSequence.new(Downt.Mesh.Scale.X)
803
		ChargeFill.Size = UDim2.new(Charge/100,-5,1,-5)
804
		wait()
805
		if Charge >= 100 or CurrentEnergy <= 0 then
806
			CurrentEnergy = CurrentEnergy <= 0 and 0 or CurrentEnergy
807
			break
808
		end
809
	end
810
811
	Downt.Anchored = false
812
	Downt.Size = Downt.Mesh.Scale
813
	Downt.Mesh.Scale = Vector3.new(1,1,1)
814
815
	local Velocity = Instance.new("BodyVelocity", Downt)
816
	Velocity.maxForce = Vector3.new(1e7,1e7,1e7)
817
	Velocity.P = 1e7
818
	Velocity.Velocity = (Mouse.Hit.p - Downt.CFrame.p)
819
--[[
820
	--CurrentEnergy = CurrentEnergy <= 0 and 0 or CurrentEnergy - (1.5*Charge)
821
	local Face = Torso.CFrame.lookVector
822
	local Ray = Ray.new(Downt.CFrame.p, (Mouse.Hit.p - Downt.CFrame.p).unit*750)
823
	local Object,Pos = game:GetService("Workspace"):findPartOnRay(Ray, Character)
824
	local Distance = (Pos - Downt.CFrame.p).magnitude
825
	local DrawRay = _Part(Main,false,true,0,0,"Neon",ColorGlobe,{1,1,1},"Cylinder",{Distance,Downt.Mesh.Scale.X,Downt.Mesh.Scale.X})
826
	DrawRay.CFrame = CFrame.new(Pos, Downt.CFrame.p) * CFrame.new(0,0,-Distance/2) * CFrame.Angles(0,math.rad(270),0)
827
828
	local ExplodePart = _Part(Main,false,true,0,0,"Neon",ColorGlobe,{1,1,1},"Sphere",{1,1,1})
829
	ExplodePart.CFrame = CFrame.new(Pos.X,Pos.Y,Pos.Z)
830
831
	local Ignore = {}
832
833
	ExplodePart.Touched:connect(function(Object)
834
		if Object.Parent and Object.Parent:IsA("Model") then
835
			local Model = Object.Parent
836
			if Model:findFirstChild("Humanoid") and not Ignore[Model.Name] and Model.Name ~= Character.Name then
837
				Ignore[Model.Name] = true;
838
				local Humanoid = Model:findFirstChild("Humanoid")
839
				Humanoid:TakeDamage(0.75*Charge)
840
			end
841
		end
842
	end)
843
844
	for i=0,1,0.1 do
845
		wait()
846
		DrawRay.Transparency = i
847
		Downt.Transparency = i
848
		ExplodePart.Size = ExplodePart.Size + Vector3.new(0.04*Charge,0.04*Charge,0.04*Charge)
849
		ExplodePart.CFrame = CFrame.new(Pos.X,Pos.Y,Pos.Z)
850
		ExplodePart.Transparency = i
851
	end
852
	Effect:Destroy()
853
	game:GetService("Debris"):AddItem(DrawRay, 1)
854
	game:GetService("Debris"):AddItem(ExplodePart, 1)]]
855
	game:GetService("Debris"):AddItem(Downt, 10)
856
	UpdateAnim = true
857
	ChargeBar.Visible = false
858
	LastBeam = tick()
859
end
860
861
local function AbsoluteDefence()
862
	UpdateAnim = false
863
864
	while AbsDefHeld do
865
866
		wait()
867
	end
868
869
870
	UpdateAnim = true
871
end
872
873
local function ThrowBlades()
874
	--[[local Thrown = {}
875
	for i,Bit in pairs(Bits) do
876
		if Bit.Type == "Top" then
877
			table.insert(Thrown, {Side = Bit.Side; Weld = Bit.Weld; Series = Bit.Series; Type = Bit.Type})
878
			table.remove(Bits, i)
879
		end
880
	end
881
	]]-- *Construction*
882
end
883
884
Mouse.KeyDown:connect(function(Key)
885
	if Key == "w" then
886
		Front = true
887
	end
888
    if Key == "a" then
889
    	Left = true
890
    end
891
    if Key == "s" then
892
    	Back = true
893
    end
894
    if Key == "q" then
895
    	BoostHeld = not BoostHeld
896
    	if BoostHeld then
897
    		Accel = 3
898
    	else
899
    		Accel = 1
900
    	end
901
    end
902
    if Key == "d" then
903
    	Right = true
904
    end
905
    if Key:byte() == 50 then
906
    	if MobilityType == "Float" then
907
    		MobilityType = "Fly"
908
    	elseif MobilityType == "Fly" then
909
    		MobilityType = "Ground"
910
    	elseif MobilityType == "Ground" then
911
    		MobilityType = "Float"
912
    	end
913
    end
914
    if Key == "h" then
915
    	if CurrentEnergy <= 0 then
916
    		return
917
    	end
918
    	AbsDefHeld = true
919
    	AbsoluteDefence()
920
    end
921
    if Key == "f" then
922
    	if CurrentEnergy <= 0 or tick()-LastBeam <= 1 then
923
			return
924
		end
925
    	BeamHeld = true
926
    	LaserBeam()
927
    end
928
    if Key == "q" then
929
    	ThrowBlades()
930
    end
931
	while BoostHeld do
932
		wait()
933
		CurrentEnergy = CurrentEnergy <= 0 and 0 or CurrentEnergy - 0.5
934
		if CurrentEnergy <= 0 then
935
			break
936
		end
937
	end
938
    if Key == "g" then
939
    	ChargeHeld = true
940
		UpdateAnim = false
941
		CurrentAnimation = "DisableHandAnim"
942
		rofTop = 15
943
		for i=0,1,0.1 do
944
			wait()
945
			AnchorPart.Weld.C1 = AnimLerp(AnchorPart.Weld.C1, CFrame.new(0,3,0), i)
946
			AnchorPart2.Weld.C1 = AnimLerp(AnchorPart2.Weld.C1, CFrame.new(0,3,0), i)
947
			RA.C0 = AnimLerp(RA.C0, RAD * CFrame.Angles(math.rad(160),0,math.rad(10)), i)
948
			LA.C0 = AnimLerp(LA.C0, LAD * CFrame.Angles(math.rad(160),0,math.rad(-10)), i)
949
		end
950
951
    	while ChargeHeld do
952
    		wait()
953
    		local NRG = _Part(Main,false,true,0,0,"SmoothPlastic",ColorGlobe,{0.2,0.2,0.2},"Sphere",{1,1,1})
954
    		NRG.CFrame = AnchorPart.CFrame * CFrame.new(math.random(-2.5,2.5),math.random(-2.5,2.5),math.random(-2.5,2.5))
955
    		local NRGB = _Part(Main,false,true,0,0,"SmoothPlastic",ColorGlobe,{0.2,0.2,0.2},"Sphere",{1,1,1})
956
    		NRGB.CFrame = AnchorPart2.CFrame * CFrame.new(math.random(-2.5,2.5),math.random(-2.5,2.5),math.random(-2.5,2.5))
957
    		table.insert(Energy, NRG)
958
    		table.insert(Energy, NRGB)
959
    		for i,nrg in pairs(Energy) do
960
    			nrg.Transparency = nrg.Transparency + 0.05
961
    			nrg.Mesh.Scale = nrg.Mesh.Scale + Vector3.new(0.1,0.1,0.1)
962
    			nrg.CFrame = CFrame.new(nrg.CFrame.p, AnchorPart.CFrame.p) * CFrame.Angles(0,0,-math.pi/2)
963
    			if nrg.Transparency >= 1 then
964
    				table.remove(Energy, i)
965
    				nrg:Destroy()
966
    			end
967
    		end
968
    		CurrentEnergy = CurrentEnergy >= TotalEnergy and TotalEnergy or CurrentEnergy + 10
969
    	end
970
971
		for i=0,1,0.1 do
972
			wait()
973
			AnchorPart.Weld.C1 = AnimLerp(AnchorPart.Weld.C1, CFrame.new(0,1.5,0), i)
974
			AnchorPart2.Weld.C1 = AnimLerp(AnchorPart2.Weld.C1, CFrame.new(0,1.5,0), i)
975
			for x,nrg in pairs(Energy) do
976
    			nrg.Transparency = nrg.Transparency + 0.15
977
    			nrg.Mesh.Scale = nrg.Mesh.Scale + Vector3.new(0.2,0.2,0.2)
978
    			nrg.CFrame = CFrame.new(nrg.CFrame.p, AnchorPart.CFrame.p) * CFrame.Angles(0,0,-math.pi/2)
979
    			if nrg.Transparency >= 1 then
980
    				table.remove(Energy, x)
981
    				nrg:Destroy()
982
    			end
983
    		end
984
		end
985
		UpdateAnim = true
986
    end
987
end)
988
989
Mouse.KeyUp:connect(function(Key)
990
	if Key == "w" then
991
		Front = false
992
	end
993
    if Key == "a" then
994
    	Left = false
995
    end
996
    if Key == "s" then
997
    	Back = false
998
    end
999
    if Key == "d" then
1000
    	Right = false
1001
    end
1002
    if Key == "f" then
1003
    	BeamHeld = false
1004
    end
1005
    if Key == "h" then
1006
    	AbsDefHeld = false
1007
    end
1008
    if Key == "g" then
1009
    	ChargeHeld = false
1010
    end
1011
    if Key == "0" then
1012
    	BoostHeld = false
1013
    end
1014
end)
1015
1016
_Arm("Left", true)
1017
_Arm("Right", true)
1018
_Leg("Left", true)
1019
_Leg("Right", true)
1020
_Head(true)
1021
1022
game:GetService("RunService").Stepped:connect(function()
1023
	EnergyFill.Size = UDim2.new(CurrentEnergy/TotalEnergy,-5,1,-5)
1024
	RateTop = RateTop + rofTop
1025
	if RateTop >= 360 then
1026
		RateTop = 1
1027
	end
1028
1029
	RateBot = RateBot + rofBot
1030
	if RateBot >= 360 then
1031
		RateBot = 1
1032
	end
1033
1034
1035
	if AddSub == false then
1036
		CurrentFrame = CurrentFrame + 0.01
1037
		if CurrentFrame >= 1 then
1038
			AddSub = true
1039
		end
1040
	elseif AddSub == true then
1041
		CurrentFrame = CurrentFrame - 0.01
1042
		if CurrentFrame <= 0 then
1043
			AddSub = false
1044
		end
1045
	end
1046
1047
	DiscSpin = DiscSpin + 0.1
1048
	for _,Disc in pairs(Discs) do
1049
		Disc.Weld.C0 = CFrame.Angles(0,math.rad(90),DiscSpin)
1050
	end
1051
1052
	if ExtendGrowthTop == false and CurrentAnimation == "Idle" then
1053
		ExtendTop = ExtendTop + 1/2
1054
		if ExtendTop >= 25 then
1055
			ExtendGrowthTop = true
1056
		end
1057
	elseif ExtendGrowthTop == true and CurrentAnimation == "Idle" then
1058
		ExtendTop = ExtendTop - 1/2
1059
		if ExtendTop <= -10 then
1060
			ExtendGrowthTop = false
1061
		end
1062
	elseif CurrentAnimation == "Forward" or CurrentAnimation == "Backward" or CurrentAnimation == "SwivelRight" or CurrentAnimation == "SwivelLeft" then
1063
		ExtendTop = ExtendTop >= 40 and 40 or ExtendTop + 2
1064
	elseif CurrentAnimation == "DisableHandAnim" then
1065
		ExtendTop = ExtendTop >= 50 and 50 or ExtendTop + 2
1066
	end
1067
1068
	if ExtendGrowthBot == false and (CurrentAnimation == "Idle" or CurrentAnimation == "DisableHandAnim") then
1069
		ExtendBot = ExtendBot + 1/2
1070
		if ExtendBot >= 25 then
1071
			ExtendGrowthBot = true
1072
		end
1073
	elseif ExtendGrowthBot == true and (CurrentAnimation == "Idle" or CurrentAnimation == "DisableHandAnim") then
1074
		ExtendBot = ExtendBot - 1/2
1075
		if ExtendBot <= -10 then
1076
			ExtendGrowthBot = false
1077
		end
1078
	elseif CurrentAnimation == "Forward" or CurrentAnimation == "Backward" or CurrentAnimation == "SwivelRight" or CurrentAnimation == "SwivelLeft" then
1079
		ExtendBot = ExtendBot >= 40 and 40 or ExtendBot + 2
1080
	end
1081
1082
	if Front and not Back then
1083
		xmove = 3
1084
		if UpdateAnim then
1085
			CurrentAnimation = "Forward"
1086
		end
1087
	elseif Back and not Front then
1088
		xmove = -3
1089
		if UpdateAnim then
1090
			CurrentAnimation = "Backward"
1091
		end
1092
	else
1093
		xmove = 0
1094
		if UpdateAnim then
1095
			CurrentAnimation = "Idle"
1096
		end
1097
	end
1098
1099
	if Left and not Right then
1100
		if xmove == 0 and UpdateAnim then
1101
			CurrentAnimation = "SwivelLeft"
1102
		end
1103
		ymove = 3
1104
	elseif Right and not Left then
1105
		if xmove == 0 and UpdateAnim then
1106
			CurrentAnimation = "SwivelRight"
1107
		end
1108
		ymove = -3
1109
	else
1110
		ymove = 0
1111
		if xmove == 0 and UpdateAnim then
1112
			CurrentAnimation = "Idle"
1113
		end
1114
	end
1115
1116
	if LastAnimation ~= CurrentAnimation then
1117
		CurrentFrame = 0
1118
		AddSub = false
1119
	end
1120
1121
	for _,Info in pairs(Bits) do
1122
		local Side = Info.Side
1123
		local Series = Info.Series
1124
		local Weld = Info.Weld
1125
		local Type = Info.Type
1126
		local Extend = 1
1127
		local MyRate = 1
1128
1129
		if Type == "Top" then
1130
			Extend = ExtendTop
1131
			MyRate = RateTop + 30
1132
		elseif Type == "Bot" then
1133
			Extend = ExtendBot
1134
			MyRate = RateBot
1135
		else
1136
1137
		end
1138
1139
		if CurrentAnimation == "Idle" or CurrentAnimation == "DisableHandAnim" then
1140
			if Type == "Wing" or Type == "WingLow" then
1141
				if Type == "WingLow" then
1142
					Weld.C1 = AnimLerp(Weld.C1, CFrame.new(Side == true and -0.5 or 0.5,1.65,0.5) * CFrame.Angles(math.rad(65 + Lift*3),math.rad((Side == true and 30 + Lift*2 or -30 - Lift*2)),0), CurrentFrame)
1143
				else
1144
					Weld.C1 = AnimLerp(Weld.C1, CFrame.new(0,1.8,0.5) * CFrame.Angles(math.rad(65 + Lift*3),math.rad((Side == true and 30 + Lift*2 or -30 - Lift*2)),0), CurrentFrame)
1145
				end
1146
			else
1147
				Weld.C1 = CFrame.new(0,0,Spread) * CFrame.Angles(math.rad(-Extend),math.rad(60*Series + (Side == true and -MyRate or MyRate)),0) * CFrame.new(0,Distance,0)
1148
			end
1149
		elseif CurrentAnimation == "Forward" or CurrentAnimation == "Backward" then
1150
			if Type == "Wing" or Type == "WingLow" then
1151
				if Type == "WingLow" then
1152
					Weld.C1 = AnimLerp(Weld.C1, CFrame.new(Side == true and -0.5 or 0.5,1.65,0.5) * CFrame.Angles(math.rad(65 + Lift*10),math.rad((Side == true and 30 + Lift*2 or -30 - Lift*2)),0), CurrentFrame)
1153
				else
1154
					Weld.C1 = AnimLerp(Weld.C1, CFrame.new(0,1.8,0.5) * CFrame.Angles(math.rad(65 + Lift*10),math.rad((Side == true and 30 + Lift*2 or -30 - Lift*2)),0), CurrentFrame)
1155
				end
1156
			else
1157
				Weld.C1 = CFrame.new(0,0,Spread) * CFrame.Angles(math.rad(-Extend),math.rad(60*Series + (Side == true and -MyRate or MyRate)),0) * CFrame.new(0,Distance,0)
1158
			end
1159
		elseif CurrentAnimation == "SwivelLeft" then
1160
			if Type == "Wing" or Type == "WingLow" then
1161
				if Type == "WingLow" then
1162
					Weld.C1 = AnimLerp(Weld.C1, CFrame.new(Side == true and -0.5 or 0.5,1.65,0.5) * CFrame.Angles(math.rad(65 + Lift*3),math.rad((Side == true and 50 or -10)),0), CurrentFrame)
1163
				else
1164
					Weld.C1 = AnimLerp(Weld.C1, CFrame.new(0,1.8,0.5) * CFrame.Angles(math.rad(65 + Lift*3),math.rad((Side == true and 50 or -10)),0), CurrentFrame)
1165
				end
1166
			else
1167
				Weld.C1 = CFrame.new(0,0,Spread) * CFrame.Angles(math.rad(-Extend),math.rad(60*Series + (Side == true and -MyRate or MyRate)),0) * CFrame.new(0,Distance,0)
1168
			end
1169
		elseif CurrentAnimation == "SwivelRight" then
1170
			if Type == "Wing" or Type == "WingLow" then
1171
				if Type == "WingLow" then
1172
					Weld.C1 = AnimLerp(Weld.C1, CFrame.new(Side == true and -0.5 or 0.5,1.65,0.5) * CFrame.Angles(math.rad(65 + Lift*3),math.rad((Side == true and 10 or -50)),0), CurrentFrame)
1173
				else
1174
					Weld.C1 = AnimLerp(Weld.C1, CFrame.new(0,1.8,0.5) * CFrame.Angles(math.rad(65 + Lift*3),math.rad((Side == true and 10 or -50)),0), CurrentFrame)
1175
				end
1176
			else
1177
				Weld.C1 = CFrame.new(0,0,Spread) * CFrame.Angles(math.rad(-Extend),math.rad(60*Series + (Side == true and -MyRate or MyRate)),0) * CFrame.new(0,Distance,0)
1178
			end
1179
		else
1180
			Weld.C1 = CFrame.new(0,0,Spread) * CFrame.Angles(math.rad(-Extend),math.rad(60*Series + (Side == true and -MyRate or MyRate)),0) * CFrame.new(0,Distance,0)
1181
		end
1182
	end
1183
1184
	TurnAngle = TurnAngle + ymove
1185
1186
	Rotate.cframe = CFrame.new()*CFrame.Angles(0,math.rad(TurnAngle),0)
1187
1188
	local Ray = Ray.new(Torso.CFrame.p,Down.CFrame.lookVector*15)
1189
	local Part,Pos = game:GetService("Workspace"):findPartOnRay(Ray,Character)
1190
	local Distance = (Pos - Torso.CFrame.p).magnitude
1191
	local Face = Torso.CFrame.lookVector
1192
1193
	if Part and Pos then
1194
		local sides = Enum.NormalId:GetEnumItems();
1195
		local default = Vector3.new(0,1,0)
1196
		for i,v in pairs(sides) do
1197
			sides[i] = Vector3.FromNormalId(v)
1198
		end
1199
		if Part:IsA("Part") then
1200
			if Part.Shape.Name == "Ball" then
1201
				sides = {}
1202
				default = Part.CFrame:vectorToObjectSpace(Pos-Part.Position).unit
1203
			elseif Part.Shape.Name == "Cylinder" then
1204
				sides = {Vector3.new(1,0,0),Vector3.new(-1,0,0)}
1205
				default = (Part.CFrame:vectorToObjectSpace(Pos-Part.Position)*Vector3.new(0,1,1)).unit
1206
			end
1207
		elseif Part:IsA("WedgePart") then
1208
			sides = {Vector3.new(1,0,0),Vector3.new(-1,0,0),Vector3.new(0,-1,0),Vector3.new(0,0,-1)}
1209
			default = Vector3.new(0,1,-Part.Size.Y/Part.Size.Z).unit
1210
		end
1211
		local obs,siz,sidevector = Part.CFrame:pointToObjectSpace(Pos),Part.Size/2
1212
		for i,v in pairs(sides) do
1213
			if (obs*v/(siz*v+Vector3.new(1,1,1)*1e-7)):isClose(v,.01) then
1214
				sidevector = v
1215
				break
1216
			end
1217
		end
1218
		if not sidevector then sidevector = default end
1219
		if sidevector then
1220
			local cf = CFrame.new(Pos,Pos+Part.CFrame:vectorToWorldSpace(sidevector)) * CFrame.Angles(-math.pi/2,0,0)
1221
			Move.position = Vector3.new(cf.X,cf.Y + 6 + Lift,cf.Z) + Vector3.new(Face.X,0,Face.Z)*Accel*xmove
1222
			Move.maxForce = Vector3.new(1e7,1e7,1e7)
1223
		end
1224
	else
1225
		Move.maxForce = Vector3.new(1e7,0,1e7)
1226
		Move.position = Vector3.new(Torso.CFrame.X,Torso.CFrame.Y,Torso.CFrame.Z) + Vector3.new(Face.X,0,Face.Z)*Accel*xmove
1227
	end
1228
1229
    CurrentLeftArm = LA.C0
1230
    CurrentRightArm = RA.C0 
1231
    CurrentRightLeg = LR.C1
1232
    CurrentLeftLeg = LL.C1
1233
1234
    if math.floor(Lift+0.5) == 3 then
1235
    	--FlapSound:Play()
1236
    end
1237
1238
	if CurrentAnimation == "Idle" then
1239
		rofTop = 1
1240
		rofBot = 1
1241
	    RA.C0 = AnimLerp(CurrentRightArm, RAD * CFrame.Angles(math.rad(0),0,math.rad(25 + Lift*2)), CurrentFrame)
1242
	    LA.C0 = AnimLerp(CurrentLeftArm, LAD * CFrame.Angles(math.rad(0),0,math.rad(-25 - Lift*2)), CurrentFrame)
1243
	    LR.C1 = AnimLerp(CurrentRightLeg, RLD * CFrame.Angles(0,0,math.rad(-7.5 + Lift)), CurrentFrame)
1244
	    LL.C1 = AnimLerp(CurrentLeftLeg, LLD * CFrame.Angles(0,0,math.rad(7.5 - Lift)), CurrentFrame)
1245
	elseif CurrentAnimation == "Forward" then
1246
		rofTop = 6
1247
		rofBot = 6
1248
	    RA.C0 = AnimLerp(CurrentRightArm, RAD * CFrame.Angles(math.rad(-15),0,math.rad(30)), CurrentFrame)
1249
	    LA.C0 = AnimLerp(CurrentLeftArm, LAD * CFrame.Angles(math.rad(-15),0,math.rad(-30)), CurrentFrame)
1250
	    LR.C1 = AnimLerp(CurrentRightLeg, RLD * CFrame.Angles(math.rad(15),0,math.rad(-7.5)), CurrentFrame)
1251
	    LL.C1 = AnimLerp(CurrentLeftLeg, LLD * CFrame.Angles(math.rad(15),0,math.rad(7.5)), CurrentFrame)
1252
	elseif CurrentAnimation == "Backward" then
1253
		rotTop = -6
1254
		rofBot = -6
1255
	    RA.C0 = AnimLerp(CurrentRightArm, RAD * CFrame.Angles(math.rad(15),0,math.rad(20)), CurrentFrame)
1256
	    LA.C0 = AnimLerp(CurrentLeftArm, LAD * CFrame.Angles(math.rad(15),0,math.rad(-20)), CurrentFrame)
1257
	    LR.C1 = AnimLerp(CurrentRightLeg, RLD * CFrame.Angles(math.rad(-15),0,math.rad(-7.5)), CurrentFrame)
1258
	    LL.C1 = AnimLerp(CurrentLeftLeg, LLD * CFrame.Angles(math.rad(-15),0,math.rad(7.5)), CurrentFrame)
1259
	elseif CurrentAnimation == "SwivelLeft" then
1260
		rofTop = 3
1261
		rofBot = 3
1262
	    RA.C0 = AnimLerp(CurrentRightArm, RAD * CFrame.Angles(math.rad(15),0,math.rad(25)), CurrentFrame)
1263
	    LA.C0 = AnimLerp(CurrentLeftArm, LAD * CFrame.Angles(math.rad(-15),0,math.rad(-25)), CurrentFrame)
1264
	    LR.C1 = AnimLerp(CurrentRightLeg, RLD * CFrame.Angles(math.rad(-10),0,math.rad(-7.5)), CurrentFrame)
1265
	    LL.C1 = AnimLerp(CurrentLeftLeg, LLD * CFrame.Angles(math.rad(10),0,math.rad(7.5)), CurrentFrame)
1266
	elseif CurrentAnimation == "SwivelRight" then
1267
		rofTop = -3
1268
		rofBot = -3
1269
	    RA.C0 = AnimLerp(CurrentRightArm, RAD * CFrame.Angles(math.rad(-15),0,math.rad(25)), CurrentFrame)
1270
	    LA.C0 = AnimLerp(CurrentLeftArm, LAD * CFrame.Angles(math.rad(15),0,math.rad(-25)), CurrentFrame)
1271
	    LR.C1 = AnimLerp(CurrentRightLeg, RLD * CFrame.Angles(math.rad(10),0,math.rad(-7.5)), CurrentFrame)
1272
	    LL.C1 = AnimLerp(CurrentLeftLeg, LLD * CFrame.Angles(math.rad(-10),0,math.rad(7.5)), CurrentFrame)
1273
	elseif CurrentAnimation == "DisableHandAnim" then
1274
		rofBot = 1
1275
		LR.C1 = AnimLerp(CurrentRightLeg, RLD * CFrame.Angles(0,0,math.rad(-7.5)), CurrentFrame)
1276
	    LL.C1 = AnimLerp(CurrentLeftLeg, LLD * CFrame.Angles(0,0,math.rad(7.5)), CurrentFrame)
1277
	end
1278
1279
	LastAnimation = CurrentAnimation
1280
end)
1281
1282
while true do
1283
	for i = 0,10,0.1 do
1284
		Lift = Lift + (math.sin(math.pi*2/10*i)*0.1)
1285
		wait(0.02)
1286
	end
1287
end