Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --//====================================================\\--
- --|| BASIS
- --\\====================================================//--
- local MODULE = script.Parent
- local CHARACTER = MODULE.Parent
- local PLAYER = game:GetService("Players"):GetPlayerFromCharacter(CHARACTER)
- local HUM = CHARACTER.Humanoid
- local REMOTE = MODULE.Event
- local ROOT = HUM.Torso
- local HEAD = CHARACTER.Head
- local TORSO = CHARACTER.Torso
- local RIGHTARM = CHARACTER["Right Arm"]
- local LEFTARM = CHARACTER["Left Arm"]
- local RIGHTLEG = CHARACTER["Right Leg"]
- local LEFTLEG = CHARACTER["Left Leg"]
- local ROOTJOINT = ROOT["RootJoint"]
- local NECK = TORSO["Neck"]
- local RIGHTSHOULDER = TORSO["Right Shoulder"]
- local LEFTSHOULDER = TORSO["Left Shoulder"]
- local RIGHTHIP = TORSO["Right Hip"]
- local LEFTHIP = TORSO["Left Hip"]
- local MOUSEPOS = ROOT.Position
- IT = Instance.new
- CF = CFrame.new
- VT = Vector3.new
- RAD = math.rad
- C3 = Color3.new
- UD2 = UDim2.new
- BRICKC = BrickColor.new
- ANGLES = CFrame.Angles
- EULER = CFrame.fromEulerAnglesXYZ
- COS = math.cos
- ACOS = math.acos
- SIN = math.sin
- ASIN = math.asin
- ABS = math.abs
- MRANDOM = math.random
- FLOOR = math.floor
- --//====================================================\\--
- --|| FE CODE
- --\\====================================================//--
- local FakeMouse = script.FakeMouse:Clone();
- FakeMouse.Parent = PLAYER.Character;
- script.FakeMouse:Destroy()
- do
- local GUID = {}
- do
- GUID.IDs = {};
- function GUID:new(len)
- local id;
- if(not len)then
- id = (tostring(function() end))
- id = id:gsub("function: ","")
- else
- local function genID(len)
- local newID = ""
- for i = 1,len do
- newID = newID..string.char(math.random(48,90))
- end
- return newID
- end
- repeat id = genID(len) until not GUID.IDs[id]
- local oid = id;
- id = {Trash=function() GUID.IDs[oid]=nil; end;Get=function() return oid; end}
- GUID.IDs[oid]=true;
- end
- return id
- end
- end
- local AHB = Instance.new("BindableEvent")
- local FPS = 30
- local TimeFrame = 0
- local LastFrame = tick()
- local Frame = 1/FPS
- game:service'RunService'.Heartbeat:connect(function(s,p)
- TimeFrame = TimeFrame + s
- if(TimeFrame >= Frame)then
- for i = 1,math.floor(TimeFrame/Frame) do
- AHB:Fire()
- end
- LastFrame=tick()
- TimeFrame=TimeFrame-Frame*math.floor(TimeFrame/Frame)
- end
- end)
- function swait(dur)
- if(dur == 0 or typeof(dur) ~= 'number')then
- AHB.Event:wait()
- else
- for i = 1, dur*FPS do
- AHB.Event:wait()
- end
- end
- end
- local oPlayer = PLAYER
- local Player = oPlayer
- local loudnesses={}
- script.Parent = Player.Character
- local CoAS = {Actions={}}
- local Event = Instance.new("RemoteEvent")
- Event.Name = "UserInputEvent"
- Event.Parent = Player.Character
- local Func = Instance.new("RemoteFunction")
- Func.Name = "GetClientProperty"
- Func.Parent = Player.Character
- local fakeEvent = function()
- local t = {_fakeEvent=true,Waited={},Connected={}}
- t.Connect = function(self,f)
- local ft={}
- ft={Disconnected=false;disconnect=function(s) if(self.Function==ft)then self.Function=nil end s.Disconnected=true end}
- ft.Disconnect=ft.disconnect
- ft.Func=function(...)
- for id,_ in next, t.Waited do
- t.Waited[id] = true
- end
- return f(...)
- end;
- table.insert(self.Connected,ft)
- return ft;
- end
- t.connect = t.Connect
- t.Wait = function()
- local guid = GUID:new(25)
- local waitingId = guid:Get()
- t.Waited[waitingId]=false
- repeat swait() until t.Waited[waitingId]==true
- t.Waited[waitingId]=nil;
- guid:Trash()
- end
- t.wait = t.Wait
- return t
- end
- local m = {Target=nil,Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent()}
- local UsIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
- local Run = {RenderStepped=fakeEvent()}
- function CoAS:BindAction(name,fun,touch,...)
- CoAS.Actions[name] = {Name=name,Function=fun,Keys={...}}
- end
- function CoAS:UnbindAction(name)
- CoAS.Actions[name] = nil
- end
- local function te(self,ev,...)
- local t = self[ev]
- if t and t._fakeEvent and t.Connected then
- for i,v in next, t.Connected do
- if(v.Func and not v.Disconnected)then
- v.Func(...)
- else
- t.Connected[i]=nil
- end
- end
- end
- end
- m.TrigEvent = te
- UsIS.TrigEvent = te
- Run.TrigEvent = te
- Event.OnServerEvent:Connect(function(plr,io)
- if plr~=Player then return end
- --[[table.foreach(io,print)
- print'---']]
- if io.Mouse then
- m.Target = io.Target
- m.Hit = io.Hit
- MOUSEPOS = m.Hit.p
- elseif io.KeyEvent then
- m:TrigEvent('Key'..io.KeyEvent,io.Key)
- elseif io.UserInputType == Enum.UserInputType.MouseButton1 then
- if io.UserInputState == Enum.UserInputState.Begin then
- m:TrigEvent("Button1Down")
- else
- m:TrigEvent("Button1Up")
- end
- end
- if(not io.KeyEvent and not io.Mouse)then
- for n,t in pairs(CoAS.Actions) do
- for _,k in pairs(t.Keys) do
- if k==io.KeyCode then
- t.Function(t.Name,io.UserInputState,io)
- end
- end
- end
- if io.UserInputState == Enum.UserInputState.Begin then
- UsIS:TrigEvent("InputBegan",io,false)
- else
- UsIS:TrigEvent("InputEnded",io,false)
- end
- end
- end)
- Func.OnServerInvoke = function(plr,inst,play)
- if plr~=Player then return end
- if(inst and typeof(inst) == 'Instance' and inst:IsA'Sound')then
- loudnesses[inst]=play
- end
- end
- function GetClientProperty(inst,prop)
- if(prop == 'PlaybackLoudness' and loudnesses[inst])then
- return loudnesses[inst]
- elseif(prop == 'PlaybackLoudness')then
- return Func:InvokeClient(Player,'RegSound',inst)
- end
- return Func:InvokeClient(Player,inst,prop)
- end
- local oldGame = game;
- function GetFakePlayer()
- local oldPlayer = Player;
- local fakePlayer = newproxy(true)
- getmetatable(fakePlayer).__index = function(s,i)
- if(i == 'GetMouse')then
- return function() return m; end
- end
- return Player[i]
- end
- getmetatable(fakePlayer).__newindex = function(s,i,v)
- Player[i]=v
- end
- getmetatable(fakePlayer).__call=function(self,...)
- if(self == fakePlayer)then self = Player end
- local wh = {...}
- local name = table.remove(wh,1)
- for i,v in next, wh do
- wh[i]=v
- end
- if(name == 'GetMouse')then
- return m;
- end
- return self(name,unpack(wh))
- end
- getmetatable(fakePlayer).__namecall=function(self,...)
- if(self == fakePlayer)then self = Player end
- local tuple={...}
- local name = table.remove(tuple,#tuple)
- if(name == 'GetMouse')then
- return m;
- else
- return self[name](self,unpack(tuple))
- end
- end
- return fakePlayer
- end
- local oll = LoadLibrary;
- function LoadLibrary(libtard)
- local libtarddestroyed=oll(libtard)
- if(libtard=='RbxUtility')then
- local library={Create=function(obj)
- local inst = Instance.new(obj)
- return function(props)
- for prop,valu in next, props do
- inst[prop]=valu
- end
- return inst
- end
- end}
- setmetatable(library,{__index=libtarddestroyed,__newindex=function(s,i,v) libtarddestroyed[i]=v end})
- return library
- else
- return libtarddestroyed
- end
- end
- fakePlayer = GetFakePlayer()
- local function GetService(s,i)
- local service = s:GetService(i)
- if(i == 'Players')then
- local oldService = service;
- local fakeService = newproxy(true)
- getmetatable(fakeService).__index = function(s,i)
- if(s == fakeService)then s=oldService end
- if(i == 'LocalPlayer' or i == 'localPlayer')then
- return fakePlayer
- elseif(i == 'oPlayer')then
- return oPlayer
- else
- return s[i]
- end
- end
- getmetatable(fakeService).__newindex = function(s,i,v)
- if(s == fakeService)then s=oldService end
- s[i]=v
- end
- getmetatable(fakeService).__call=function(self,...)
- if(self == fakeService)then self = oldService end
- local wh = {...}
- local name = table.remove(wh,1)
- for i,v in next, wh do
- wh[i]=v
- end
- return self(name,unpack(wh))
- end
- getmetatable(fakeService).__namecall=function(self,...)
- if(self == fakeService)then self = oldService end
- local tuple={...}
- local name = table.remove(tuple,#tuple)
- return self[name](self,unpack(tuple))
- end
- getmetatable(fakeService).__metatable = 'gay'
- return fakeService
- elseif(i == 'RunService')then
- local oldService = service;
- local fakeService = newproxy(true)
- getmetatable(fakeService).__index = function(s,i)
- if(s == fakeService)then s=oldService end
- return Run[i] or s[i]
- end
- getmetatable(fakeService).__newindex = function(s,i,v)
- if(s == fakeService)then s=oldService end
- s[i]=v
- end
- getmetatable(fakeService).__call=function(self,...)
- if(self == fakeService)then self = oldService end
- local wh = {...}
- local name = table.remove(wh,1)
- for i,v in next, wh do
- wh[i]=v
- end
- return self(name,unpack(wh))
- end
- getmetatable(fakeService).__namecall=function(self,...)
- if(self == fakeService)then self = oldService end
- local tuple={...}
- local name = table.remove(tuple,#tuple)
- return self[name](self,unpack(tuple))
- end
- getmetatable(fakeService).__metatable = 'gay'
- return fakeService
- elseif(i == 'UserInputService')then
- return UsIS
- elseif(i == 'ContextActionService')then
- return CoAS;
- else
- return service
- end
- end
- local new = Instance.new;
- Instance = {}
- Instance.new = function(inst,obje)
- local lp = GetService(oldGame,'Players').localPlayer
- local instance = new(inst)
- if(inst=='ObjectValue')then
- local fake = newproxy(true)
- getmetatable(fake).__index=function(self,index)
- if(self==fake)then self=instance end
- return self[index]
- end
- getmetatable(fake).__newindex=function(self,index,value)
- if(self==fake)then self=instance end
- if(index=='Value' and typeof(value)~='Instance' and value==fakePlayer)then
- self[index]=oPlayer
- else
- self[index]=value
- end
- end
- getmetatable(fake).__call=function(self,...)
- if(self == fake)then self = instance end
- local wh = {...}
- local name = table.remove(wh,1)
- for i,v in next, wh do
- if(v == fake)then v = instance end
- wh[i]=v
- end
- return self(name,unpack(wh))
- end
- getmetatable(fake). __namecall=function(self,...)
- if(self == fake)then self = instance end
- local tuple={...}
- local name = table.remove(tuple,#tuple)
- return self[name](self,unpack(tuple))
- end
- return fake
- elseif(inst=='aaa')then
- local fake = newproxy(true)
- getmetatable(fake).__index=function(self,index)
- if(self==fake)then self=instance end
- if(index=='PlaybackLoudnes')then
- return GetClientProperty(instance,'PlaybackLoudness')
- end
- return self[index]
- end
- getmetatable(fake).__newindex=function(self,index,value)
- if(self==fake)then self=instance end
- self[index]=value
- end
- getmetatable(fake).__call=function(self,...)
- if(self == fake)then self = instance end
- local wh = {...}
- local name = table.remove(wh,1)
- for i,v in next, wh do
- if(v == fake)then v = instance end
- wh[i]=v
- end
- return self(name,unpack(wh))
- end
- getmetatable(fake). __namecall=function(self,...)
- if(self == fake)then self = instance end
- local tuple={...}
- local name = table.remove(tuple,#tuple)
- return self[name](self,unpack(tuple))
- end
- return fake
- else
- instance.Parent = obje
- return instance;
- end
- end
- local serviceFunctions={
- service=true,
- GetService=true,
- }
- local fakeGame = newproxy(true)
- getmetatable(fakeGame).__index = function(s,i)
- if(s == fakeGame)then s=oldGame end
- local serv = GetService(oldGame,i)
- if serviceFunctions[i] then
- return GetService
- elseif(serv)then
- return serv
- else
- return s[i]
- end
- end
- getmetatable(fakeGame).__newindex = function(s,i,v)
- if(s == fakeGame)then s=oldGame end
- s[i]=v
- end
- getmetatable(fakeGame).__call=function(self,...)
- if(self == fakeGame)then self = oldGame end
- local wh = {...}
- local name = table.remove(wh,1)
- for i,v in next, wh do
- if(v == fakeGame)then v = oldGame end
- wh[i]=v
- end
- if serviceFunctions[name] then
- return GetService(self,unpack(wh))
- else
- return self(name,unpack(wh))
- end
- end
- getmetatable(fakeGame). __namecall=function(self,...)
- if(self == fakeGame)then self = oldGame end
- local tuple={...}
- local name = table.remove(tuple,#tuple)
- local funcToCall=self[name]
- if serviceFunctions[name] then
- return GetService(self,unpack(tuple))
- else
- return self[name](self,unpack(tuple))
- end
- end
- getmetatable(fakeGame).__metatable = 'gay'
- coroutine.wrap(function()
- while true do
- Run:TrigEvent('RenderStepped')
- swait()
- end
- end)()
- game=fakeGame
- UserInputService,ContextActionService = UsIS,CoAS
- end
- --//====================================================\\--
- --|| BACKGROUND VALUES
- --\\====================================================//--
- local ANIM_SPEED = 3
- local MOUSE = PLAYER:GetMouse()
- local FRAME_SPEED = 1 / 60 -- (1 / 30) OR (1 / 60)
- local CHANGE = 2 / ANIM_SPEED
- local DAMAGEMULTIPLIER = 1
- local ANIM = "Idle"
- local KEYHOLD = false
- local MOUSEHOLD = false
- local SINE = 0
- local ATTACKING = false
- local Debris = game:GetService("Debris")
- local Effects = IT("Folder",CHARACTER)
- Effects.Name = "FXFolder"
- local ROOTC0 = CF(0, 0, 0) * ANGLES(RAD(-90), RAD(0), RAD(180))
- local NECKC0 = CF(0, 1, 0) * ANGLES(RAD(-90), RAD(0), RAD(180))
- local RIGHTSHOULDERC0 = CF(-0.5, 0, 0) * ANGLES(RAD(0), RAD(90), RAD(0))
- local LEFTSHOULDERC0 = CF(0.5, 0, 0) * ANGLES(RAD(0), RAD(-90), RAD(0))
- local BGM = 213546066
- local BOMB = 2671146857
- local STORED = 20
- --//====================================================\\--
- --|| HEARTBEAT
- --\\====================================================//--
- ArtificialHB = Instance.new("BindableEvent", script)
- ArtificialHB.Name = "ArtificialHB"
- script:WaitForChild("ArtificialHB")
- frame = FRAME_SPEED
- tf = 0
- allowframeloss = false
- tossremainder = false
- lastframe = tick()
- script.ArtificialHB:Fire()
- game:GetService("RunService").Heartbeat:connect(function(s, p)
- tf = tf + s
- if tf >= frame then
- if allowframeloss then
- ArtificialHB:Fire()
- lastframe = tick()
- else
- for i = 1, math.floor(tf / frame) do
- ArtificialHB:Fire()
- end
- lastframe = tick()
- end
- if tossremainder then
- tf = 0
- else
- tf = tf - frame * math.floor(tf / frame)
- end
- end
- end)
- function PositiveAngle(NUMBER)
- if NUMBER >= 0 then
- NUMBER = 0
- end
- return NUMBER
- end
- function NegativeAngle(NUMBER)
- if NUMBER <= 0 then
- NUMBER = 0
- end
- return NUMBER
- end
- function Swait(NUMBER)
- if NUMBER == 0 or NUMBER == nil then
- ArtificialHB.Event:wait()
- else
- for i = 1, NUMBER do
- ArtificialHB.Event:wait()
- end
- end
- end
- --//====================================================\\--
- --|| CLERP
- --\\====================================================//--
- function QuaternionFromCFrame(cf)
- local mx, my, mz, m00, m01, m02, m10, m11, m12, m20, m21, m22 = cf:components()
- local trace = m00 + m11 + m22
- if trace > 0 then
- local s = math.sqrt(1 + trace)
- local recip = 0.5 / s
- return (m21 - m12) * recip, (m02 - m20) * recip, (m10 - m01) * recip, s * 0.5
- else
- local i = 0
- if m11 > m00 then
- i = 1
- end
- if m22 > (i == 0 and m00 or m11) then
- i = 2
- end
- if i == 0 then
- local s = math.sqrt(m00 - m11 - m22 + 1)
- local recip = 0.5 / s
- return 0.5 * s, (m10 + m01) * recip, (m20 + m02) * recip, (m21 - m12) * recip
- elseif i == 1 then
- local s = math.sqrt(m11 - m22 - m00 + 1)
- local recip = 0.5 / s
- return (m01 + m10) * recip, 0.5 * s, (m21 + m12) * recip, (m02 - m20) * recip
- elseif i == 2 then
- local s = math.sqrt(m22 - m00 - m11 + 1)
- local recip = 0.5 / s return (m02 + m20) * recip, (m12 + m21) * recip, 0.5 * s, (m10 - m01) * recip
- end
- end
- end
- function QuaternionToCFrame(px, py, pz, x, y, z, w)
- local xs, ys, zs = x + x, y + y, z + z
- local wx, wy, wz = w * xs, w * ys, w * zs
- local xx = x * xs
- local xy = x * ys
- local xz = x * zs
- local yy = y * ys
- local yz = y * zs
- local zz = z * zs
- return CFrame.new(px, py, pz, 1 - (yy + zz), xy - wz, xz + wy, xy + wz, 1 - (xx + zz), yz - wx, xz - wy, yz + wx, 1 - (xx + yy))
- end
- function QuaternionSlerp(a, b, t)
- local cosTheta = a[1] * b[1] + a[2] * b[2] + a[3] * b[3] + a[4] * b[4]
- local startInterp, finishInterp;
- if cosTheta >= 0.0001 then
- if (1 - cosTheta) > 0.0001 then
- local theta = ACOS(cosTheta)
- local invSinTheta = 1 / SIN(theta)
- startInterp = SIN((1 - t) * theta) * invSinTheta
- finishInterp = SIN(t * theta) * invSinTheta
- else
- startInterp = 1 - t
- finishInterp = t
- end
- else
- if (1 + cosTheta) > 0.0001 then
- local theta = ACOS(-cosTheta)
- local invSinTheta = 1 / SIN(theta)
- startInterp = SIN((t - 1) * theta) * invSinTheta
- finishInterp = SIN(t * theta) * invSinTheta
- else
- startInterp = t - 1
- finishInterp = t
- end
- end
- return a[1] * startInterp + b[1] * finishInterp, a[2] * startInterp + b[2] * finishInterp, a[3] * startInterp + b[3] * finishInterp, a[4] * startInterp + b[4] * finishInterp
- end
- function Clerp(a, b, t)
- local qa = {QuaternionFromCFrame(a)}
- local qb = {QuaternionFromCFrame(b)}
- local ax, ay, az = a.x, a.y, a.z
- local bx, by, bz = b.x, b.y, b.z
- local _t = 1 - t
- return QuaternionToCFrame(_t * ax + t * bx, _t * ay + t * by, _t * az + t * bz, QuaternionSlerp(qa, qb, t))
- end
- --//====================================================\\--
- --|| FUNCTIONS
- --\\====================================================//--
- function WeldParts(A,B)
- local WLD = IT("ManualWeld")
- WLD.Part0 = A
- WLD.Part1 = B
- WLD.C1 = B.CFrame:inverse() * A.CFrame
- WLD.Parent = A
- return WLD
- end
- --NewSound({ID = 0,PARENT = ROOT,VOLUME = 0.5,PITCH = 1,LOOP = false,MAXDISTANCE = 1000,EMITTERSIZE = 10,PLAYING = true,PLAYONREMOVE = false,DOESDEBRIS = true})
- function NewSound(TABLE)
- local ID = "rbxassetid://"..(TABLE.ID or 0)
- local PARENT = (TABLE.PARENT or ROOT)
- local VOLUME = (TABLE.VOLUME or 0.5)
- local PITCH = (TABLE.PITCH or 1)
- local LOOP = (TABLE.LOOP or false)
- local MAXDISTANCE = (TABLE.MAXDISTANCE or 100)
- local EMITTERSIZE = (TABLE.EMITTERSIZE or 10)
- local PLAYING = (TABLE.PLAYING or true)
- local PLAYONREMOVE = (TABLE.PLAYONREMOVE or false)
- local DOESDEBRIS = (TABLE.DOESDEBRIS or true)
- if ID ~= "rbxassetid://0" then
- local SOUND = IT("Sound",PARENT)
- SOUND.SoundId = ID
- SOUND.Volume = VOLUME
- SOUND.Pitch = PITCH
- SOUND.Looped = LOOP
- SOUND.MaxDistance = MAXDISTANCE
- SOUND.EmitterSize = EMITTERSIZE
- SOUND.PlayOnRemove = PLAYONREMOVE
- if DOESDEBRIS == true and PLAYING == true and LOOP == false then
- Debris:AddItem(SOUND,SOUND.TimeLength+5)
- end
- if PLAYING == true then
- SOUND:Play()
- end
- return SOUND
- end
- end
- function ManSlaughter(MAN)
- if MAN then
- local ROOT = MAN:FindFirstChild("HumanoidRootPart")
- if ROOT then
- ROOT:Remove()
- end
- local MANHUM = MAN:FindFirstChildOfClass("Humanoid")
- if MANHUM then
- MANHUM.BreakJointsOnDeath = false
- MANHUM.Health = 0
- end
- if MAN:FindFirstChild("R6Ragdoll") == nil and MAN:FindFirstChild("R15Ragdoll") == nil then
- if MAN:FindFirstChild("UpperTorso") then
- local SCRIPT = script.R15Ragdoll:Clone()
- SCRIPT.Parent = MAN
- SCRIPT.Disabled = false
- else
- local SCRIPT = script.R6Ragdoll:Clone()
- SCRIPT.Parent = MAN
- SCRIPT.Disabled = false
- end
- local TORSO = MAN:FindFirstChild("Torso") or MAN:FindFirstChild("UpperTorso")
- if TORSO then
- NewSound({ID = 146594648,PARENT = TORSO,VOLUME = 1,PITCH = MRANDOM(8,12)/10,LOOP = false,MAXDISTANCE = 75,EMITTERSIZE = 15,PLAYING = true,PLAYONREMOVE = false,DOESDEBRIS = true})
- end
- end
- MAN:BreakJoints()
- if MAN:FindFirstChild("Slaughtered") == nil then
- local MARK = IT("Folder",MAN)
- MARK.Name = "Slaughtered"
- else
- if MAN:FindFirstChild("Slaughtered") then
- local TORSO = MAN:FindFirstChild("Torso") or MAN:FindFirstChild("UpperTorso")
- if TORSO then
- TORSO.RotVelocity = VT(0,MRANDOM(-25,25),0)
- end
- end
- end
- end
- end
- function AreaOfEffect(AREA,RANGE,FLING,RETURN)
- local HIT = {}
- for index, CHILD in pairs(workspace:GetChildren()) do
- if CHILD:FindFirstChildOfClass("Humanoid") then
- local HUMAN = CHILD:FindFirstChildOfClass("Humanoid")
- local ROOT = HUMAN.Torso
- if ROOT then
- if (ROOT.Position - AREA).Magnitude <= RANGE then
- if RETURN == true then
- if CHILD ~= CHARACTER then
- table.insert(HIT,{CHILD,HUMAN,ROOT})
- end
- else
- if CHILD ~= CHARACTER then
- ManSlaughter(CHILD)
- end
- local BV = IT("BodyVelocity")
- BV.MaxForce = BV.MaxForce * 500
- BV.Velocity = CF(AREA,ROOT.Position+VT(0,0.5,0)).lookVector*FLING
- BV.Parent = ROOT
- Debris:AddItem(BV,0.05)
- end
- end
- end
- end
- end
- if RETURN == true then
- return HIT
- end
- end
- function CreatePart(FORMFACTOR, PARENT, MATERIAL, REFLECTANCE, TRANSPARENCY, BRICKCOLOR, NAME, SIZE, ANCHOR)
- local NEWPART = IT("Part")
- NEWPART.formFactor = FORMFACTOR
- NEWPART.Reflectance = REFLECTANCE
- NEWPART.Transparency = TRANSPARENCY
- NEWPART.CanCollide = false
- NEWPART.Locked = true
- NEWPART.Anchored = true
- if ANCHOR == false then
- NEWPART.Anchored = false
- end
- NEWPART.BrickColor = BRICKC(tostring(BRICKCOLOR))
- NEWPART.Name = NAME
- NEWPART.Size = SIZE
- NEWPART.Position = ROOT.Position
- NEWPART.Material = MATERIAL
- NEWPART:BreakJoints()
- NEWPART.Parent = PARENT
- return NEWPART
- end
- function Raycast(POSITION, DIRECTION, RANGE, IGNOREDECENDANTS)
- return workspace:FindPartOnRay(Ray.new(POSITION, DIRECTION.unit * RANGE), IGNOREDECENDANTS)
- end
- function CameraShake(AREA,RANGE,SHAKE,TIMER)
- for index, CHILD in pairs(workspace:GetChildren()) do
- if CHILD:FindFirstChildOfClass("Humanoid") then
- local HUMAN = CHILD:FindFirstChildOfClass("Humanoid")
- local ROOT = HUMAN.Torso
- if ROOT and game.Players:GetPlayerFromCharacter(CHILD) then
- if (ROOT.Position - AREA).Magnitude <= RANGE then
- if CHILD:FindFirstChild("CamShake") then
- Debris:AddItem(CHILD:FindFirstChild("CamShake"),0.05)
- end
- local CAMSHAKE = script.CamShake:Clone()
- CAMSHAKE.Parent = CHILD
- local TIMER_V = IT("NumberValue",CAMSHAKE)
- TIMER_V.Name = "Timer"
- TIMER_V.Value = TIMER
- local SHAKE_V = IT("NumberValue",CAMSHAKE)
- SHAKE_V.Name = "Shake"
- SHAKE_V.Value = SHAKE
- CAMSHAKE.Disabled = false
- Debris:AddItem(CAMSHAKE,15)
- end
- end
- end
- end
- end
- --//====================================================\\--
- --|| CHARACTER
- --\\====================================================//--
- local HELMET = MODULE.Helmet
- HELMET.Parent = CHARACTER
- for index, CHILD in pairs(CHARACTER:GetChildren()) do
- if CHILD ~= ROOT then
- if CHILD:IsA("Accessory") then
- CHILD:Remove()
- end
- end
- end
- local FACE = HEAD.face
- FACE.Texture = "rbxassetid://559113097"
- HELMET.CFrame = HEAD.CFrame*CF(0,0.5,0)
- HELMET.Anchored = false
- WeldParts(HEAD,HELMET)
- local BAZOOKA = MODULE.Bazooka
- BAZOOKA.Parent = CHARACTER
- BAZOOKA.Anchored = false
- local GRIP = IT("Motor6D")
- GRIP.Part0 = RIGHTARM
- GRIP.Part1 = BAZOOKA
- GRIP.C0 = CF(0,-1,-0.5)*ANGLES(RAD(-90),0,0)*CF(0,0,1.85)
- local G_C0 = GRIP.C0
- GRIP.Parent = RIGHTARM
- for i = 1, 15 do
- local FACE = CreatePart(3, CHARACTER, "Fabric", 0, 0+(i-1)/15.2, "Dark stone grey", "FaceGradient", VT(1.01,0.58,1.01),false)
- FACE.Color = C3(0,0,0)
- HEAD:FindFirstChildOfClass("SpecialMesh"):Clone().Parent = FACE
- FACE.CFrame = HEAD.CFrame*CF(0,0.3-(i-1)/35,0)
- WeldParts(HEAD,FACE)
- end
- local MISSILE = MODULE.Missile
- MISSILE.Parent = nil
- local GUI = MODULE.ControlsGUI
- GUI.Parent = PLAYER.PlayerGui
- GUI.ToggleButton.MouseButton1Click:Connect(function()
- if GUI.ToggleButton.Controls.Visible == false then
- GUI.ToggleButton.Controls.Visible = true
- elseif GUI.ToggleButton.Controls.Visible == true then
- GUI.ToggleButton.Controls.Visible = false
- end
- end)
- local STOREDGUI = GUI.ToggleButton.Stored
- STOREDGUI.Text = "STORED: "..STORED
- function AddTo(ADD)
- STORED = STORED + ADD
- STOREDGUI.Text = "STORED: "..STORED
- end
- --//====================================================\\--
- --|| ABILITIES
- --\\====================================================//--
- function Fire_in_the_hole()
- if STORED > 0 then
- ATTACKING = true
- local GYRO = IT("BodyGyro")
- GYRO.D = 50
- GYRO.P = 5000
- GYRO.MaxTorque = VT(0,4000000,0)
- GYRO.CFrame = CF(ROOT.Position,MOUSEPOS)
- GYRO.Parent = ROOT
- ATTACKING = true
- coroutine.resume(coroutine.create(function()
- repeat
- Swait()
- GYRO.CFrame = CF(ROOT.Position,MOUSEPOS)
- until ATTACKING == false
- GYRO:Remove()
- end))
- repeat
- for i=0, 0.06, 0.1 / ANIM_SPEED do
- Swait()
- ROOTJOINT.C0 = Clerp(ROOTJOINT.C0,ROOTC0 * CF(0, 0, -0.02) * ANGLES(RAD(0), RAD(0), RAD(45)), 2.5 / ANIM_SPEED)
- NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(0), RAD(0), RAD(-45)) * ANGLES(RAD(5), RAD(0), RAD(0)), 2.5 / ANIM_SPEED)
- RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(90), RAD(0), RAD(45)) * RIGHTSHOULDERC0, 2.5 / ANIM_SPEED)
- LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(-45), RAD(0), RAD(-45)) * LEFTSHOULDERC0, 1.5 / ANIM_SPEED)
- RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1, -1, 0) * ANGLES(RAD(0), RAD(45), RAD(0)) * CF(0.4,0,0) * ANGLES(RAD(-10), RAD(0), RAD(0)), 2.5 / ANIM_SPEED)
- LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1.1, -1, 0) * ANGLES(RAD(0), RAD(-135), RAD(0)) * CF(-0.4,0,0) * ANGLES(RAD(-10), RAD(0), RAD(0)), 2.5 / ANIM_SPEED)
- end
- AddTo(-1)
- coroutine.resume(coroutine.create(function()
- local GOTO = MOUSEPOS
- local ROCKET = MISSILE:Clone()
- ROCKET.Parent = Effects
- ROCKET.CFrame = CF(BAZOOKA.CFrame*CF(0,0,-2).p,GOTO)
- NewSound({ID = 440145223,PARENT = BAZOOKA,VOLUME = 2,PITCH = MRANDOM(9,11)/10,LOOP = false,MAXDISTANCE = 80,EMITTERSIZE = 15,PLAYING = true,PLAYONREMOVE = false,DOESDEBRIS = true})
- NewSound({ID = 440145223,PARENT = ROCKET,VOLUME = 2,PITCH = MRANDOM(9,11)/10,LOOP = false,MAXDISTANCE = 80,EMITTERSIZE = 15,PLAYING = true,PLAYONREMOVE = false,DOESDEBRIS = true})
- for i = 1, 200 do
- Swait()
- local HIT,POS = Raycast(ROCKET.Position,ROCKET.CFrame.lookVector,5,CHARACTER)
- if HIT then
- ROCKET.CFrame = CF(POS)
- break
- end
- ROCKET.CFrame = ROCKET.CFrame*CF(0,0,-4)
- end
- ROCKET.Transparency = 1
- ROCKET.Hind:Remove()
- ROCKET.CFrame = CF(ROCKET.Position)
- ROCKET.Size = VT(0,0,0)
- NewSound({ID = 142070127,PARENT = ROCKET,VOLUME = 7,PITCH = MRANDOM(8,12)/10,LOOP = false,MAXDISTANCE = 300,EMITTERSIZE = 15,PLAYING = true,PLAYONREMOVE = false,DOESDEBRIS = true})
- for index, CHILD in pairs(script.Grenade:GetChildren()) do
- local C = CHILD:Clone()
- C.Parent = ROCKET
- C:Emit(125)
- end
- CameraShake(ROCKET.Position,50,125,70)
- AreaOfEffect(ROCKET.Position,35,200,false)
- Debris:AddItem(ROCKET,2)
- end))
- for i=0, 0.025, 0.1 / ANIM_SPEED do
- Swait()
- ROOTJOINT.C0 = Clerp(ROOTJOINT.C0,ROOTC0 * CF(0, 0, -0.02) * ANGLES(RAD(0), RAD(0), RAD(45)), 2.5 / ANIM_SPEED)
- NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(0), RAD(0), RAD(-45)) * ANGLES(RAD(5), RAD(0), RAD(0)), 2.5 / ANIM_SPEED)
- RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(200), RAD(0), RAD(45)) * RIGHTSHOULDERC0, 2.5 / ANIM_SPEED)
- LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(-45), RAD(0), RAD(-45)) * LEFTSHOULDERC0, 1.5 / ANIM_SPEED)
- RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1, -1, 0) * ANGLES(RAD(0), RAD(45), RAD(0)) * CF(0.4,0,0) * ANGLES(RAD(-10), RAD(0), RAD(0)), 2.5 / ANIM_SPEED)
- LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1.1, -1, 0) * ANGLES(RAD(0), RAD(-135), RAD(0)) * CF(-0.4,0,0) * ANGLES(RAD(-10), RAD(0), RAD(0)), 2.5 / ANIM_SPEED)
- end
- until MOUSEHOLD == false or STORED <= 0
- if STORED <= 0 then
- STORED = 0
- STOREDGUI.Text = "STORED: 0"
- end
- ATTACKING = false
- end
- end
- function Store()
- HUM.WalkSpeed = 0
- HUM.JumpPower = 0
- ATTACKING = true
- repeat
- for i=0, 0.01, 0.1 / ANIM_SPEED do
- Swait()
- GRIP.C0 = Clerp(GRIP.C0, CF(0,-1,-0.5)*ANGLES(RAD(-80),RAD(15),0)*CF(0,0,1.85), 2.5 / ANIM_SPEED)
- ROOTJOINT.C0 = Clerp(ROOTJOINT.C0,ROOTC0 * CF(0, 0, -0.02 + 0.05 * COS(SINE / 6)) * ANGLES(RAD(0), RAD(0), RAD(-5)), 0.5 / ANIM_SPEED)
- NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(15), RAD(0), RAD(15)), 2.5 / ANIM_SPEED)
- RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.7, 0.45, 0) * ANGLES(RAD(35), RAD(0), RAD(-45)) * RIGHTSHOULDERC0, 2.5 / ANIM_SPEED)
- LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(45), RAD(0), RAD(-25)) * LEFTSHOULDERC0, 2.5 / ANIM_SPEED)
- RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1, -1 - 0.05 * COS(SINE / 6), 0) * ANGLES(RAD(0), RAD(85), RAD(0)) * ANGLES(RAD(-10), RAD(0), RAD(-2.5)), 0.5 / ANIM_SPEED)
- LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1, -1 - 0.05 * COS(SINE / 6), 0) * ANGLES(RAD(0), RAD(-85), RAD(0)) * ANGLES(RAD(-10), RAD(0), RAD(-2.5)), 0.5 / ANIM_SPEED)
- end
- local ROCKET = MISSILE:Clone()
- ROCKET.Anchored = false
- ROCKET:ClearAllChildren()
- ROCKET.CFrame = LEFTARM.CFrame*CF(0,-1,0) * ANGLES(RAD(0), RAD(90), RAD(0))
- ROCKET.Parent = CHARACTER
- WeldParts(ROCKET,LEFTARM)
- for i=0, 0.02, 0.1 / ANIM_SPEED do
- Swait()
- GRIP.C0 = Clerp(GRIP.C0, CF(0,-1,-0.5)*ANGLES(RAD(-80),RAD(15),0)*CF(0,0,1.85), 2.5 / ANIM_SPEED)
- ROOTJOINT.C0 = Clerp(ROOTJOINT.C0,ROOTC0 * CF(0, 0, -0.02 + 0.05 * COS(SINE / 6)) * ANGLES(RAD(0), RAD(0), RAD(-5)), 0.5 / ANIM_SPEED)
- NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(15), RAD(0), RAD(15)), 2.5 / ANIM_SPEED)
- RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.675, 0.45, 0.3) * ANGLES(RAD(35), RAD(0), RAD(-45)) * RIGHTSHOULDERC0, 2.5 / ANIM_SPEED)
- LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(-45), RAD(0), RAD(25)) * LEFTSHOULDERC0, 2.5 / ANIM_SPEED)
- RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1, -1 - 0.05 * COS(SINE / 6), 0) * ANGLES(RAD(0), RAD(85), RAD(0)) * ANGLES(RAD(-10), RAD(0), RAD(-2.5)), 0.5 / ANIM_SPEED)
- LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1, -1 - 0.05 * COS(SINE / 6), 0) * ANGLES(RAD(0), RAD(-85), RAD(0)) * ANGLES(RAD(-10), RAD(0), RAD(-2.5)), 0.5 / ANIM_SPEED)
- end
- for i=0, 0.02, 0.1 / ANIM_SPEED do
- Swait()
- GRIP.C0 = Clerp(GRIP.C0, CF(0,-1,-0.5)*ANGLES(RAD(-80),RAD(15),0)*CF(0,0,1.85), 2.5 / ANIM_SPEED)
- ROOTJOINT.C0 = Clerp(ROOTJOINT.C0,ROOTC0 * CF(0, 0, -0.02 + 0.05 * COS(SINE / 6)) * ANGLES(RAD(0), RAD(0), RAD(-5)), 0.5 / ANIM_SPEED)
- NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(15), RAD(0), RAD(15)), 2.5 / ANIM_SPEED)
- RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.7, 0.45, 0) * ANGLES(RAD(35), RAD(0), RAD(-45)) * RIGHTSHOULDERC0, 2.5 / ANIM_SPEED)
- LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(45), RAD(0), RAD(-25)) * LEFTSHOULDERC0, 2.5 / ANIM_SPEED)
- RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1, -1 - 0.05 * COS(SINE / 6), 0) * ANGLES(RAD(0), RAD(85), RAD(0)) * ANGLES(RAD(-10), RAD(0), RAD(-2.5)), 0.5 / ANIM_SPEED)
- LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1, -1 - 0.05 * COS(SINE / 6), 0) * ANGLES(RAD(0), RAD(-85), RAD(0)) * ANGLES(RAD(-10), RAD(0), RAD(-2.5)), 0.5 / ANIM_SPEED)
- end
- NewSound({ID = 440145223,PARENT = BAZOOKA,VOLUME = 1,PITCH = MRANDOM(9,11)/6,LOOP = false,MAXDISTANCE = 80,EMITTERSIZE = 15,PLAYING = true,PLAYONREMOVE = false,DOESDEBRIS = true})
- for i=0, 0.05, 0.1 / ANIM_SPEED do
- Swait()
- GRIP.C0 = Clerp(GRIP.C0, CF(0,-1,-0.5)*ANGLES(RAD(-80),RAD(15),0)*CF(0,0,1.85), 2.5 / ANIM_SPEED)
- ROOTJOINT.C0 = Clerp(ROOTJOINT.C0,ROOTC0 * CF(0, 0, -0.02 + 0.05 * COS(SINE / 6)) * ANGLES(RAD(0), RAD(0), RAD(5)), 0.5 / ANIM_SPEED)
- NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(15), RAD(0), RAD(-15)), 2.5 / ANIM_SPEED)
- RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.75, 0.45, -0.1) * ANGLES(RAD(45), RAD(0), RAD(-45)) * RIGHTSHOULDERC0, 2.5 / ANIM_SPEED)
- LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-0.9, 0.5, -0.75) * ANGLES(RAD(60), RAD(0), RAD(37.5)) * LEFTSHOULDERC0, 2.5 / ANIM_SPEED)
- RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1, -1 - 0.05 * COS(SINE / 6), 0) * ANGLES(RAD(0), RAD(85), RAD(0)) * ANGLES(RAD(-10), RAD(0), RAD(2.5)), 0.5 / ANIM_SPEED)
- LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1, -1 - 0.05 * COS(SINE / 6), 0) * ANGLES(RAD(0), RAD(-85), RAD(0)) * ANGLES(RAD(-10), RAD(0), RAD(2.5)), 0.5 / ANIM_SPEED)
- end
- ROCKET:Remove()
- BAZOOKA.Face.Pop:Emit(5)
- AddTo(1)
- until KEYHOLD == false
- ATTACKING = false
- HUM.WalkSpeed = 100
- HUM.JumpPower = 50
- end
- function Dance()
- HUM.WalkSpeed = 0
- HUM.JumpPower = 0
- ATTACKING = true
- local REMOVETRACK = false
- local TRACK = nil
- if ROOT:FindFirstChild("BGM_MUSIC") then
- TRACK = ROOT:FindFirstChild("BGM_MUSIC")
- TRACK.Volume = 5
- else
- TRACK = NewSound({ID = BOMB,PARENT = ROOT,VOLUME = 5,PITCH = 1,LOOP = true,MAXDISTANCE = 300,EMITTERSIZE = 300,PLAYING = true,PLAYONREMOVE = false,DOESDEBRIS = true})
- REMOVETRACK = true
- end
- TRACK.SoundId = "rbxassetid://"..BOMB
- TRACK:Play()
- local DONEWITHDANCING = false
- local NC = REMOTE.OnServerEvent:Connect(function(PLR,V1,V2)
- if V1 == "KeyDown" and V2 == "m" then
- DONEWITHDANCING = true
- end
- end)
- local I = 0
- local RAVE = IT("PointLight",ROOT)
- RAVE.Brightness = 25
- RAVE.Color = BrickColor.random().Color
- repeat
- I = I + 2
- Swait()
- RAVE.Color = BrickColor.random().Color
- ROOTJOINT.C0 = Clerp(ROOTJOINT.C0,ROOTC0 * CF(0 - 0.32 * SIN(I / 10), 0, -0.55 - 0.05 * COS(I / 5)) * ANGLES(RAD(0), RAD(0 - 20 * SIN(I / 10)), RAD(0)), 1.5 / ANIM_SPEED)
- NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(0), RAD(0 - 20 * SIN(I / 10)), RAD(0)), 1.5 / ANIM_SPEED)
- RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(170), RAD(10), RAD(-35 * COS(I/10))) *CF(0,-1,0) * RIGHTSHOULDERC0, 1.5 / ANIM_SPEED)
- LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(170), RAD(-10), RAD(-35 * COS(I/10))) * CF(0,-1,0) * LEFTSHOULDERC0, 1.5 / ANIM_SPEED)
- RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1.35, -0.475 + 0.36 * SIN(I / 10) + 0.05 * COS(I / 5), -0.35) * ANGLES(RAD(0), RAD(45), RAD(0)) * ANGLES(RAD(-12 - 19 * SIN(I / 10)), RAD(0), RAD(0)), 1.5 / ANIM_SPEED)
- LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1.35, -0.475 - 0.36 * SIN(I / 10) + 0.05 * COS(I / 5), -0.35) * ANGLES(RAD(0), RAD(-45), RAD(0)) * ANGLES(RAD(-12 + 19 * SIN(I / 10)), RAD(0), RAD(0)), 1.5 / ANIM_SPEED)
- until DONEWITHDANCING == true
- RAVE:Remove()
- NC:Disconnect()
- if REMOVETRACK == true then
- TRACK:Remove()
- else
- TRACK:Play()
- TRACK.Volume = 1.25
- TRACK.SoundId = "rbxassetid://"..BGM
- end
- ATTACKING = false
- HUM.WalkSpeed = 100
- HUM.JumpPower = 50
- end
- --//====================================================\\--
- --|| WRAP
- --\\====================================================//--
- REMOTE.OnServerEvent:Connect(function(PLR,V1,V2)
- if PLR == PLAYER and ANIM ~= "Sit" then
- --if V1 == "MousePositionUpdate" then
- --MOUSEPOS = V2
- if V1 == "KeyUp" then
- KEYHOLD = false
- elseif V1 == "MouseUp" then
- MOUSEHOLD = false
- end
- if ATTACKING == false then
- if V1 == "MouseDown" then
- MOUSEHOLD = true
- Fire_in_the_hole()
- elseif V1 == "KeyDown" then
- KEYHOLD = true
- if V2 == "z" then
- Store()
- elseif V2 == "m" then
- Dance()
- elseif V2 == "t" then
- NewSound({ID = 145757437,PARENT = ROOT,VOLUME = 10,PITCH = 1,LOOP = false,MAXDISTANCE = 100,EMITTERSIZE = 25,PLAYING = true,PLAYONREMOVE = false,DOESDEBRIS = true})
- elseif V2 == "e" then
- if ROOT:FindFirstChild("BGM_MUSIC") then
- ROOT:FindFirstChild("BGM_MUSIC"):Remove()
- else
- local M = NewSound({ID = BGM,PARENT = ROOT,VOLUME = 1.25,PITCH = 1,LOOP = true,MAXDISTANCE = 300,EMITTERSIZE = 300,PLAYING = true,PLAYONREMOVE = false,DOESDEBRIS = true})
- M.Name = "BGM_MUSIC"
- end
- end
- end
- end
- end
- end)
- local M = NewSound({ID = BGM,PARENT = ROOT,VOLUME = 1.25,PITCH = 1,LOOP = true,MAXDISTANCE = 300,EMITTERSIZE = 300,PLAYING = true,PLAYONREMOVE = false,DOESDEBRIS = true})
- M.Name = "BGM_MUSIC"
- HUM.WalkSpeed = 100
- while true do
- Swait()
- SINE = SINE + CHANGE
- if CHARACTER:FindFirstChild("Animate") then
- CHARACTER:FindFirstChild("Animate"):Destroy()
- end
- if CHARACTER:FindFirstChild("Sound") then
- CHARACTER:FindFirstChild("Sound"):Destroy()
- end
- for _,v in next, HUM:GetPlayingAnimationTracks() do
- v:Stop();
- end
- local TORSOVELOCITY = (ROOT.Velocity * VT(1, 0, 1)).magnitude
- local TORSOVERTICALVELOCITY = ROOT.Velocity.y
- local HITFLOOR = Raycast(ROOT.Position, (CF(ROOT.Position, ROOT.Position + VT(0, -1, 0))).lookVector, 4+HUM.HipHeight, CHARACTER)
- local WALKSPEEDVALUE = 0.5
- local SITTING = HUM.Sit
- if ANIM == "Walk" and TORSOVELOCITY > 1 and SITTING == false then
- RIGHTHIP.C1 = Clerp(RIGHTHIP.C1, CF(0.5, 0.875 - 0.3 * SIN(SINE / WALKSPEEDVALUE), -0.5 * COS(SINE / WALKSPEEDVALUE) +0.2+ 0.2 * COS(SINE / WALKSPEEDVALUE)) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(0) - RIGHTLEG.RotVelocity.Y / 35, RAD(0), RAD(55 * COS(SINE / WALKSPEEDVALUE))), 2 / ANIM_SPEED)
- LEFTHIP.C1 = Clerp(LEFTHIP.C1, CF(-0.5, 0.875 + 0.3 * SIN(SINE / WALKSPEEDVALUE), 0.5 * COS(SINE / WALKSPEEDVALUE) +0.2+ -0.2 * COS(SINE / WALKSPEEDVALUE)) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(0) + LEFTLEG.RotVelocity.Y / 35, RAD(0), RAD(55 * COS(SINE / WALKSPEEDVALUE))), 2 / ANIM_SPEED)
- elseif (ANIM ~= "Walk") or (TORSOVELOCITY < 1) or SITTING == true then
- RIGHTHIP.C1 = Clerp(RIGHTHIP.C1, CF(0.5, 1, 0) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.2 / ANIM_SPEED)
- LEFTHIP.C1 = Clerp(LEFTHIP.C1, CF(-0.5, 1, 0) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.2 / ANIM_SPEED)
- end
- if ATTACKING == false then
- GRIP.C0 = Clerp(GRIP.C0, G_C0, 1.5 / ANIM_SPEED)
- end
- if SITTING == false then
- if HITFLOOR then
- if TORSOVELOCITY < 1 and HITFLOOR ~= nil then
- ANIM = "Idle"
- if ATTACKING == false then
- ROOTJOINT.C0 = Clerp(ROOTJOINT.C0,ROOTC0 * CF(0, 0, -0.02 + 0.05 * COS(SINE / 6)) * ANGLES(RAD(0), RAD(0), RAD(0)), 1.5 / ANIM_SPEED)
- NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(0 - 2.5 * COS(SINE / 6)), RAD(0), RAD(0)), 1.5 / ANIM_SPEED)
- RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(100), RAD(0), RAD(5 + 2.5 * COS(SINE / 6))) * RIGHTSHOULDERC0, 1.5 / ANIM_SPEED)
- LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(0), RAD(0), RAD(-25 - 2.5 * COS(SINE / 6))) * LEFTSHOULDERC0, 1.5 / ANIM_SPEED)
- RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1, -1 - 0.05 * COS(SINE / 6), 0) * ANGLES(RAD(0), RAD(85), RAD(0)) * ANGLES(RAD(-10), RAD(0), RAD(0)), 1.5 / ANIM_SPEED)
- LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1, -1 - 0.05 * COS(SINE / 6), 0) * ANGLES(RAD(0), RAD(-85), RAD(0)) * ANGLES(RAD(-10), RAD(0), RAD(0)), 1.5 / ANIM_SPEED)
- end
- elseif TORSOVELOCITY > 1 and HITFLOOR ~= nil then
- ANIM = "Walk"
- if ATTACKING == false then
- ROOTJOINT.C0 = Clerp(ROOTJOINT.C0,ROOTC0 * CF(0, 0, -0.05 + 0.05 * COS(SINE / WALKSPEEDVALUE)) * ANGLES(RAD(-10), RAD(0), RAD(0)), 2 / ANIM_SPEED)
- NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(10), RAD(0), RAD(0)), 2 / ANIM_SPEED)
- RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(135), RAD(0), RAD(5 + 2.5 * COS(SINE / WALKSPEEDVALUE))) * RIGHTSHOULDERC0, 2 / ANIM_SPEED)
- LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(-15), RAD(0), RAD(-25 - 2.5 * COS(SINE / WALKSPEEDVALUE))) * LEFTSHOULDERC0, 2 / ANIM_SPEED)
- RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1 , -1 - 0.05 * COS(SINE / WALKSPEEDVALUE), 0) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(-5), RAD(0), RAD(-15)), 2 / ANIM_SPEED)
- LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1, -1 - 0.05 * COS(SINE / WALKSPEEDVALUE), 0) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(-5), RAD(0), RAD(15)), 2 / ANIM_SPEED)
- end
- end
- else
- if TORSOVERTICALVELOCITY > 0 then
- ANIM = "Jump"
- if ATTACKING == false then
- ROOTJOINT.C0 = Clerp(ROOTJOINT.C0, ROOTC0 * CF(0, 0, 0) * ANGLES(RAD(0), RAD(0), RAD(0)), 1 / ANIM_SPEED)
- NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(-20), RAD(0), RAD(0)), 1 / ANIM_SPEED)
- RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(25), RAD(0), RAD(5 + 2.5 * COS(SINE / 6))) * RIGHTSHOULDERC0, 1.5 / ANIM_SPEED)
- LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(-2), RAD(0), RAD(10)) * LEFTSHOULDERC0, 1 / ANIM_SPEED)
- RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1, -0.4, -0.6) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(-20)), 1 / ANIM_SPEED)
- LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1, -1, -0.3) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(20)), 1 / ANIM_SPEED)
- end
- else
- ANIM = "Fall"
- if ATTACKING == false then
- ROOTJOINT.C0 = Clerp(ROOTJOINT.C0, ROOTC0 * CF(0, 0, 0 ) * ANGLES(RAD(0), RAD(0), RAD(0)), 1 / ANIM_SPEED)
- NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0 , 0 + ((1) - 1)) * ANGLES(RAD(20), RAD(0), RAD(0)), 1 / ANIM_SPEED)
- RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(150), RAD(0), RAD(5 + 2.5 * COS(SINE / 6))) * RIGHTSHOULDERC0, 1.5 / ANIM_SPEED)
- LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(-2), RAD(0), RAD(-60)) * LEFTSHOULDERC0, 1 / ANIM_SPEED)
- RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1, -0.5, -0.5) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(20)), 1 / ANIM_SPEED)
- LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1, -1, 0) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(10)), 1 / ANIM_SPEED)
- end
- end
- end
- else
- ANIM = "Sit"
- if ATTACKING == false then
- ROOTJOINT.C0 = Clerp(ROOTJOINT.C0,ROOTC0 * CF(0, 0, -0.5) * ANGLES(RAD(0), RAD(0), RAD(0)), 1.25 / ANIM_SPEED)
- NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(0), RAD(0), RAD(0)), 1.25 / ANIM_SPEED)
- RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(90), RAD(0), RAD(45)) * RIGHTSHOULDERC0, 1.5 / ANIM_SPEED)
- LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.65, 0) * ANGLES(RAD(50), RAD(-10), RAD(45))*CF(0,-0.25,0) * LEFTSHOULDERC0, 1.25 / ANIM_SPEED)
- RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1, -0.25, -1) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(10)), 1.25 / ANIM_SPEED)
- LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1, -0.25, -1) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(-10)), 1.25 / ANIM_SPEED)
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement