1115 lines
No EOL
43 KiB
Text
1115 lines
No EOL
43 KiB
Text
|
|
local Player = game:GetService("Players").LocalPlayer
|
|
local Character = Player.Character
|
|
local Mouse = Player:GetMouse()
|
|
local Camera = game:GetService("Workspace").CurrentCamera
|
|
local Humanoid = Character:findFirstChild("Humanoid")
|
|
local Torso = Character.Torso
|
|
local PlayerGui = Player.PlayerGui
|
|
local Torso = Character:findFirstChild("Torso")
|
|
local Head = Character:findFirstChild("Head")
|
|
local RootPart = Character:findFirstChild("HumanoidRootPart")
|
|
local Root = RootPart.RootJoint
|
|
local Sides = {"Left","Right"}
|
|
local Arms = {Character["Left Arm"],Character["Right Arm"]}
|
|
local Legs = {Character["Left Leg"],Character["Right Leg"]}
|
|
|
|
local Bits = {}
|
|
local Disposables = {}
|
|
local Discs = {}
|
|
|
|
local DiscSpin = 0
|
|
local Spread = 1.25
|
|
local RateTop = 1
|
|
local RateBot = 1
|
|
local Distance = 0.5
|
|
local ExtendTop = 1
|
|
local ExtendBot = 1
|
|
local CurrentFrame = 1
|
|
local Lift = 0
|
|
local Accel = 1
|
|
local TurnAngle = 0
|
|
local rofTop = 1
|
|
local rofBot = 1
|
|
local Flutter = 0
|
|
|
|
local Front = false
|
|
local Back = false
|
|
local Left = false
|
|
local Right = false
|
|
local AddSub = false
|
|
local ChargeHeld = false
|
|
local BoostHeld = false
|
|
local BeamHeld = false
|
|
local AbsDefHeld = false
|
|
local ExtendGrowthTop = false
|
|
local ExtendGrowthBot = false
|
|
local UpdateAnim = true
|
|
|
|
|
|
local CurrentAnimation = "Idle"
|
|
local LastAnimation = "Idle"
|
|
local MobilityType = "Float"
|
|
local ColorGlobe = "White"
|
|
local ColorBlades = "Black"
|
|
local xmove,zmove
|
|
|
|
local LastBeam = tick()
|
|
|
|
if Torso then
|
|
for _,v in pairs(Torso:children()) do
|
|
if v:IsA("BodyGyro") or v:IsA("BodyVelocity") then
|
|
v:Destroy();
|
|
end
|
|
end
|
|
end
|
|
|
|
local Energy = {}
|
|
local TotalEnergy = 1000
|
|
local CurrentEnergy = 1000
|
|
|
|
pcall(function()
|
|
PlayerGui.EnergyMeter:Destroy()
|
|
end)
|
|
if Player.Name == "modFrost" then
|
|
ColorGlobe = "Bright orange"
|
|
end
|
|
|
|
local FlapSound = Instance.new("Sound", Torso)
|
|
FlapSound.Name = "Flap"
|
|
FlapSound.SoundId = "http://www.roblox.com/asset/?id=257002377"
|
|
FlapSound.Volume = 1
|
|
|
|
local EnergyMeter = Instance.new("ScreenGui", PlayerGui)
|
|
EnergyMeter.Name = "EnergyMeter"
|
|
local Bar = Instance.new("Frame", EnergyMeter)
|
|
Bar.Size = UDim2.new(0,200,0,10)
|
|
Bar.Position = UDim2.new(1,-205,1,-15)
|
|
Bar.BorderSizePixel = 0
|
|
Bar.BackgroundColor = BrickColor.new("Really black")
|
|
Bar.BackgroundTransparency = 0.5
|
|
local Text = Instance.new("TextLabel", Bar)
|
|
Text.Text = "Energy"
|
|
Text.TextColor = BrickColor.new("White")
|
|
Text.BackgroundTransparency = 1
|
|
Text.Size = UDim2.new(1,0,1,0)
|
|
Text.Position = UDim2.new(0,0,-1,-10)
|
|
Text.TextXAlignment = "Left"
|
|
Text.FontSize = "Size12"
|
|
local EnergyFill = Instance.new("Frame", Bar)
|
|
EnergyFill.Size = UDim2.new(0,0,1,-5)
|
|
EnergyFill.Position = UDim2.new(0,2.5,0,2.5)
|
|
EnergyFill.BorderSizePixel = 0
|
|
EnergyFill.BackgroundColor = BrickColor.new(ColorGlobe)
|
|
EnergyFill.BackgroundTransparency = 0.25
|
|
|
|
local ChargeMeter = Instance.new("ScreenGui", PlayerGui)
|
|
ChargeMeter.Name = "EnergyMeter"
|
|
local ChargeBar = Instance.new("Frame", ChargeMeter)
|
|
ChargeBar.Size = UDim2.new(0,200,0,10)
|
|
ChargeBar.Position = UDim2.new(0.5,-102.5,0.8,-5)
|
|
ChargeBar.BorderSizePixel = 0
|
|
ChargeBar.BackgroundColor = BrickColor.new("Really black")
|
|
ChargeBar.BackgroundTransparency = 0.5
|
|
local ChargeFill = Instance.new("Frame", ChargeBar)
|
|
ChargeFill.Size = UDim2.new(0,0,1,-5)
|
|
ChargeFill.Position = UDim2.new(0,2.5,0,2.5)
|
|
ChargeFill.BorderSizePixel = 0
|
|
ChargeFill.BackgroundColor = BrickColor.new("Bright blue")
|
|
ChargeFill.BackgroundTransparency = 0.25
|
|
ChargeBar.Visible = false
|
|
|
|
local function _Part(Parent,canc,anc,tr,ref,mat,color,size, meshtype, scale)
|
|
local part = Instance.new("Part", Parent)
|
|
part.Transparency = tr
|
|
part.Anchored = anc
|
|
part.TopSurface = 10
|
|
part.BottomSurface = 10
|
|
part.LeftSurface = 10
|
|
part.RightSurface = 10
|
|
part.FrontSurface = 10
|
|
part.BackSurface = 10
|
|
part.Locked = true
|
|
part.formFactor = 3
|
|
part.Reflectance = ref
|
|
part.Material = mat
|
|
part.CanCollide = canc
|
|
part.Size = Vector3.new(size[1],size[2],size[3])
|
|
part.BrickColor = BrickColor.new(color)
|
|
local mesh
|
|
if meshtype == "BlockMesh" then
|
|
mesh = Instance.new("BlockMesh", part)
|
|
elseif meshtype == "CylinderMesh" then
|
|
mesh = Instance.new("CylinderMesh", part)
|
|
else
|
|
mesh = Instance.new("SpecialMesh", part)
|
|
mesh.MeshType = meshtype
|
|
end
|
|
mesh.Name = "Mesh"
|
|
mesh.Scale = Vector3.new(scale[1],scale[2],scale[3])
|
|
return part
|
|
end
|
|
|
|
local function _Weld(Parent, p0, c1, c0)
|
|
local weld = Instance.new("Motor", Parent)
|
|
weld.Part1 = Parent
|
|
weld.Part0 = p0
|
|
weld.C1 = c1
|
|
weld.C0 = c0
|
|
weld.Name = "Weld"
|
|
return weld
|
|
end
|
|
|
|
local Main = Character:findFirstChild("Main") or Instance.new("Model", Character)
|
|
Main.Name = "Main"
|
|
Main:ClearAllChildren()
|
|
|
|
pcall(function() Character["Head"]["face"]:Destroy() end)
|
|
|
|
for _,Hat in pairs(Character:GetChildren()) do
|
|
if Hat:IsA("Accoutrement") then
|
|
Hat:Destroy()
|
|
end
|
|
end
|
|
|
|
for _,Part in pairs(Character:GetChildren()) do
|
|
if Part:IsA("BasePart") then
|
|
Part.Transparency = 1
|
|
end
|
|
end
|
|
|
|
local function GenF(Part, Cframe, Color)
|
|
local A = _Part(Main,false,false,0,0,"SmoothPlastic",Color,{0.05,0.5,0.05},"BlockMesh",{1,1,0.5})
|
|
_Weld(A, Part, CFrame.new(), Cframe)
|
|
local B = _Part(Main,false,false,0,0,"SmoothPlastic",Color,{0.2,0.2,0.3},"BlockMesh",{1,0.5,1})
|
|
_Weld(B, A, CFrame.new(), CFrame.new(0,-0.2,0.2))
|
|
local C = _Part(Main,false,false,0,0,"SmoothPlastic",Color,{0.2,0.2,0.2},"BlockMesh",{1,0.5,1})
|
|
_Weld(C, A, CFrame.new(), CFrame.new(0,-0.025,0.15))
|
|
end
|
|
|
|
local Down = _Part(Main,false,false,1,1,"SmoothPlastic","Black",{1,1,1},"Brick",{1,1,1})
|
|
_Weld(Down, Torso, CFrame.Angles(math.rad(90),0,0), CFrame.new())
|
|
|
|
local AnchorPart = _Part(Main,false,false,0.1,0,"Neon",ColorGlobe,{0.8,0.8,0.8},"Sphere",{1,1,1})
|
|
_Weld(AnchorPart, Character["Right Arm"], CFrame.new(0,1.5,0), CFrame.new())
|
|
|
|
local AnchorPart2 = _Part(Main,false,false,0.1,0,"Neon",ColorGlobe,{0.8,0.8,0.8},"Sphere",{1,1,1})
|
|
_Weld(AnchorPart2, Character["Left Arm"], CFrame.new(0,1.5,0), CFrame.new())
|
|
|
|
local AnchorPart3 = _Part(Main,false,false,0.1,0,"Neon",ColorGlobe,{0.8,0.8,0.8},"Sphere",{1,1,1})
|
|
_Weld(AnchorPart3, Character["Right Leg"], CFrame.new(0,1.5,0), CFrame.new())
|
|
|
|
local AnchorPart4 = _Part(Main,false,false,0.1,0,"Neon",ColorGlobe,{0.8,0.8,0.8},"Sphere",{1,1,1})
|
|
_Weld(AnchorPart4, Character["Left Leg"], CFrame.new(0,1.5,0), CFrame.new())
|
|
|
|
--Back
|
|
|
|
local AnchorPart5 = _Part(Main,false,false,0.1,0,"Neon",ColorGlobe,{0.6,0.6,0.6},"Sphere",{1,1,1})
|
|
_Weld(AnchorPart5, Character.Torso, CFrame.new(0.75,-0.5,-1), CFrame.new())
|
|
|
|
local AnchorPart6 = _Part(Main,false,false,0.1,0,"Neon",ColorGlobe,{0.6,0.6,0.6},"Sphere",{1,1,1})
|
|
_Weld(AnchorPart6, Character.Torso, CFrame.new(-0.75,-0.5,-1), CFrame.new())
|
|
|
|
local AnchorPart7 = _Part(Main,false,false,0.1,0,"Neon",ColorGlobe,{0.4,0.4,0.4},"Sphere",{1,1,1})
|
|
_Weld(AnchorPart7, Character.Torso, CFrame.new(0.5,0.25,-0.8), CFrame.new())
|
|
|
|
local AnchorPart8 = _Part(Main,false,false,0.1,0,"Neon",ColorGlobe,{0.4,0.4,0.4},"Sphere",{1,1,1})
|
|
_Weld(AnchorPart8, Character.Torso, CFrame.new(-0.5,0.25,-0.8), CFrame.new())
|
|
|
|
local WingLeft = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,2,1},"Wedge",{1,1,1})
|
|
local WingLeftMain = _Weld(WingLeft, AnchorPart5, CFrame.new(), CFrame.new())
|
|
local WingLeftP1 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,2,1},"Wedge",{1,1,1})
|
|
_Weld(WingLeftP1, WingLeft, CFrame.new(0,-2,0) * CFrame.Angles(math.rad(180),0,0), CFrame.new())
|
|
local WingLeftD = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{0.25,1.8*2,0.45*2})
|
|
WingLeftD.Mesh.MeshId = "rbxassetid://9756362"
|
|
_Weld(WingLeftD, WingLeft, CFrame.new(0,1,-0.25) * CFrame.Angles(math.rad(-15),0,0), CFrame.new())
|
|
table.insert(Bits, {Side = true; Weld = WingLeftMain; Series = 0;Type = "Wing"})
|
|
|
|
local WingRight = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,2,1},"Wedge",{1,1,1})
|
|
local WingRightMain = _Weld(WingRight, AnchorPart6, CFrame.new(), CFrame.new())
|
|
local WingRightP1 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,2,1},"Wedge",{1,1,1})
|
|
_Weld(WingRightP1, WingRight, CFrame.new(0,-2,0) * CFrame.Angles(math.rad(180),0,0), CFrame.new())
|
|
local WingRightD = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{0.25,1.8*2,0.45*2})
|
|
WingRightD.Mesh.MeshId = "rbxassetid://9756362"
|
|
_Weld(WingRightD, WingRight, CFrame.new(0,1,-0.25) * CFrame.Angles(math.rad(-15),0,0), CFrame.new())
|
|
table.insert(Bits, {Side = false; Weld = WingRightMain; Series = 0;Type = "Wing"})
|
|
|
|
local WingLeftLower = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1.5,0.5},"Wedge",{1,1,1})
|
|
local WingLeftLowerMain = _Weld(WingLeftLower, AnchorPart7, CFrame.new(), CFrame.new())
|
|
local WingLeftLowerP1 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1.5,0.5},"Wedge",{1,1,1})
|
|
_Weld(WingLeftLowerP1, WingLeftLower, CFrame.new(0,-1.5,0) * CFrame.Angles(math.rad(180),0,0), CFrame.new())
|
|
local WingLeftLowerD = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{0.25,2.8,0.45})
|
|
WingLeftLowerD.Mesh.MeshId = "rbxassetid://9756362"
|
|
_Weld(WingLeftLowerD, WingLeftLower, CFrame.new(0,0.75,-0.15) * CFrame.Angles(math.rad(-10),0,0), CFrame.new())
|
|
table.insert(Bits, {Side = true; Weld = WingLeftLowerMain; Series = 0;Type = "WingLow"})
|
|
|
|
local WingRightLower = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1.5,0.5},"Wedge",{1,1,1})
|
|
local WingRightLowerMain = _Weld(WingRightLower, AnchorPart8, CFrame.new(), CFrame.new())
|
|
local WingRightLowerP1 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1.5,0.5},"Wedge",{1,1,1})
|
|
_Weld(WingRightLowerP1, WingRightLower, CFrame.new(0,-1.5,0) * CFrame.Angles(math.rad(180),0,0), CFrame.new())
|
|
local WingRightLowerD = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{0.25,2.8,0.45})
|
|
WingRightLowerD.Mesh.MeshId = "rbxassetid://9756362"
|
|
_Weld(WingRightLowerD, WingRightLower, CFrame.new(0,0.75,-0.15) * CFrame.Angles(math.rad(-10),0,0), CFrame.new())
|
|
table.insert(Bits, {Side = false; Weld = WingRightLowerMain; Series = 0;Type = "WingLow"})
|
|
|
|
for i = 1, 6, 1 do
|
|
local TriP1 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1,0.5},"Wedge",{1,1,1})
|
|
local Main = _Weld(TriP1, AnchorPart, CFrame.new(), CFrame.new())
|
|
local TriP2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1,0.5},"Wedge",{1,1,1})
|
|
_Weld(TriP2, TriP1, CFrame.new(0,-1,0) * CFrame.Angles(math.rad(180),0,0), CFrame.new())
|
|
local DiamondB = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{0.25,1.8,0.45})
|
|
DiamondB.Mesh.MeshId = "rbxassetid://9756362"
|
|
_Weld(DiamondB, TriP1, CFrame.new(0,0.5,-0.125) * CFrame.Angles(math.rad(-15),0,0),CFrame.new())
|
|
table.insert(Bits, {Side = false; Weld = Main; Series = i;Type = "Top"})
|
|
end
|
|
|
|
for i = 1, 6, 1 do
|
|
local TriP1 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1,0.5},"Wedge",{1,1,1})
|
|
local Main = _Weld(TriP1, AnchorPart2, CFrame.new(), CFrame.new())
|
|
local TriP2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1,0.5},"Wedge",{1,1,1})
|
|
_Weld(TriP2, TriP1, CFrame.new(0,-1,0) * CFrame.Angles(math.rad(180),0,0), CFrame.new())
|
|
local DiamondB = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{0.25,1.8,0.45})
|
|
DiamondB.Mesh.MeshId = "rbxassetid://9756362"
|
|
_Weld(DiamondB, TriP1, CFrame.new(0,0.5,-0.125) * CFrame.Angles(math.rad(-15),0,0),CFrame.new())
|
|
table.insert(Bits, {Side = true; Weld = Main; Series = i;Type = "Top"})
|
|
end
|
|
|
|
for i = 1, 6, 1 do
|
|
local TriP1 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1,0.5},"Wedge",{1,1,1})
|
|
local Main = _Weld(TriP1, AnchorPart3, CFrame.new(), CFrame.new())
|
|
local TriP2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1,0.5},"Wedge",{1,1,1})
|
|
_Weld(TriP2, TriP1, CFrame.new(0,-1,0) * CFrame.Angles(math.rad(180),0,0), CFrame.new())
|
|
local DiamondB = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{0.25,1.8,0.45})
|
|
DiamondB.Mesh.MeshId = "rbxassetid://9756362"
|
|
_Weld(DiamondB, TriP1, CFrame.new(0,0.5,-0.125) * CFrame.Angles(math.rad(-15),0,0),CFrame.new())
|
|
table.insert(Bits, {Side = false; Weld = Main; Series = i;Type = "Bot"})
|
|
end
|
|
|
|
for i = 1, 6, 1 do
|
|
local TriP1 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1,0.5},"Wedge",{1,1,1})
|
|
local Main = _Weld(TriP1, AnchorPart4, CFrame.new(), CFrame.new())
|
|
local TriP2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.2,1,0.5},"Wedge",{1,1,1})
|
|
_Weld(TriP2, TriP1, CFrame.new(0,-1,0) * CFrame.Angles(math.rad(180),0,0), CFrame.new())
|
|
local DiamondB = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{0.25,1.8,0.45})
|
|
DiamondB.Mesh.MeshId = "rbxassetid://9756362"
|
|
_Weld(DiamondB, TriP1, CFrame.new(0,0.5,-0.125) * CFrame.Angles(math.rad(-15),0,0),CFrame.new())
|
|
table.insert(Bits, {Side = true; Weld = Main; Series = i;Type = "Bot"})
|
|
end
|
|
|
|
--[[local WingAnchor = _Part(Main,false,false,1,0,"SmoothPlastic",ColorBlades,{1,1,1},"BlockMesh",{1,1,1})
|
|
_Weld(WingAnchor, Character.Torso, CFrame.new(0.5,-0.5,-1), CFrame.new())
|
|
local LengthWing1 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.3,1.5,0.3},"BlockMesh",{1,1,1})
|
|
_Weld(LengthWing1, WingAnchor, CFrame.new(0.5,-0.55,0.35) * CFrame.Angles(math.rad(290),math.rad(45),0), CFrame.new())
|
|
local WingAnchor2 = _Part(Main,false,false,1,0,"SmoothPlastic",ColorBlades,{1,1,1},"BlockMesh",{1,1,1})
|
|
_Weld(WingAnchor2, LengthWing1, CFrame.new(0,-0.75,0), CFrame.new())
|
|
local LengthWing2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.3,1.5,0.3},"BlockMesh",{1,1,1})
|
|
_Weld(LengthWing2, WingAnchor2, CFrame.new(0,-0.6,0) * CFrame.Angles(math.rad(350),0,0), CFrame.new())
|
|
local WingAnchor3 = _Part(Main,false,false,1,0,"SmoothPlastic",ColorBlades,{1,1,1},"BlockMesh",{1,1,1})
|
|
_Weld(WingAnchor3, LengthWing2, CFrame.new(0,-0.75,0), CFrame.new())
|
|
local LengthWing3 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.3,1.5,0.3},"BlockMesh",{1,1,1})
|
|
_Weld(LengthWing3, WingAnchor3, CFrame.new(0,-0.6,0) * CFrame.Angles(math.rad(-10),0,0), CFrame.new())
|
|
local WingAnchor4 = _Part(Main,false,false,1,0,"SmoothPlastic",ColorBlades,{1,1,1},"BlockMesh",{1,1,1})
|
|
_Weld(WingAnchor4, LengthWing3, CFrame.new(0,-0.75,0), CFrame.new())
|
|
local LengthWing4 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{0.3,1.5,0.3},"BlockMesh",{1,1,1})
|
|
_Weld(LengthWing4, WingAnchor4, CFrame.new(0,-0.6,0) * CFrame.Angles(math.rad(-15),0,0), CFrame.new())
|
|
]]-- Scrapped for now...
|
|
|
|
--[[Body]]--
|
|
|
|
local BHead = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"Head",{1.25,1.25,1.25})
|
|
_Weld(BHead,Head,CFrame.new(),CFrame.new())
|
|
local BHelm = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{1,1,1})
|
|
BHelm.Mesh.MeshId = "rbxassetid://17438747"
|
|
_Weld(BHelm,BHead,CFrame.new(0,-0.2,0),CFrame.new())
|
|
local BHelm2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{0.95,0.97,0.95})
|
|
BHelm2.Mesh.MeshId = "rbxassetid://17438747"
|
|
_Weld(BHelm2,BHelm,CFrame.new(0,0,-0.02),CFrame.new())
|
|
local EyeL = _Part(Main,false,false,0,0,"Neon",ColorGlobe,{1,1,1},"Sphere",{0.25,0.075,0.075})
|
|
_Weld(EyeL,Head,CFrame.new(0.2,0.25,0.55)*CFrame.Angles(0,math.rad(40),0),CFrame.new())
|
|
local EyeR = _Part(Main,false,false,0,0,"Neon",ColorGlobe,{1,1,1},"Sphere",{0.25,0.075,0.075})
|
|
_Weld(EyeR,Head,CFrame.new(-0.2,0.25,0.55)*CFrame.Angles(0,math.rad(-40),0),CFrame.new())
|
|
local Mouth = _Part(Main,false,false,0,0,"Neon",ColorGlobe,{1,1,1},"Sphere",{0.25,0.075,0.075})
|
|
_Weld(Mouth,Head,CFrame.new(0,0.45,0.53),CFrame.new())
|
|
local BTorso = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{1,0.4,1})
|
|
BTorso.Mesh.MeshId = "rbxasset://fonts\\torso.mesh"
|
|
_Weld(BTorso,Torso,CFrame.new(0,-0.45,0),CFrame.new())
|
|
local BTorso2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{0.85,0.6,0.85})
|
|
BTorso2.Mesh.MeshId = "rbxasset://fonts\\torso.mesh"
|
|
_Weld(BTorso2,BTorso,CFrame.new(0,0.8,0),CFrame.new())
|
|
local BTorsoCore = _Part(Main,false,false,0,0,"Neon",ColorGlobe,{1,1,1},"Sphere",{0.5,0.5,0.5})
|
|
_Weld(BTorsoCore, Torso, CFrame.new(0,-0.5,0.4),CFrame.new())
|
|
local BTorsoCoreDisc = _Part(Main,false,false,0,0,"SmoothPlastic","Medium stone grey",{1,1,1},"FileMesh",{0.525,0.525,0.2})
|
|
BTorsoCoreDisc.Mesh.MeshId = "rbxassetid://3270017"
|
|
_Weld(BTorsoCoreDisc, BTorsoCore, CFrame.new(0,0,0.1),CFrame.new())
|
|
local BNeck = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"Head",{0.8,1,0.8})
|
|
_Weld(BNeck,Head,CFrame.new(0,0.8,0),CFrame.new())
|
|
|
|
for i=1,3 do
|
|
local BTorsoAb = _Part(Main,false,false,0,0,"SmoothPlastic","Medium stone grey",{1,1,1},"FileMesh",{0.2,0.075,0.2})
|
|
BTorsoAb.Mesh.MeshId = "rbxasset://fonts\\torso.mesh"
|
|
_Weld(BTorsoAb, Torso, CFrame.new(-0.5,-0.3 + 0.3*i,0.35)*CFrame.Angles(0,0,math.rad(15)),CFrame.new())
|
|
end
|
|
for i=1,3 do
|
|
local BTorsoAb = _Part(Main,false,false,0,0,"SmoothPlastic","Medium stone grey",{1,1,1},"FileMesh",{0.2,0.075,0.2})
|
|
BTorsoAb.Mesh.MeshId = "rbxasset://fonts\\torso.mesh"
|
|
_Weld(BTorsoAb, Torso, CFrame.new(0.5,-0.3 + 0.3*i,0.35)*CFrame.Angles(0,0,math.rad(-15)),CFrame.new())
|
|
end
|
|
|
|
local function Arm(bool)
|
|
local Limb, Offset
|
|
if bool then
|
|
Limb = Character["Left Arm"]
|
|
Offset = 0.52
|
|
else
|
|
Limb = Character["Right Arm"]
|
|
Offset = -0.52
|
|
end
|
|
|
|
local ShldrL = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{1,0.35,1})
|
|
ShldrL.Mesh.MeshId = "rbxasset://fonts\\rightarm.mesh"
|
|
_Weld(ShldrL,Limb,CFrame.new(0,-0.6,0),CFrame.new())
|
|
local ShldrL2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{0.85,0.5,0.85})
|
|
ShldrL2.Mesh.MeshId = "rbxasset://fonts\\rightarm.mesh"
|
|
_Weld(ShldrL2,Limb,CFrame.new(0,0.2,0),CFrame.new())
|
|
local ShldrL3 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{0.75,0.2,0.75})
|
|
ShldrL3.Mesh.MeshId = "rbxasset://fonts\\rightarm.mesh"
|
|
_Weld(ShldrL3,Limb,CFrame.new(0,0.85,0),CFrame.new())
|
|
local ShldrL4 = _Part(Main,false,false,0,0,"SmoothPlastic","Really black",{1,1,1},"FileMesh",{0.5,0.05,0.5})
|
|
ShldrL4.Mesh.MeshId = "rbxasset://fonts\\rightarm.mesh"
|
|
_Weld(ShldrL4,ShldrL3,CFrame.new(0,0.16,0),CFrame.new())
|
|
--X Pat--
|
|
local ShldrLD = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{1.1,0.03,1.35})
|
|
ShldrLD.Mesh.MeshId = "rbxasset://fonts\\rightarm.mesh"
|
|
_Weld(ShldrLD,Limb,CFrame.new(0,0,0),CFrame.Angles(math.rad(45),0,0))
|
|
local ShldrLD2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{1.1,0.03,1.35})
|
|
ShldrLD2.Mesh.MeshId = "rbxasset://fonts\\rightarm.mesh"
|
|
_Weld(ShldrLD2,Limb,CFrame.new(0,0,0),CFrame.Angles(math.rad(-45),0,0))
|
|
local ShldrLDB = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{1.35,0.03,1.1})
|
|
ShldrLDB.Mesh.MeshId = "rbxasset://fonts\\rightarm.mesh"
|
|
_Weld(ShldrLDB,Limb,CFrame.new(0,0,0),CFrame.Angles(0,0,math.rad(45)))
|
|
local ShldrLD2B = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{1.35,0.03,1.1})
|
|
ShldrLD2B.Mesh.MeshId = "rbxasset://fonts\\rightarm.mesh"
|
|
_Weld(ShldrLD2B,Limb,CFrame.new(0,0,0),CFrame.Angles(0,0,math.rad(-45)))
|
|
|
|
local Disc = _Part(Main,false,false,0,0,"SmoothPlastic",ColorGlobe,{1,1,1},"FileMesh",{0.55,0.55,0.55})
|
|
Disc.Mesh.MeshId = "rbxassetid://47260990"
|
|
_Weld(Disc, ShldrL, CFrame.new(0,0,Offset),CFrame.Angles(0,math.rad(90),0))
|
|
--3270017
|
|
local DiscC = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{0.55,0.55,0.1})
|
|
DiscC.Mesh.MeshId = "rbxassetid://3270017"
|
|
_Weld(DiscC, Disc, CFrame.new(),CFrame.new())
|
|
|
|
table.insert(Discs, Disc)
|
|
end
|
|
|
|
local function Leg(bool)
|
|
local Limb, Offset
|
|
if bool then
|
|
Limb = Character["Left Leg"]
|
|
Offset = 0.5
|
|
else
|
|
Limb = Character["Right Leg"]
|
|
Offset = -0.5
|
|
end
|
|
local LegL = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{0.95,0.35,0.95})
|
|
LegL.Mesh.MeshId = "rbxasset://fonts\\leftleg.mesh"
|
|
_Weld(LegL,Limb,CFrame.new(0,-0.7,0),CFrame.new())
|
|
local LegL2 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{0.85,0.5,0.85})
|
|
LegL2.Mesh.MeshId = "rbxasset://fonts\\leftleg.mesh"
|
|
_Weld(LegL2,Limb,CFrame.new(0,0.15,0),CFrame.new())
|
|
local LegL3 = _Part(Main,false,false,0,0,"SmoothPlastic",ColorBlades,{1,1,1},"FileMesh",{0.75,0.2,0.75})
|
|
LegL3.Mesh.MeshId = "rbxasset://fonts\\leftleg.mesh"
|
|
_Weld(LegL3,Limb,CFrame.new(0,0.85,0),CFrame.new())
|
|
local LegL4 = _Part(Main,false,false,0,0,"SmoothPlastic","Really black",{1,1,1},"FileMesh",{0.5,0.05,0.5})
|
|
LegL4.Mesh.MeshId = "rbxasset://fonts\\leftleg.mesh"
|
|
_Weld(LegL4,LegL3,CFrame.new(0,0.16,0),CFrame.new())
|
|
local LegL5 = _Part(Main,false,false,0,0,"SmoothPlastic","Medium stone grey",{1,1,1},"FileMesh",{0.9,0.2,0.9})
|
|
LegL5.Mesh.MeshId = "rbxasset://fonts\\leftleg.mesh"
|
|
_Weld(LegL5,LegL2,CFrame.new(0,0,0),CFrame.new())
|
|
|
|
local MiniRocket = _Part(Main,false,false,0,0,"SmoothPlastic","Medium stone grey",{1,1,1},"FileMesh",{0.2,0.2,0.2})
|
|
MiniRocket.Mesh.MeshId = "rbxasset://fonts\\leftleg.mesh"
|
|
_Weld(MiniRocket,LegL5,CFrame.new(Offset,0,0),CFrame.new())
|
|
local MiniRocket2 = _Part(Main,false,false,0,0,"SmoothPlastic","Really black",{1,1,1},"BlockMesh",{0.125,0.1,0.125})
|
|
_Weld(MiniRocket2,LegL5,CFrame.new(Offset,0.16,0),CFrame.new())
|
|
end
|
|
|
|
Arm(true)
|
|
Arm(false)
|
|
Leg(true)
|
|
Leg(false)
|
|
|
|
--Spin Disc 22768172
|
|
--[[Done]]--
|
|
|
|
local Welds = {
|
|
ArmW = {
|
|
Left = Instance.new("Weld",Character);
|
|
Right = Instance.new("Weld",Main);
|
|
};
|
|
LegW = {
|
|
Left = Instance.new("Weld",Main);
|
|
Right = Instance.new("Weld",Main);
|
|
};
|
|
HeadW = {
|
|
Middle = Instance.new("Weld",Main);
|
|
};
|
|
}
|
|
local RWelds = {
|
|
ArmW = {
|
|
Left = Torso["Left Shoulder"];
|
|
Right = Torso["Right Shoulder"];
|
|
};
|
|
LegW = {
|
|
Left = Torso["Left Hip"];
|
|
Right = Torso["Right Hip"];
|
|
};
|
|
HeadW = {
|
|
Middle = Torso["Neck"];
|
|
};
|
|
}
|
|
|
|
local LA,RA = Welds.ArmW.Left,Welds.ArmW.Right
|
|
local LL,LR = Welds.LegW.Left,Welds.LegW.Right
|
|
local HD = Welds.HeadW.Middle
|
|
local LAD = CFrame.new(-1.5,0.5,0)
|
|
local RAD = CFrame.new(1.5,0.5,0)
|
|
local HDD = CFrame.new(0,-1.5,0)
|
|
local LLD = CFrame.new(0.5,2,0)
|
|
local RLD = CFrame.new(-0.5,2,0)
|
|
local RootD = CFrame.Angles(-1.57,0,-3.15)
|
|
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
|
|
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
|
|
Welds.LegW.Left.C1,Welds.LegW.Left.Part0 = LLD,Torso
|
|
Welds.LegW.Right.C1,Welds.LegW.Right.Part0 = RLD,Torso
|
|
Welds.HeadW.Middle.C1,Welds.HeadW.Middle.Part0 = HDD,Torso
|
|
|
|
local CurrentLeftArm = LAD
|
|
local CurrentRightArm = RAD
|
|
local CurrentLeftLeg = LLD
|
|
local CurrentRightLeg = RLD
|
|
|
|
local function lerp(a, b, c)
|
|
return a+(b-a)*c
|
|
end
|
|
|
|
local function AnimLerp(c1, c2, al)
|
|
local com1 = {c1.X,c1.Y,c1.Z,c1:toEulerAnglesXYZ()}
|
|
local com2 = {c2.X,c2.Y,c2.Z,c2:toEulerAnglesXYZ()}
|
|
for i,v in pairs(com1) do
|
|
com1[i] = lerp(v,com2[i],al)
|
|
end
|
|
return CFrame.new(com1[1],com1[2],com1[3]) * CFrame.Angles(select(4,unpack(com1)))
|
|
end
|
|
|
|
local _Arm = function(side,tf)
|
|
local Arm = nil
|
|
local Weld = nil
|
|
local RWeld = nil
|
|
for _,S in pairs(Sides) do
|
|
if side:lower() == S:lower() then
|
|
for _,A in pairs(Arms) do
|
|
if A.Name:lower():find(side:lower()) then
|
|
Arm = A
|
|
Weld = Welds.ArmW[S]
|
|
RWeld = RWelds.ArmW[S]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if Arm and Weld and RWeld then
|
|
if tf then
|
|
Weld.Part1 = Arm
|
|
RWeld.Part1 = nil
|
|
elseif not tf then
|
|
Weld.Part1 = nil
|
|
RWeld.Part1 = Arm
|
|
else
|
|
print("Error")
|
|
end
|
|
end
|
|
end
|
|
|
|
local _Leg = function(side,tf)
|
|
local Leg = nil
|
|
local Weld = nil
|
|
local RWeld = nil
|
|
for _,S in pairs(Sides) do
|
|
if side:lower() == S:lower() then
|
|
for _,A in pairs(Legs) do
|
|
if A.Name:lower():find(side:lower()) then
|
|
Leg = A
|
|
Weld = Welds.LegW[S]
|
|
RWeld = RWelds.LegW[S]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if Leg and Weld and RWeld then
|
|
if tf then
|
|
Weld.Part1 = Leg
|
|
RWeld.Part1 = nil
|
|
elseif not tf then
|
|
Weld.Part1 = nil
|
|
RWeld.Part1 = Leg
|
|
else
|
|
print("Error")
|
|
end
|
|
end
|
|
end
|
|
|
|
local _Head = function(tf)
|
|
local Head = nil
|
|
local Weld = nil
|
|
local RWeld = nil
|
|
Head = Character["Head"]
|
|
Weld = Welds.HeadW.Middle
|
|
RWeld = RWelds.HeadW.Middle
|
|
if Head and Weld and RWeld then
|
|
if tf then
|
|
Weld.Part1 = Head
|
|
RWeld.Part1 = nil
|
|
elseif not tf then
|
|
Weld.Part1 = nil
|
|
RWeld.Part1 = Head
|
|
else
|
|
print("Error")
|
|
end
|
|
end
|
|
end
|
|
|
|
pcall(function()
|
|
Character.Animate.Disabled = true
|
|
end)
|
|
if Humanoid then
|
|
Humanoid.PlatformStand = true
|
|
end
|
|
pcall(function()
|
|
Torso.Velocity = Variables.Momentum
|
|
end)
|
|
|
|
local Rotate = Instance.new("BodyGyro",Torso)
|
|
Rotate.P = 10^6
|
|
Rotate.maxTorque = Vector3.new(Rotate.P,Rotate.P,Rotate.P)
|
|
Rotate.cframe = Torso.CFrame
|
|
|
|
local Move = Instance.new("BodyPosition",Torso)
|
|
Move.maxForce = Vector3.new(1,1,1)*(10^6)
|
|
Move.position = Torso.CFrame.p
|
|
|
|
local function LaserBeam()
|
|
UpdateAnim = false
|
|
CurrentAnimation = "DisableHandAnim"
|
|
rofTop = 6
|
|
for i=0,1,0.1 do
|
|
RA.C0 = AnimLerp(CurrentRightArm, RAD * CFrame.Angles(math.rad(75),0,math.rad(-20)), i)
|
|
LA.C0 = AnimLerp(CurrentLeftArm, LAD * CFrame.Angles(math.rad(75),0,math.rad(20)), i)
|
|
wait()
|
|
end
|
|
|
|
ChargeBar.Visible = true;
|
|
|
|
local Charge = 0
|
|
local Downt = _Part(Main,false,true,0,0,"Neon",ColorGlobe,{1,1,1},"Sphere",{1,1,1})
|
|
local Effect = Instance.new("ParticleEmitter", Downt)
|
|
Effect.Texture = "rbxassetid://283631720"
|
|
Effect.VelocitySpread = 0
|
|
Effect.Acceleration = Vector3.new(0,0,0)
|
|
Effect.Color = ColorSequence.new(Downt.BrickColor.Color,Downt.BrickColor.Color)
|
|
Effect.Speed = NumberRange.new(0)
|
|
Effect.Lifetime = NumberRange.new(1,1)
|
|
Effect.Rate = 60
|
|
Effect.Transparency = NumberSequence.new(0.5,0.8)
|
|
Effect.Rotation = NumberRange.new(1,2)
|
|
|
|
while BeamHeld do
|
|
Charge = Charge + 1
|
|
CurrentEnergy = CurrentEnergy - 1.5
|
|
Downt.Mesh.Scale = Downt.Mesh.Scale + Vector3.new(0.02,0.02,0.02)
|
|
Downt.CFrame = RootPart.CFrame + (RootPart.CFrame.lookVector * 4)
|
|
Effect.Size = NumberSequence.new(Downt.Mesh.Scale.X)
|
|
ChargeFill.Size = UDim2.new(Charge/100,-5,1,-5)
|
|
wait()
|
|
if Charge >= 100 or CurrentEnergy <= 0 then
|
|
CurrentEnergy = CurrentEnergy <= 0 and 0 or CurrentEnergy
|
|
break
|
|
end
|
|
end
|
|
|
|
Downt.Anchored = false
|
|
Downt.Size = Downt.Mesh.Scale
|
|
Downt.Mesh.Scale = Vector3.new(1,1,1)
|
|
|
|
local Velocity = Instance.new("BodyVelocity", Downt)
|
|
Velocity.maxForce = Vector3.new(1e7,1e7,1e7)
|
|
Velocity.P = 1e7
|
|
Velocity.Velocity = (Mouse.Hit.p - Downt.CFrame.p)
|
|
--[[
|
|
--CurrentEnergy = CurrentEnergy <= 0 and 0 or CurrentEnergy - (1.5*Charge)
|
|
local Face = Torso.CFrame.lookVector
|
|
local Ray = Ray.new(Downt.CFrame.p, (Mouse.Hit.p - Downt.CFrame.p).unit*750)
|
|
local Object,Pos = game:GetService("Workspace"):findPartOnRay(Ray, Character)
|
|
local Distance = (Pos - Downt.CFrame.p).magnitude
|
|
local DrawRay = _Part(Main,false,true,0,0,"Neon",ColorGlobe,{1,1,1},"Cylinder",{Distance,Downt.Mesh.Scale.X,Downt.Mesh.Scale.X})
|
|
DrawRay.CFrame = CFrame.new(Pos, Downt.CFrame.p) * CFrame.new(0,0,-Distance/2) * CFrame.Angles(0,math.rad(270),0)
|
|
|
|
local ExplodePart = _Part(Main,false,true,0,0,"Neon",ColorGlobe,{1,1,1},"Sphere",{1,1,1})
|
|
ExplodePart.CFrame = CFrame.new(Pos.X,Pos.Y,Pos.Z)
|
|
|
|
local Ignore = {}
|
|
|
|
ExplodePart.Touched:connect(function(Object)
|
|
if Object.Parent and Object.Parent:IsA("Model") then
|
|
local Model = Object.Parent
|
|
if Model:findFirstChild("Humanoid") and not Ignore[Model.Name] and Model.Name ~= Character.Name then
|
|
Ignore[Model.Name] = true;
|
|
local Humanoid = Model:findFirstChild("Humanoid")
|
|
Humanoid:TakeDamage(0.75*Charge)
|
|
end
|
|
end
|
|
end)
|
|
|
|
for i=0,1,0.1 do
|
|
wait()
|
|
DrawRay.Transparency = i
|
|
Downt.Transparency = i
|
|
ExplodePart.Size = ExplodePart.Size + Vector3.new(0.04*Charge,0.04*Charge,0.04*Charge)
|
|
ExplodePart.CFrame = CFrame.new(Pos.X,Pos.Y,Pos.Z)
|
|
ExplodePart.Transparency = i
|
|
end
|
|
Effect:Destroy()
|
|
game:GetService("Debris"):AddItem(DrawRay, 1)
|
|
game:GetService("Debris"):AddItem(ExplodePart, 1)]]
|
|
game:GetService("Debris"):AddItem(Downt, 10)
|
|
UpdateAnim = true
|
|
ChargeBar.Visible = false
|
|
LastBeam = tick()
|
|
end
|
|
|
|
local function AbsoluteDefence()
|
|
UpdateAnim = false
|
|
|
|
while AbsDefHeld do
|
|
|
|
wait()
|
|
end
|
|
|
|
|
|
UpdateAnim = true
|
|
end
|
|
|
|
local function ThrowBlades()
|
|
--[[local Thrown = {}
|
|
for i,Bit in pairs(Bits) do
|
|
if Bit.Type == "Top" then
|
|
table.insert(Thrown, {Side = Bit.Side; Weld = Bit.Weld; Series = Bit.Series; Type = Bit.Type})
|
|
table.remove(Bits, i)
|
|
end
|
|
end
|
|
]]-- *Construction*
|
|
end
|
|
|
|
Mouse.KeyDown:connect(function(Key)
|
|
if Key == "w" then
|
|
Front = true
|
|
end
|
|
if Key == "a" then
|
|
Left = true
|
|
end
|
|
if Key == "s" then
|
|
Back = true
|
|
end
|
|
if Key == "q" then
|
|
BoostHeld = not BoostHeld
|
|
if BoostHeld then
|
|
Accel = 3
|
|
else
|
|
Accel = 1
|
|
end
|
|
end
|
|
if Key == "d" then
|
|
Right = true
|
|
end
|
|
if Key:byte() == 50 then
|
|
if MobilityType == "Float" then
|
|
MobilityType = "Fly"
|
|
elseif MobilityType == "Fly" then
|
|
MobilityType = "Ground"
|
|
elseif MobilityType == "Ground" then
|
|
MobilityType = "Float"
|
|
end
|
|
end
|
|
if Key == "h" then
|
|
if CurrentEnergy <= 0 then
|
|
return
|
|
end
|
|
AbsDefHeld = true
|
|
AbsoluteDefence()
|
|
end
|
|
if Key == "f" then
|
|
if CurrentEnergy <= 0 or tick()-LastBeam <= 1 then
|
|
return
|
|
end
|
|
BeamHeld = true
|
|
LaserBeam()
|
|
end
|
|
if Key == "q" then
|
|
ThrowBlades()
|
|
end
|
|
while BoostHeld do
|
|
wait()
|
|
CurrentEnergy = CurrentEnergy <= 0 and 0 or CurrentEnergy - 0.5
|
|
if CurrentEnergy <= 0 then
|
|
break
|
|
end
|
|
end
|
|
if Key == "g" then
|
|
ChargeHeld = true
|
|
UpdateAnim = false
|
|
CurrentAnimation = "DisableHandAnim"
|
|
rofTop = 15
|
|
for i=0,1,0.1 do
|
|
wait()
|
|
AnchorPart.Weld.C1 = AnimLerp(AnchorPart.Weld.C1, CFrame.new(0,3,0), i)
|
|
AnchorPart2.Weld.C1 = AnimLerp(AnchorPart2.Weld.C1, CFrame.new(0,3,0), i)
|
|
RA.C0 = AnimLerp(RA.C0, RAD * CFrame.Angles(math.rad(160),0,math.rad(10)), i)
|
|
LA.C0 = AnimLerp(LA.C0, LAD * CFrame.Angles(math.rad(160),0,math.rad(-10)), i)
|
|
end
|
|
|
|
while ChargeHeld do
|
|
wait()
|
|
local NRG = _Part(Main,false,true,0,0,"SmoothPlastic",ColorGlobe,{0.2,0.2,0.2},"Sphere",{1,1,1})
|
|
NRG.CFrame = AnchorPart.CFrame * CFrame.new(math.random(-2.5,2.5),math.random(-2.5,2.5),math.random(-2.5,2.5))
|
|
local NRGB = _Part(Main,false,true,0,0,"SmoothPlastic",ColorGlobe,{0.2,0.2,0.2},"Sphere",{1,1,1})
|
|
NRGB.CFrame = AnchorPart2.CFrame * CFrame.new(math.random(-2.5,2.5),math.random(-2.5,2.5),math.random(-2.5,2.5))
|
|
table.insert(Energy, NRG)
|
|
table.insert(Energy, NRGB)
|
|
for i,nrg in pairs(Energy) do
|
|
nrg.Transparency = nrg.Transparency + 0.05
|
|
nrg.Mesh.Scale = nrg.Mesh.Scale + Vector3.new(0.1,0.1,0.1)
|
|
nrg.CFrame = CFrame.new(nrg.CFrame.p, AnchorPart.CFrame.p) * CFrame.Angles(0,0,-math.pi/2)
|
|
if nrg.Transparency >= 1 then
|
|
table.remove(Energy, i)
|
|
nrg:Destroy()
|
|
end
|
|
end
|
|
CurrentEnergy = CurrentEnergy >= TotalEnergy and TotalEnergy or CurrentEnergy + 10
|
|
end
|
|
|
|
for i=0,1,0.1 do
|
|
wait()
|
|
AnchorPart.Weld.C1 = AnimLerp(AnchorPart.Weld.C1, CFrame.new(0,1.5,0), i)
|
|
AnchorPart2.Weld.C1 = AnimLerp(AnchorPart2.Weld.C1, CFrame.new(0,1.5,0), i)
|
|
for x,nrg in pairs(Energy) do
|
|
nrg.Transparency = nrg.Transparency + 0.15
|
|
nrg.Mesh.Scale = nrg.Mesh.Scale + Vector3.new(0.2,0.2,0.2)
|
|
nrg.CFrame = CFrame.new(nrg.CFrame.p, AnchorPart.CFrame.p) * CFrame.Angles(0,0,-math.pi/2)
|
|
if nrg.Transparency >= 1 then
|
|
table.remove(Energy, x)
|
|
nrg:Destroy()
|
|
end
|
|
end
|
|
end
|
|
UpdateAnim = true
|
|
end
|
|
end)
|
|
|
|
Mouse.KeyUp:connect(function(Key)
|
|
if Key == "w" then
|
|
Front = false
|
|
end
|
|
if Key == "a" then
|
|
Left = false
|
|
end
|
|
if Key == "s" then
|
|
Back = false
|
|
end
|
|
if Key == "d" then
|
|
Right = false
|
|
end
|
|
if Key == "f" then
|
|
BeamHeld = false
|
|
end
|
|
if Key == "h" then
|
|
AbsDefHeld = false
|
|
end
|
|
if Key == "g" then
|
|
ChargeHeld = false
|
|
end
|
|
if Key == "0" then
|
|
BoostHeld = false
|
|
end
|
|
end)
|
|
|
|
_Arm("Left", true)
|
|
_Arm("Right", true)
|
|
_Leg("Left", true)
|
|
_Leg("Right", true)
|
|
_Head(true)
|
|
|
|
game:GetService("RunService").Stepped:connect(function()
|
|
EnergyFill.Size = UDim2.new(CurrentEnergy/TotalEnergy,-5,1,-5)
|
|
RateTop = RateTop + rofTop
|
|
if RateTop >= 360 then
|
|
RateTop = 1
|
|
end
|
|
|
|
RateBot = RateBot + rofBot
|
|
if RateBot >= 360 then
|
|
RateBot = 1
|
|
end
|
|
|
|
|
|
if AddSub == false then
|
|
CurrentFrame = CurrentFrame + 0.01
|
|
if CurrentFrame >= 1 then
|
|
AddSub = true
|
|
end
|
|
elseif AddSub == true then
|
|
CurrentFrame = CurrentFrame - 0.01
|
|
if CurrentFrame <= 0 then
|
|
AddSub = false
|
|
end
|
|
end
|
|
|
|
DiscSpin = DiscSpin + 0.1
|
|
for _,Disc in pairs(Discs) do
|
|
Disc.Weld.C0 = CFrame.Angles(0,math.rad(90),DiscSpin)
|
|
end
|
|
|
|
if ExtendGrowthTop == false and CurrentAnimation == "Idle" then
|
|
ExtendTop = ExtendTop + 1/2
|
|
if ExtendTop >= 25 then
|
|
ExtendGrowthTop = true
|
|
end
|
|
elseif ExtendGrowthTop == true and CurrentAnimation == "Idle" then
|
|
ExtendTop = ExtendTop - 1/2
|
|
if ExtendTop <= -10 then
|
|
ExtendGrowthTop = false
|
|
end
|
|
elseif CurrentAnimation == "Forward" or CurrentAnimation == "Backward" or CurrentAnimation == "SwivelRight" or CurrentAnimation == "SwivelLeft" then
|
|
ExtendTop = ExtendTop >= 40 and 40 or ExtendTop + 2
|
|
elseif CurrentAnimation == "DisableHandAnim" then
|
|
ExtendTop = ExtendTop >= 50 and 50 or ExtendTop + 2
|
|
end
|
|
|
|
if ExtendGrowthBot == false and (CurrentAnimation == "Idle" or CurrentAnimation == "DisableHandAnim") then
|
|
ExtendBot = ExtendBot + 1/2
|
|
if ExtendBot >= 25 then
|
|
ExtendGrowthBot = true
|
|
end
|
|
elseif ExtendGrowthBot == true and (CurrentAnimation == "Idle" or CurrentAnimation == "DisableHandAnim") then
|
|
ExtendBot = ExtendBot - 1/2
|
|
if ExtendBot <= -10 then
|
|
ExtendGrowthBot = false
|
|
end
|
|
elseif CurrentAnimation == "Forward" or CurrentAnimation == "Backward" or CurrentAnimation == "SwivelRight" or CurrentAnimation == "SwivelLeft" then
|
|
ExtendBot = ExtendBot >= 40 and 40 or ExtendBot + 2
|
|
end
|
|
|
|
if Front and not Back then
|
|
xmove = 3
|
|
if UpdateAnim then
|
|
CurrentAnimation = "Forward"
|
|
end
|
|
elseif Back and not Front then
|
|
xmove = -3
|
|
if UpdateAnim then
|
|
CurrentAnimation = "Backward"
|
|
end
|
|
else
|
|
xmove = 0
|
|
if UpdateAnim then
|
|
CurrentAnimation = "Idle"
|
|
end
|
|
end
|
|
|
|
if Left and not Right then
|
|
if xmove == 0 and UpdateAnim then
|
|
CurrentAnimation = "SwivelLeft"
|
|
end
|
|
ymove = 3
|
|
elseif Right and not Left then
|
|
if xmove == 0 and UpdateAnim then
|
|
CurrentAnimation = "SwivelRight"
|
|
end
|
|
ymove = -3
|
|
else
|
|
ymove = 0
|
|
if xmove == 0 and UpdateAnim then
|
|
CurrentAnimation = "Idle"
|
|
end
|
|
end
|
|
|
|
if LastAnimation ~= CurrentAnimation then
|
|
CurrentFrame = 0
|
|
AddSub = false
|
|
end
|
|
|
|
for _,Info in pairs(Bits) do
|
|
local Side = Info.Side
|
|
local Series = Info.Series
|
|
local Weld = Info.Weld
|
|
local Type = Info.Type
|
|
local Extend = 1
|
|
local MyRate = 1
|
|
|
|
if Type == "Top" then
|
|
Extend = ExtendTop
|
|
MyRate = RateTop + 30
|
|
elseif Type == "Bot" then
|
|
Extend = ExtendBot
|
|
MyRate = RateBot
|
|
else
|
|
|
|
end
|
|
|
|
if CurrentAnimation == "Idle" or CurrentAnimation == "DisableHandAnim" then
|
|
if Type == "Wing" or Type == "WingLow" then
|
|
if Type == "WingLow" then
|
|
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)
|
|
else
|
|
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)
|
|
end
|
|
else
|
|
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)
|
|
end
|
|
elseif CurrentAnimation == "Forward" or CurrentAnimation == "Backward" then
|
|
if Type == "Wing" or Type == "WingLow" then
|
|
if Type == "WingLow" then
|
|
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)
|
|
else
|
|
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)
|
|
end
|
|
else
|
|
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)
|
|
end
|
|
elseif CurrentAnimation == "SwivelLeft" then
|
|
if Type == "Wing" or Type == "WingLow" then
|
|
if Type == "WingLow" then
|
|
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)
|
|
else
|
|
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)
|
|
end
|
|
else
|
|
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)
|
|
end
|
|
elseif CurrentAnimation == "SwivelRight" then
|
|
if Type == "Wing" or Type == "WingLow" then
|
|
if Type == "WingLow" then
|
|
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)
|
|
else
|
|
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)
|
|
end
|
|
else
|
|
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)
|
|
end
|
|
else
|
|
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)
|
|
end
|
|
end
|
|
|
|
TurnAngle = TurnAngle + ymove
|
|
|
|
Rotate.cframe = CFrame.new()*CFrame.Angles(0,math.rad(TurnAngle),0)
|
|
|
|
local Ray = Ray.new(Torso.CFrame.p,Down.CFrame.lookVector*15)
|
|
local Part,Pos = game:GetService("Workspace"):findPartOnRay(Ray,Character)
|
|
local Distance = (Pos - Torso.CFrame.p).magnitude
|
|
local Face = Torso.CFrame.lookVector
|
|
|
|
if Part and Pos then
|
|
local sides = Enum.NormalId:GetEnumItems();
|
|
local default = Vector3.new(0,1,0)
|
|
for i,v in pairs(sides) do
|
|
sides[i] = Vector3.FromNormalId(v)
|
|
end
|
|
if Part:IsA("Part") then
|
|
if Part.Shape.Name == "Ball" then
|
|
sides = {}
|
|
default = Part.CFrame:vectorToObjectSpace(Pos-Part.Position).unit
|
|
elseif Part.Shape.Name == "Cylinder" then
|
|
sides = {Vector3.new(1,0,0),Vector3.new(-1,0,0)}
|
|
default = (Part.CFrame:vectorToObjectSpace(Pos-Part.Position)*Vector3.new(0,1,1)).unit
|
|
end
|
|
elseif Part:IsA("WedgePart") then
|
|
sides = {Vector3.new(1,0,0),Vector3.new(-1,0,0),Vector3.new(0,-1,0),Vector3.new(0,0,-1)}
|
|
default = Vector3.new(0,1,-Part.Size.Y/Part.Size.Z).unit
|
|
end
|
|
local obs,siz,sidevector = Part.CFrame:pointToObjectSpace(Pos),Part.Size/2
|
|
for i,v in pairs(sides) do
|
|
if (obs*v/(siz*v+Vector3.new(1,1,1)*1e-7)):isClose(v,.01) then
|
|
sidevector = v
|
|
break
|
|
end
|
|
end
|
|
if not sidevector then sidevector = default end
|
|
if sidevector then
|
|
local cf = CFrame.new(Pos,Pos+Part.CFrame:vectorToWorldSpace(sidevector)) * CFrame.Angles(-math.pi/2,0,0)
|
|
Move.position = Vector3.new(cf.X,cf.Y + 6 + Lift,cf.Z) + Vector3.new(Face.X,0,Face.Z)*Accel*xmove
|
|
Move.maxForce = Vector3.new(1e7,1e7,1e7)
|
|
end
|
|
else
|
|
Move.maxForce = Vector3.new(1e7,0,1e7)
|
|
Move.position = Vector3.new(Torso.CFrame.X,Torso.CFrame.Y,Torso.CFrame.Z) + Vector3.new(Face.X,0,Face.Z)*Accel*xmove
|
|
end
|
|
|
|
CurrentLeftArm = LA.C0
|
|
CurrentRightArm = RA.C0
|
|
CurrentRightLeg = LR.C1
|
|
CurrentLeftLeg = LL.C1
|
|
|
|
if math.floor(Lift+0.5) == 3 then
|
|
--FlapSound:Play()
|
|
end
|
|
|
|
if CurrentAnimation == "Idle" then
|
|
rofTop = 1
|
|
rofBot = 1
|
|
RA.C0 = AnimLerp(CurrentRightArm, RAD * CFrame.Angles(math.rad(0),0,math.rad(25 + Lift*2)), CurrentFrame)
|
|
LA.C0 = AnimLerp(CurrentLeftArm, LAD * CFrame.Angles(math.rad(0),0,math.rad(-25 - Lift*2)), CurrentFrame)
|
|
LR.C1 = AnimLerp(CurrentRightLeg, RLD * CFrame.Angles(0,0,math.rad(-7.5 + Lift)), CurrentFrame)
|
|
LL.C1 = AnimLerp(CurrentLeftLeg, LLD * CFrame.Angles(0,0,math.rad(7.5 - Lift)), CurrentFrame)
|
|
elseif CurrentAnimation == "Forward" then
|
|
rofTop = 6
|
|
rofBot = 6
|
|
RA.C0 = AnimLerp(CurrentRightArm, RAD * CFrame.Angles(math.rad(-15),0,math.rad(30)), CurrentFrame)
|
|
LA.C0 = AnimLerp(CurrentLeftArm, LAD * CFrame.Angles(math.rad(-15),0,math.rad(-30)), CurrentFrame)
|
|
LR.C1 = AnimLerp(CurrentRightLeg, RLD * CFrame.Angles(math.rad(15),0,math.rad(-7.5)), CurrentFrame)
|
|
LL.C1 = AnimLerp(CurrentLeftLeg, LLD * CFrame.Angles(math.rad(15),0,math.rad(7.5)), CurrentFrame)
|
|
elseif CurrentAnimation == "Backward" then
|
|
rotTop = -6
|
|
rofBot = -6
|
|
RA.C0 = AnimLerp(CurrentRightArm, RAD * CFrame.Angles(math.rad(15),0,math.rad(20)), CurrentFrame)
|
|
LA.C0 = AnimLerp(CurrentLeftArm, LAD * CFrame.Angles(math.rad(15),0,math.rad(-20)), CurrentFrame)
|
|
LR.C1 = AnimLerp(CurrentRightLeg, RLD * CFrame.Angles(math.rad(-15),0,math.rad(-7.5)), CurrentFrame)
|
|
LL.C1 = AnimLerp(CurrentLeftLeg, LLD * CFrame.Angles(math.rad(-15),0,math.rad(7.5)), CurrentFrame)
|
|
elseif CurrentAnimation == "SwivelLeft" then
|
|
rofTop = 3
|
|
rofBot = 3
|
|
RA.C0 = AnimLerp(CurrentRightArm, RAD * CFrame.Angles(math.rad(15),0,math.rad(25)), CurrentFrame)
|
|
LA.C0 = AnimLerp(CurrentLeftArm, LAD * CFrame.Angles(math.rad(-15),0,math.rad(-25)), CurrentFrame)
|
|
LR.C1 = AnimLerp(CurrentRightLeg, RLD * CFrame.Angles(math.rad(-10),0,math.rad(-7.5)), CurrentFrame)
|
|
LL.C1 = AnimLerp(CurrentLeftLeg, LLD * CFrame.Angles(math.rad(10),0,math.rad(7.5)), CurrentFrame)
|
|
elseif CurrentAnimation == "SwivelRight" then
|
|
rofTop = -3
|
|
rofBot = -3
|
|
RA.C0 = AnimLerp(CurrentRightArm, RAD * CFrame.Angles(math.rad(-15),0,math.rad(25)), CurrentFrame)
|
|
LA.C0 = AnimLerp(CurrentLeftArm, LAD * CFrame.Angles(math.rad(15),0,math.rad(-25)), CurrentFrame)
|
|
LR.C1 = AnimLerp(CurrentRightLeg, RLD * CFrame.Angles(math.rad(10),0,math.rad(-7.5)), CurrentFrame)
|
|
LL.C1 = AnimLerp(CurrentLeftLeg, LLD * CFrame.Angles(math.rad(-10),0,math.rad(7.5)), CurrentFrame)
|
|
elseif CurrentAnimation == "DisableHandAnim" then
|
|
rofBot = 1
|
|
LR.C1 = AnimLerp(CurrentRightLeg, RLD * CFrame.Angles(0,0,math.rad(-7.5)), CurrentFrame)
|
|
LL.C1 = AnimLerp(CurrentLeftLeg, LLD * CFrame.Angles(0,0,math.rad(7.5)), CurrentFrame)
|
|
end
|
|
|
|
LastAnimation = CurrentAnimation
|
|
end)
|
|
|
|
while true do
|
|
for i = 0,10,0.1 do
|
|
Lift = Lift + (math.sin(math.pi*2/10*i)*0.1)
|
|
wait(0.02)
|
|
end
|
|
end |