Advertisement
TheYoutuber_Pro

ses

Mar 9th, 2020
276
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 45.84 KB | None | 0 0
  1. --//====================================================\\--
  2. --|| BASIS
  3. --\\====================================================//--
  4.  
  5. local MODULE = script["Dual Doom"]
  6. local PLAYER = game:GetService("Players").ytjazmir
  7. local CHARACTER = PLAYER.Character
  8. local HUM = CHARACTER.Humanoid
  9. local REMOTE = MODULE.Event
  10.  
  11. local ROOT = HUM.Torso
  12. local HEAD = CHARACTER.Head
  13. local TORSO = CHARACTER.Torso
  14. local RIGHTARM = CHARACTER["Right Arm"]
  15. local LEFTARM = CHARACTER["Left Arm"]
  16. local RIGHTLEG = CHARACTER["Right Leg"]
  17. local LEFTLEG = CHARACTER["Left Leg"]
  18. local ROOTJOINT = ROOT["RootJoint"]
  19. local NECK = TORSO["Neck"]
  20. local RIGHTSHOULDER = TORSO["Right Shoulder"]
  21. local LEFTSHOULDER = TORSO["Left Shoulder"]
  22. local RIGHTHIP = TORSO["Right Hip"]
  23. local LEFTHIP = TORSO["Left Hip"]
  24. local MOUSEPOS = ROOT.Position
  25.  
  26. IT = Instance.new
  27. CF = CFrame.new
  28. VT = Vector3.new
  29. RAD = math.rad
  30. C3 = Color3.new
  31. UD2 = UDim2.new
  32. BRICKC = BrickColor.new
  33. ANGLES = CFrame.Angles
  34. EULER = CFrame.fromEulerAnglesXYZ
  35. COS = math.cos
  36. ACOS = math.acos
  37. SIN = math.sin
  38. ASIN = math.asin
  39. ABS = math.abs
  40. MRANDOM = math.random
  41. FLOOR = math.floor
  42.  
  43. --//====================================================\\--
  44. --|| FE CODE
  45. --\\====================================================//--
  46.  
  47. local FakeMouse = script.FakeMouse:Clone();
  48. FakeMouse.Parent = PLAYER.Character;
  49. script.FakeMouse:Destroy()
  50. do
  51. local GUID = {}
  52. do
  53. GUID.IDs = {};
  54. function GUID:new(len)
  55. local id;
  56. if(not len)then
  57. id = (tostring(function() end))
  58. id = id:gsub("function: ","")
  59. else
  60. local function genID(len)
  61. local newID = ""
  62. for i = 1,len do
  63. newID = newID..string.char(math.random(48,90))
  64. end
  65. return newID
  66. end
  67. repeat id = genID(len) until not GUID.IDs[id]
  68. local oid = id;
  69. id = {Trash=function() GUID.IDs[oid]=nil; end;Get=function() return oid; end}
  70. GUID.IDs[oid]=true;
  71. end
  72. return id
  73. end
  74. end
  75.  
  76. local AHB = Instance.new("BindableEvent")
  77.  
  78. local FPS = 30
  79.  
  80. local TimeFrame = 0
  81.  
  82. local LastFrame = tick()
  83. local Frame = 1/FPS
  84.  
  85. game:service'RunService'.Heartbeat:connect(function(s,p)
  86. TimeFrame = TimeFrame + s
  87. if(TimeFrame >= Frame)then
  88. for i = 1,math.floor(TimeFrame/Frame) do
  89. AHB:Fire()
  90. end
  91. LastFrame=tick()
  92. TimeFrame=TimeFrame-Frame*math.floor(TimeFrame/Frame)
  93. end
  94. end)
  95.  
  96.  
  97. function swait(dur)
  98. if(dur == 0 or typeof(dur) ~= 'number')then
  99. AHB.Event:wait()
  100. else
  101. for i = 1, dur*FPS do
  102. AHB.Event:wait()
  103. end
  104. end
  105. end
  106.  
  107. local oPlayer = PLAYER
  108. local Player = oPlayer
  109.  
  110. local loudnesses={}
  111. script.Parent = Player.Character
  112. local CoAS = {Actions={}}
  113. local Event = Instance.new("RemoteEvent")
  114. Event.Name = "UserInputEvent"
  115. Event.Parent = Player.Character
  116. local Func = Instance.new("RemoteFunction")
  117. Func.Name = "GetClientProperty"
  118. Func.Parent = Player.Character
  119. local fakeEvent = function()
  120. local t = {_fakeEvent=true,Waited={},Connected={}}
  121. t.Connect = function(self,f)
  122. local ft={}
  123. ft={Disconnected=false;disconnect=function(s) if(self.Function==ft)then self.Function=nil end s.Disconnected=true end}
  124. ft.Disconnect=ft.disconnect
  125.  
  126. ft.Func=function(...)
  127. for id,_ in next, t.Waited do
  128. t.Waited[id] = true
  129. end
  130. return f(...)
  131. end;
  132.  
  133. table.insert(self.Connected,ft)
  134. return ft;
  135. end
  136. t.connect = t.Connect
  137. t.Wait = function()
  138. local guid = GUID:new(25)
  139. local waitingId = guid:Get()
  140. t.Waited[waitingId]=false
  141. repeat swait() until t.Waited[waitingId]==true
  142. t.Waited[waitingId]=nil;
  143. guid:Trash()
  144. end
  145. t.wait = t.Wait
  146. return t
  147. end
  148. local m = {Target=nil,Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent()}
  149. local UsIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
  150. local Run = {RenderStepped=fakeEvent()}
  151.  
  152. function CoAS:BindAction(name,fun,touch,...)
  153. CoAS.Actions[name] = {Name=name,Function=fun,Keys={...}}
  154. end
  155. function CoAS:UnbindAction(name)
  156. CoAS.Actions[name] = nil
  157. end
  158. local function te(self,ev,...)
  159. local t = self[ev]
  160. if t and t._fakeEvent and t.Connected then
  161. for i,v in next, t.Connected do
  162. if(v.Func and not v.Disconnected)then
  163. v.Func(...)
  164. else
  165. t.Connected[i]=nil
  166. end
  167. end
  168. end
  169. end
  170. m.TrigEvent = te
  171. UsIS.TrigEvent = te
  172. Run.TrigEvent = te
  173. Event.OnServerEvent:Connect(function(plr,io)
  174. if plr~=Player then return end
  175. --[[table.foreach(io,print)
  176. print'---']]
  177. if io.Mouse then
  178. m.Target = io.Target
  179. m.Hit = io.Hit
  180. MOUSEPOS = m.Hit.p
  181. elseif io.KeyEvent then
  182. m:TrigEvent('Key'..io.KeyEvent,io.Key)
  183. elseif io.UserInputType == Enum.UserInputType.MouseButton1 then
  184. if io.UserInputState == Enum.UserInputState.Begin then
  185. m:TrigEvent("Button1Down")
  186. else
  187. m:TrigEvent("Button1Up")
  188. end
  189. end
  190. if(not io.KeyEvent and not io.Mouse)then
  191.  
  192. for n,t in pairs(CoAS.Actions) do
  193. for _,k in pairs(t.Keys) do
  194. if k==io.KeyCode then
  195. t.Function(t.Name,io.UserInputState,io)
  196. end
  197. end
  198. end
  199. if io.UserInputState == Enum.UserInputState.Begin then
  200. UsIS:TrigEvent("InputBegan",io,false)
  201. else
  202. UsIS:TrigEvent("InputEnded",io,false)
  203. end
  204. end
  205. end)
  206.  
  207. Func.OnServerInvoke = function(plr,inst,play)
  208. if plr~=Player then return end
  209. if(inst and typeof(inst) == 'Instance' and inst:IsA'Sound')then
  210. loudnesses[inst]=play
  211. end
  212. end
  213.  
  214. function GetClientProperty(inst,prop)
  215. if(prop == 'PlaybackLoudness' and loudnesses[inst])then
  216. return loudnesses[inst]
  217. elseif(prop == 'PlaybackLoudness')then
  218. return Func:InvokeClient(Player,'RegSound',inst)
  219. end
  220. return Func:InvokeClient(Player,inst,prop)
  221. end
  222. local oldGame = game;
  223. function GetFakePlayer()
  224. local oldPlayer = Player;
  225. local fakePlayer = newproxy(true)
  226. getmetatable(fakePlayer).__index = function(s,i)
  227. if(i == 'GetMouse')then
  228. return function() return m; end
  229. end
  230. return Player[i]
  231. end
  232. getmetatable(fakePlayer).__newindex = function(s,i,v)
  233. Player[i]=v
  234. end
  235. getmetatable(fakePlayer).__call=function(self,...)
  236. if(self == fakePlayer)then self = Player end
  237. local wh = {...}
  238. local name = table.remove(wh,1)
  239. for i,v in next, wh do
  240. wh[i]=v
  241. end
  242. if(name == 'GetMouse')then
  243. return m;
  244. end
  245. return self(name,unpack(wh))
  246. end
  247. getmetatable(fakePlayer).__namecall=function(self,...)
  248. if(self == fakePlayer)then self = Player end
  249. local tuple={...}
  250. local name = table.remove(tuple,#tuple)
  251.  
  252. if(name == 'GetMouse')then
  253. return m;
  254. else
  255. return self[name](self,unpack(tuple))
  256. end
  257. end
  258.  
  259. return fakePlayer
  260. end
  261. local oll = LoadLibrary;
  262. function LoadLibrary(libtard)
  263. local libtarddestroyed=oll(libtard)
  264. if(libtard=='RbxUtility')then
  265. local library={Create=function(obj)
  266. local inst = Instance.new(obj)
  267. return function(props)
  268. for prop,valu in next, props do
  269. inst[prop]=valu
  270. end
  271. return inst
  272. end
  273. end}
  274. setmetatable(library,{__index=libtarddestroyed,__newindex=function(s,i,v) libtarddestroyed[i]=v end})
  275.  
  276. return library
  277. else
  278. return libtarddestroyed
  279. end
  280. end
  281. fakePlayer = GetFakePlayer()
  282. local function GetService(s,i)
  283. local service = s:GetService(i)
  284. if(i == 'Players')then
  285. local oldService = service;
  286. local fakeService = newproxy(true)
  287. getmetatable(fakeService).__index = function(s,i)
  288. if(s == fakeService)then s=oldService end
  289. if(i == 'LocalPlayer' or i == 'localPlayer')then
  290. return fakePlayer
  291. elseif(i == 'oPlayer')then
  292. return oPlayer
  293. else
  294. return s[i]
  295. end
  296. end
  297. getmetatable(fakeService).__newindex = function(s,i,v)
  298. if(s == fakeService)then s=oldService end
  299. s[i]=v
  300. end
  301. getmetatable(fakeService).__call=function(self,...)
  302. if(self == fakeService)then self = oldService end
  303. local wh = {...}
  304. local name = table.remove(wh,1)
  305. for i,v in next, wh do
  306. wh[i]=v
  307. end
  308. return self(name,unpack(wh))
  309. end
  310. getmetatable(fakeService).__namecall=function(self,...)
  311. if(self == fakeService)then self = oldService end
  312. local tuple={...}
  313. local name = table.remove(tuple,#tuple)
  314.  
  315. return self[name](self,unpack(tuple))
  316. end
  317. getmetatable(fakeService).__metatable = 'gay'
  318. return fakeService
  319. elseif(i == 'RunService')then
  320. local oldService = service;
  321. local fakeService = newproxy(true)
  322. getmetatable(fakeService).__index = function(s,i)
  323. if(s == fakeService)then s=oldService end
  324. return Run[i] or s[i]
  325. end
  326. getmetatable(fakeService).__newindex = function(s,i,v)
  327. if(s == fakeService)then s=oldService end
  328. s[i]=v
  329. end
  330. getmetatable(fakeService).__call=function(self,...)
  331. if(self == fakeService)then self = oldService end
  332. local wh = {...}
  333. local name = table.remove(wh,1)
  334. for i,v in next, wh do
  335. wh[i]=v
  336. end
  337. return self(name,unpack(wh))
  338. end
  339. getmetatable(fakeService).__namecall=function(self,...)
  340. if(self == fakeService)then self = oldService end
  341. local tuple={...}
  342. local name = table.remove(tuple,#tuple)
  343.  
  344. return self[name](self,unpack(tuple))
  345. end
  346. getmetatable(fakeService).__metatable = 'gay'
  347. return fakeService
  348. elseif(i == 'UserInputService')then
  349. return UsIS
  350. elseif(i == 'ContextActionService')then
  351. return CoAS;
  352. else
  353. return service
  354. end
  355. end
  356.  
  357. local new = Instance.new;
  358. Instance = {}
  359. Instance.new = function(inst,obje)
  360. local lp = GetService(oldGame,'Players').localPlayer
  361. local instance = new(inst)
  362. if(inst=='ObjectValue')then
  363. local fake = newproxy(true)
  364. getmetatable(fake).__index=function(self,index)
  365. if(self==fake)then self=instance end
  366. return self[index]
  367. end
  368. getmetatable(fake).__newindex=function(self,index,value)
  369. if(self==fake)then self=instance end
  370. if(index=='Value' and typeof(value)~='Instance' and value==fakePlayer)then
  371. self[index]=oPlayer
  372. else
  373. self[index]=value
  374. end
  375. end
  376. getmetatable(fake).__call=function(self,...)
  377. if(self == fake)then self = instance end
  378. local wh = {...}
  379. local name = table.remove(wh,1)
  380. for i,v in next, wh do
  381. if(v == fake)then v = instance end
  382. wh[i]=v
  383. end
  384. return self(name,unpack(wh))
  385. end
  386. getmetatable(fake). __namecall=function(self,...)
  387. if(self == fake)then self = instance end
  388. local tuple={...}
  389. local name = table.remove(tuple,#tuple)
  390. return self[name](self,unpack(tuple))
  391. end
  392. return fake
  393. elseif(inst=='aaa')then
  394. local fake = newproxy(true)
  395. getmetatable(fake).__index=function(self,index)
  396. if(self==fake)then self=instance end
  397. if(index=='PlaybackLoudnes')then
  398. return GetClientProperty(instance,'PlaybackLoudness')
  399. end
  400. return self[index]
  401. end
  402. getmetatable(fake).__newindex=function(self,index,value)
  403. if(self==fake)then self=instance end
  404. self[index]=value
  405. end
  406. getmetatable(fake).__call=function(self,...)
  407. if(self == fake)then self = instance end
  408. local wh = {...}
  409. local name = table.remove(wh,1)
  410. for i,v in next, wh do
  411. if(v == fake)then v = instance end
  412. wh[i]=v
  413. end
  414. return self(name,unpack(wh))
  415. end
  416. getmetatable(fake). __namecall=function(self,...)
  417. if(self == fake)then self = instance end
  418. local tuple={...}
  419. local name = table.remove(tuple,#tuple)
  420. return self[name](self,unpack(tuple))
  421. end
  422. return fake
  423. else
  424. instance.Parent = obje
  425. return instance;
  426. end
  427.  
  428. end
  429. local serviceFunctions={
  430. service=true,
  431. GetService=true,
  432. }
  433. local fakeGame = newproxy(true)
  434. getmetatable(fakeGame).__index = function(s,i)
  435. if(s == fakeGame)then s=oldGame end
  436. local serv = GetService(oldGame,i)
  437. if serviceFunctions[i] then
  438. return GetService
  439. elseif(serv)then
  440. return serv
  441. else
  442. return s[i]
  443. end
  444. end
  445. getmetatable(fakeGame).__newindex = function(s,i,v)
  446. if(s == fakeGame)then s=oldGame end
  447. s[i]=v
  448. end
  449. getmetatable(fakeGame).__call=function(self,...)
  450. if(self == fakeGame)then self = oldGame end
  451. local wh = {...}
  452. local name = table.remove(wh,1)
  453. for i,v in next, wh do
  454. if(v == fakeGame)then v = oldGame end
  455. wh[i]=v
  456. end
  457. if serviceFunctions[name] then
  458. return GetService(self,unpack(wh))
  459. else
  460. return self(name,unpack(wh))
  461. end
  462. end
  463. getmetatable(fakeGame). __namecall=function(self,...)
  464. if(self == fakeGame)then self = oldGame end
  465. local tuple={...}
  466. local name = table.remove(tuple,#tuple)
  467.  
  468. local funcToCall=self[name]
  469.  
  470. if serviceFunctions[name] then
  471. return GetService(self,unpack(tuple))
  472. else
  473. return self[name](self,unpack(tuple))
  474. end
  475. end
  476. getmetatable(fakeGame).__metatable = 'gay'
  477.  
  478. coroutine.wrap(function()
  479. while true do
  480. Run:TrigEvent('RenderStepped')
  481. swait()
  482. end
  483. end)()
  484. game=fakeGame
  485. UserInputService,ContextActionService = UsIS,CoAS
  486. end
  487.  
  488. --//====================================================\\--
  489. --|| BACKGROUND VALUES
  490. --\\====================================================//--
  491.  
  492. local ANIM_SPEED = 3
  493. local MOUSE = PLAYER:GetMouse()
  494. local FRAME_SPEED = 1 / 60 -- (1 / 30) OR (1 / 60)
  495. local CHANGE = 2 / ANIM_SPEED
  496. local DAMAGEMULTIPLIER = 1
  497. local ANIM = "Idle"
  498. local KEYHOLD = false
  499. local MOUSEHOLD = false
  500. local SINE = 0
  501. local COMBO = 1
  502. local ATTACKING = false
  503. local Debris = game:GetService("Debris")
  504. local Effects = IT("Folder",CHARACTER)
  505. Effects.Name = "FXFolder"
  506. local ROOTC0 = CF(0, 0, 0) * ANGLES(RAD(-90), RAD(0), RAD(180))
  507. local NECKC0 = CF(0, 1, 0) * ANGLES(RAD(-90), RAD(0), RAD(180))
  508. local RIGHTSHOULDERC0 = CF(-0.5, 0, 0) * ANGLES(RAD(0), RAD(90), RAD(0))
  509. local LEFTSHOULDERC0 = CF(0.5, 0, 0) * ANGLES(RAD(0), RAD(-90), RAD(0))
  510. local KICKMESSAGES = {
  511. "COULDN'T YOU SEE THE BLOODY HAMMER?",
  512. "BYE HAVE A GREAT TIME",
  513. "ow",
  514. "NOBODY TOUCHES SASHA",
  515. "EHWOT",
  516. "YOU JUST GOT YOUR CELLULAR STATE REARRANGED INTO THAT OF A CABBAGE",
  517. "begone",
  518. "THANKS FOR STANDING STILL WANKER",
  519. "You've been kicked, with questionable intentions.",
  520. "AMAI YOU JUST GOT YEETED",
  521. "thanks",
  522. "you hammer ha",
  523. "goth spaghetti",
  524. "GRAVITY IS A HOAX",
  525. "who?",
  526. "THE ETERNAL SPAGHETTI LIVES ON",
  527. "GLORY TO SPACE-CAKES",
  528. "[insert low-quality soldier wheeze here, thanks.]",
  529. "you",
  530. "NO, THIS, WILL, NOT, DO",
  531. "i",
  532. "TFHIEUKJFHNETESTIGHKHESJDTFHNIKUEJDTHGNIUKEJDMG",
  533. "questions",
  534. "[insert funny quote here]",
  535. "I NEVER LEARNED HOW TO READ",
  536. "because you got shot by a gun that shoots hammer which kick, duh.",
  537. "BIG LINCOLN SENDS YOU TO HELL",
  538. "Overjoyed",
  539. "Big Kick Theory",
  540. "I diagnose you with dead"
  541. }
  542.  
  543. --//====================================================\\--
  544. --|| HEARTBEAT
  545. --\\====================================================//--
  546.  
  547. ArtificialHB = Instance.new("BindableEvent", script)
  548. ArtificialHB.Name = "ArtificialHB"
  549.  
  550. script:WaitForChild("ArtificialHB")
  551.  
  552. frame = FRAME_SPEED
  553. tf = 0
  554. allowframeloss = false
  555. tossremainder = false
  556. lastframe = tick()
  557. script.ArtificialHB:Fire()
  558.  
  559. game:GetService("RunService").Heartbeat:connect(function(s, p)
  560. tf = tf + s
  561. if tf >= frame then
  562. if allowframeloss then
  563. ArtificialHB:Fire()
  564. lastframe = tick()
  565. else
  566. for i = 1, math.floor(tf / frame) do
  567. ArtificialHB:Fire()
  568. end
  569. lastframe = tick()
  570. end
  571. if tossremainder then
  572. tf = 0
  573. else
  574. tf = tf - frame * math.floor(tf / frame)
  575. end
  576. end
  577. end)
  578.  
  579. function PositiveAngle(NUMBER)
  580. if NUMBER >= 0 then
  581. NUMBER = 0
  582. end
  583. return NUMBER
  584. end
  585.  
  586. function NegativeAngle(NUMBER)
  587. if NUMBER <= 0 then
  588. NUMBER = 0
  589. end
  590. return NUMBER
  591. end
  592.  
  593. function Swait(NUMBER)
  594. if NUMBER == 0 or NUMBER == nil then
  595. ArtificialHB.Event:wait()
  596. else
  597. for i = 1, NUMBER do
  598. ArtificialHB.Event:wait()
  599. end
  600. end
  601. end
  602.  
  603. --//====================================================\\--
  604. --|| CLERP
  605. --\\====================================================//--
  606.  
  607. function QuaternionFromCFrame(cf)
  608. local mx, my, mz, m00, m01, m02, m10, m11, m12, m20, m21, m22 = cf:components()
  609. local trace = m00 + m11 + m22
  610. if trace > 0 then
  611. local s = math.sqrt(1 + trace)
  612. local recip = 0.5 / s
  613. return (m21 - m12) * recip, (m02 - m20) * recip, (m10 - m01) * recip, s * 0.5
  614. else
  615. local i = 0
  616. if m11 > m00 then
  617. i = 1
  618. end
  619. if m22 > (i == 0 and m00 or m11) then
  620. i = 2
  621. end
  622. if i == 0 then
  623. local s = math.sqrt(m00 - m11 - m22 + 1)
  624. local recip = 0.5 / s
  625. return 0.5 * s, (m10 + m01) * recip, (m20 + m02) * recip, (m21 - m12) * recip
  626. elseif i == 1 then
  627. local s = math.sqrt(m11 - m22 - m00 + 1)
  628. local recip = 0.5 / s
  629. return (m01 + m10) * recip, 0.5 * s, (m21 + m12) * recip, (m02 - m20) * recip
  630. elseif i == 2 then
  631. local s = math.sqrt(m22 - m00 - m11 + 1)
  632. local recip = 0.5 / s return (m02 + m20) * recip, (m12 + m21) * recip, 0.5 * s, (m10 - m01) * recip
  633. end
  634. end
  635. end
  636.  
  637. function QuaternionToCFrame(px, py, pz, x, y, z, w)
  638. local xs, ys, zs = x + x, y + y, z + z
  639. local wx, wy, wz = w * xs, w * ys, w * zs
  640. local xx = x * xs
  641. local xy = x * ys
  642. local xz = x * zs
  643. local yy = y * ys
  644. local yz = y * zs
  645. local zz = z * zs
  646. 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))
  647. end
  648.  
  649. function QuaternionSlerp(a, b, t)
  650. local cosTheta = a[1] * b[1] + a[2] * b[2] + a[3] * b[3] + a[4] * b[4]
  651. local startInterp, finishInterp;
  652. if cosTheta >= 0.0001 then
  653. if (1 - cosTheta) > 0.0001 then
  654. local theta = ACOS(cosTheta)
  655. local invSinTheta = 1 / SIN(theta)
  656. startInterp = SIN((1 - t) * theta) * invSinTheta
  657. finishInterp = SIN(t * theta) * invSinTheta
  658. else
  659. startInterp = 1 - t
  660. finishInterp = t
  661. end
  662. else
  663. if (1 + cosTheta) > 0.0001 then
  664. local theta = ACOS(-cosTheta)
  665. local invSinTheta = 1 / SIN(theta)
  666. startInterp = SIN((t - 1) * theta) * invSinTheta
  667. finishInterp = SIN(t * theta) * invSinTheta
  668. else
  669. startInterp = t - 1
  670. finishInterp = t
  671. end
  672. end
  673. 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
  674. end
  675.  
  676. function Clerp(a, b, t)
  677. local qa = {QuaternionFromCFrame(a)}
  678. local qb = {QuaternionFromCFrame(b)}
  679. local ax, ay, az = a.x, a.y, a.z
  680. local bx, by, bz = b.x, b.y, b.z
  681. local _t = 1 - t
  682. return QuaternionToCFrame(_t * ax + t * bx, _t * ay + t * by, _t * az + t * bz, QuaternionSlerp(qa, qb, t))
  683. end
  684.  
  685. --//====================================================\\--
  686. --|| FUNCTIONS
  687. --\\====================================================//--
  688.  
  689. function WeldParts(A,B)
  690. local WLD = IT("ManualWeld")
  691. WLD.Part0 = A
  692. WLD.Part1 = B
  693. WLD.C1 = B.CFrame:inverse() * A.CFrame
  694. WLD.Parent = A
  695. return WLD
  696. end
  697.  
  698. --NewSound({ID = 0,PARENT = ROOT,VOLUME = 0.5,PITCH = 1,LOOP = false,MAXDISTANCE = 1000,EMITTERSIZE = 10,PLAYING = true,PLAYONREMOVE = false,DOESDEBRIS = true})
  699. function NewSound(TABLE)
  700. local ID = "rbxassetid://"..(TABLE.ID or 0)
  701. local PARENT = (TABLE.PARENT or ROOT)
  702. local VOLUME = (TABLE.VOLUME or 0.5)
  703. local PITCH = (TABLE.PITCH or 1)
  704. local LOOP = (TABLE.LOOP or false)
  705. local MAXDISTANCE = (TABLE.MAXDISTANCE or 100)
  706. local EMITTERSIZE = (TABLE.EMITTERSIZE or 10)
  707. local PLAYING = (TABLE.PLAYING or true)
  708. local PLAYONREMOVE = (TABLE.PLAYONREMOVE or false)
  709. local DOESDEBRIS = (TABLE.DOESDEBRIS or true)
  710. if ID ~= "rbxassetid://0" then
  711. local SOUND = IT("Sound",PARENT)
  712. SOUND.SoundId = ID
  713. SOUND.Volume = VOLUME
  714. SOUND.Pitch = PITCH
  715. SOUND.Looped = LOOP
  716. SOUND.MaxDistance = MAXDISTANCE
  717. SOUND.EmitterSize = EMITTERSIZE
  718. SOUND.PlayOnRemove = PLAYONREMOVE
  719. if DOESDEBRIS == true and PLAYING == true and LOOP == false then
  720. Debris:AddItem(SOUND,SOUND.TimeLength+5)
  721. end
  722. if PLAYING == true then
  723. SOUND:Play()
  724. end
  725. return SOUND
  726. end
  727. end
  728.  
  729. function ApplyDamageTo(HUM,DAMAGE)
  730. if HUM.Health >= 0 then
  731. HUM:TakeDamage(DAMAGE)
  732. end
  733. end
  734.  
  735. function AreaOfEffect(AREA,RANGE,MIN,MAX,RETURN)
  736. local HIT = {}
  737. for index, CHILD in pairs(workspace:GetChildren()) do
  738. if CHILD:FindFirstChildOfClass("Humanoid") and CHILD ~= CHARACTER then
  739. local HUMAN = CHILD:FindFirstChildOfClass("Humanoid")
  740. local ROOT = HUMAN.Torso
  741. if ROOT then
  742. if (ROOT.Position - AREA).Magnitude <= RANGE then
  743. if RETURN == true then
  744. table.insert(HIT,{CHILD,HUMAN,ROOT})
  745. else
  746. ApplyDamageTo(HUMAN,MRANDOM(MIN,MAX))
  747. end
  748. end
  749. end
  750. end
  751. end
  752. if RETURN == true then
  753. return HIT
  754. end
  755. end
  756.  
  757. function ConnectDamage(PART,MIN,MAX)
  758. local HITS = {}
  759. local TOUCH = PART.Touched:Connect(function(HITP)
  760. if HITP.Parent then
  761. if HITP.Parent:FindFirstChildOfClass("Humanoid") then
  762. local HUMAN = HITP.Parent:FindFirstChildOfClass("Humanoid")
  763. local PASS = true
  764. for E = 1, #HITS do
  765. if HITS[E] == HUMAN then
  766. PASS = false
  767. break
  768. end
  769. end
  770. if PASS == true and HUM ~= HUMAN then
  771. ApplyDamageTo(HUMAN,MRANDOM(MIN,MAX))
  772. table.insert(HITS,HUMAN)
  773. end
  774. end
  775. end
  776. end)
  777. return TOUCH
  778. end
  779.  
  780. function CreateMesh(MESH, PARENT, MESHTYPE, MESHID, TEXTUREID, SCALE, OFFSET)
  781. local NEWMESH = IT(MESH)
  782. if MESH == "SpecialMesh" then
  783. NEWMESH.MeshType = MESHTYPE
  784. if MESHID ~= "nil" and MESHID ~= "" then
  785. NEWMESH.MeshId = "http://www.roblox.com/asset/?id="..MESHID
  786. end
  787. if TEXTUREID ~= "nil" and TEXTUREID ~= "" then
  788. NEWMESH.TextureId = "http://www.roblox.com/asset/?id="..TEXTUREID
  789. end
  790. end
  791. NEWMESH.Offset = OFFSET or VT(0, 0, 0)
  792. NEWMESH.Scale = SCALE
  793. NEWMESH.Parent = PARENT
  794. return NEWMESH
  795. end
  796.  
  797. function CreatePart(FORMFACTOR, PARENT, MATERIAL, REFLECTANCE, TRANSPARENCY, BRICKCOLOR, NAME, SIZE, ANCHOR)
  798. local NEWPART = IT("Part")
  799. NEWPART.formFactor = FORMFACTOR
  800. NEWPART.Reflectance = REFLECTANCE
  801. NEWPART.Transparency = TRANSPARENCY
  802. NEWPART.CanCollide = false
  803. NEWPART.Locked = true
  804. NEWPART.Anchored = true
  805. if ANCHOR == false then
  806. NEWPART.Anchored = false
  807. end
  808. NEWPART.BrickColor = BRICKC(tostring(BRICKCOLOR))
  809. NEWPART.Name = NAME
  810. NEWPART.Size = SIZE
  811. NEWPART.Position = ROOT.Position
  812. NEWPART.Material = MATERIAL
  813. NEWPART:BreakJoints()
  814. NEWPART.Parent = PARENT
  815. return NEWPART
  816. end
  817.  
  818. function Raycast(POSITION, DIRECTION, RANGE, IGNOREDECENDANTS)
  819. return workspace:FindPartOnRay(Ray.new(POSITION, DIRECTION.unit * RANGE), IGNOREDECENDANTS)
  820. end
  821.  
  822. --WACKYEFFECT({EffectType = "", Size = VT(1,1,1), Size2 = VT(0,0,0), Transparency = 0, Transparency2 = 1, CFrame = CF(), MoveToPos = nil, RotationX = 0, RotationY = 0, RotationZ = 0, Material = "Neon", Color = C3(1,1,1), SoundID = nil, SoundPitch = nil, SoundVolume = nil, UseBoomerangMath = false, Boomerang = 0, SizeBoomerang = 0})
  823. function WACKYEFFECT(Table)
  824. local TYPE = (Table.EffectType or "Sphere")
  825. local SIZE = (Table.Size or VT(1,1,1))
  826. local ENDSIZE = (Table.Size2 or VT(0,0,0))
  827. local TRANSPARENCY = (Table.Transparency or 0)
  828. local ENDTRANSPARENCY = (Table.Transparency2 or 1)
  829. local CFRAME = (Table.CFrame or ROOT.CFrame)
  830. local MOVEDIRECTION = (Table.MoveToPos or nil)
  831. local ROTATION1 = (Table.RotationX or 0)
  832. local ROTATION2 = (Table.RotationY or 0)
  833. local ROTATION3 = (Table.RotationZ or 0)
  834. local MATERIAL = (Table.Material or "Neon")
  835. local COLOR = (Table.Color or C3(1,1,1))
  836. local TIME = (Table.Time or 45)
  837. local SOUNDID = (Table.SoundID or nil)
  838. local SOUNDPITCH = (Table.SoundPitch or nil)
  839. local SOUNDVOLUME = (Table.SoundVolume or nil)
  840. local USEBOOMERANGMATH = (Table.UseBoomerangMath or false)
  841. local BOOMERANG = (Table.Boomerang or 0)
  842. local SIZEBOOMERANG = (Table.SizeBoomerang or 0)
  843. coroutine.resume(coroutine.create(function()
  844. local PLAYSSOUND = false
  845. local SOUND = nil
  846. local EFFECT = CreatePart(3, Effects, MATERIAL, 0, TRANSPARENCY, BRICKC("Pearl"), "Effect", VT(1,1,1), true)
  847. if SOUNDID ~= nil and SOUNDPITCH ~= nil and SOUNDVOLUME ~= nil then
  848. PLAYSSOUND = true
  849. SOUND = NewSound({ID = SOUNDID,PARENT = EFFECT,VOLUME = SOUNDVOLUME,PITCH = SOUNDPITCH,LOOP = false,MAXDISTANCE = 200,EMITTERSIZE = 15,PLAYING = true,PLAYONREMOVE = false,DOESDEBRIS = true})
  850. end
  851. EFFECT.Color = COLOR
  852. local MSH = nil
  853. if TYPE == "Sphere" then
  854. MSH = CreateMesh("SpecialMesh", EFFECT, "Sphere", "", "", SIZE, VT(0,0,0))
  855. elseif TYPE == "Block" or TYPE == "Box" then
  856. MSH = IT("BlockMesh",EFFECT)
  857. MSH.Scale = SIZE
  858. elseif TYPE == "Wave" then
  859. MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "20329976", "", SIZE, VT(0,0,-SIZE.X/8))
  860. elseif TYPE == "Ring" then
  861. MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "559831844", "", VT(SIZE.X,SIZE.X,0.1), VT(0,0,0))
  862. elseif TYPE == "Slash" then
  863. MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "662586858", "", VT(SIZE.X/10,0,SIZE.X/10), VT(0,0,0))
  864. elseif TYPE == "Round Slash" then
  865. MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "662585058", "", VT(SIZE.X/10,0,SIZE.X/10), VT(0,0,0))
  866. elseif TYPE == "Swirl" then
  867. MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "168892432", "", SIZE, VT(0,0,0))
  868. elseif TYPE == "Skull" then
  869. MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "4770583", "", SIZE, VT(0,0,0))
  870. elseif TYPE == "Crystal" then
  871. MSH = CreateMesh("SpecialMesh", EFFECT, "FileMesh", "9756362", "", SIZE, VT(0,0,0))
  872. end
  873. if MSH ~= nil then
  874. local BOOMR1 = 1+BOOMERANG/50
  875. local BOOMR2 = 1+SIZEBOOMERANG/50
  876. local MOVESPEED = nil
  877. if MOVEDIRECTION ~= nil then
  878. if USEBOOMERANGMATH == true then
  879. MOVESPEED = ((CFRAME.p - MOVEDIRECTION).Magnitude/TIME)*BOOMR1
  880. else
  881. MOVESPEED = ((CFRAME.p - MOVEDIRECTION).Magnitude/TIME)
  882. end
  883. end
  884. local GROWTH = nil
  885. if USEBOOMERANGMATH == true then
  886. GROWTH = (SIZE - ENDSIZE)*(BOOMR2+1)
  887. else
  888. GROWTH = (SIZE - ENDSIZE)
  889. end
  890. local TRANS = TRANSPARENCY - ENDTRANSPARENCY
  891. if TYPE == "Block" then
  892. EFFECT.CFrame = CFRAME*ANGLES(RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)))
  893. else
  894. EFFECT.CFrame = CFRAME
  895. end
  896. if USEBOOMERANGMATH == true then
  897. for LOOP = 1, TIME+1 do
  898. Swait()
  899. MSH.Scale = MSH.Scale - (VT((GROWTH.X)*((1 - (LOOP/TIME)*BOOMR2)),(GROWTH.Y)*((1 - (LOOP/TIME)*BOOMR2)),(GROWTH.Z)*((1 - (LOOP/TIME)*BOOMR2)))*BOOMR2)/TIME
  900. if TYPE == "Wave" then
  901. MSH.Offset = VT(0,0,-MSH.Scale.Z/8)
  902. end
  903. EFFECT.Transparency = EFFECT.Transparency - TRANS/TIME
  904. if TYPE == "Block" then
  905. EFFECT.CFrame = CFRAME*ANGLES(RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)))
  906. else
  907. EFFECT.CFrame = EFFECT.CFrame*ANGLES(RAD(ROTATION1),RAD(ROTATION2),RAD(ROTATION3))
  908. end
  909. if MOVEDIRECTION ~= nil then
  910. local ORI = EFFECT.Orientation
  911. EFFECT.CFrame = CF(EFFECT.Position,MOVEDIRECTION)*CF(0,0,-(MOVESPEED)*((1 - (LOOP/TIME)*BOOMR1)))
  912. EFFECT.CFrame = CF(EFFECT.Position)*ANGLES(RAD(ORI.X),RAD(ORI.Y),RAD(ORI.Z))
  913. end
  914. end
  915. else
  916. for LOOP = 1, TIME+1 do
  917. Swait()
  918. MSH.Scale = MSH.Scale - GROWTH/TIME
  919. if TYPE == "Wave" then
  920. MSH.Offset = VT(0,0,-MSH.Scale.Z/8)
  921. end
  922. EFFECT.Transparency = EFFECT.Transparency - TRANS/TIME
  923. if TYPE == "Block" then
  924. EFFECT.CFrame = CFRAME*ANGLES(RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)),RAD(MRANDOM(0,360)))
  925. else
  926. EFFECT.CFrame = EFFECT.CFrame*ANGLES(RAD(ROTATION1),RAD(ROTATION2),RAD(ROTATION3))
  927. end
  928. if MOVEDIRECTION ~= nil then
  929. local ORI = EFFECT.Orientation
  930. EFFECT.CFrame = CF(EFFECT.Position,MOVEDIRECTION)*CF(0,0,-MOVESPEED)
  931. EFFECT.CFrame = CF(EFFECT.Position)*ANGLES(RAD(ORI.X),RAD(ORI.Y),RAD(ORI.Z))
  932. end
  933. end
  934. end
  935. EFFECT.Transparency = 1
  936. if PLAYSSOUND == false then
  937. EFFECT:remove()
  938. else
  939. repeat Swait() until EFFECT:FindFirstChildOfClass("Sound") == nil
  940. EFFECT:remove()
  941. end
  942. else
  943. if PLAYSSOUND == false then
  944. EFFECT:remove()
  945. else
  946. repeat Swait() until EFFECT:FindFirstChildOfClass("Sound") == nil
  947. EFFECT:remove()
  948. end
  949. end
  950. end))
  951. end
  952.  
  953. function CameraShake(AREA,RANGE,SHAKE,TIMER)
  954. for index, CHILD in pairs(workspace:GetChildren()) do
  955. if CHILD:FindFirstChildOfClass("Humanoid") then
  956. local HUMAN = CHILD:FindFirstChildOfClass("Humanoid")
  957. local ROOT = HUMAN.Torso
  958. if ROOT then
  959. if (ROOT.Position - AREA).Magnitude <= RANGE then
  960. if CHILD:FindFirstChild("CamShake") then
  961. CHILD:FindFirstChild("CamShake"):Remove()
  962. end
  963. local SHAKE = script.CamShake:Clone()
  964. SHAKE.Parent = CHILD
  965. local TIMER_V = IT("NumberValue",SHAKE)
  966. TIMER_V.Name = "Timer"
  967. TIMER_V.Value = TIMER
  968. local SHAKE_V = IT("NumberValue",SHAKE)
  969. SHAKE_V.Name = "Shake"
  970. SHAKE_V.Value = SHAKE
  971. SHAKE.Disabled = false
  972. Debris:AddItem(SHAKE,TIMER)
  973. end
  974. end
  975. end
  976. end
  977. end
  978.  
  979. function Chatter(Text,Timer)
  980. local chat = coroutine.wrap(function()
  981. if CHARACTER:FindFirstChild("SpeechBoard")~= nil then
  982. CHARACTER:FindFirstChild("SpeechBoard"):destroy()
  983. end
  984. local naeeym2 = IT("BillboardGui",CHARACTER)
  985. naeeym2.Size = UD2(0,100,0,40)
  986. naeeym2.StudsOffset = Vector3.new(0,2,0)
  987. naeeym2.Adornee = HEAD
  988. naeeym2.Name = "SpeechBoard"
  989. naeeym2.AlwaysOnTop = true
  990. local tecks2 = IT("TextLabel",naeeym2)
  991. tecks2.BackgroundTransparency = 1
  992. tecks2.BorderSizePixel = 0
  993. tecks2.Text = ""
  994. tecks2.Font = "Legacy"
  995. tecks2.TextSize = 15
  996. tecks2.TextStrokeTransparency = 0
  997. tecks2.TextColor3 = Color3.new(1,1,1)
  998. tecks2.TextStrokeColor3 = Color3.new(0,0,0)
  999. tecks2.Size = UDim2.new(1,0,0.5,0)
  1000. for i = 1,string.len(Text),1 do
  1001. if naeeym2.Parent ~= CHARACTER then
  1002. break
  1003. end
  1004. NewSound({ID = 418252437,PARENT = HEAD,VOLUME = 1,PITCH = MRANDOM(8,12)/10,LOOP = false,MAXDISTANCE = 75,EMITTERSIZE = 15,PLAYING = true,PLAYONREMOVE = false,DOESDEBRIS = true})
  1005. tecks2.Text = string.sub(Text,1,i)
  1006. wait(Timer)
  1007. end
  1008. wait(1)
  1009. naeeym2:Destroy()
  1010. end)
  1011. chat()
  1012. end
  1013.  
  1014. --//====================================================\\--
  1015. --|| STUFF
  1016. --\\====================================================//--
  1017.  
  1018. local RIGHTGUN = script.GunModel:Clone()
  1019. RIGHTGUN.Parent = CHARACTER
  1020. RIGHTGUN:SetPrimaryPartCFrame(RIGHTARM.CFrame)
  1021. RIGHTGUN.PrimaryPart:Remove()
  1022. local RHAMMER = RIGHTGUN.Hammer
  1023. RHAMMER.CFrame = RHAMMER.CFrame*ANGLES(0,0,RAD(180))
  1024. for index, CHILD in pairs(RIGHTGUN:GetChildren()) do
  1025. CHILD.Anchored = false
  1026. WeldParts(RIGHTARM,CHILD)
  1027. end
  1028. local LEFTGUN = script.GunModel:Clone()
  1029. LEFTGUN.Parent = CHARACTER
  1030. LEFTGUN:SetPrimaryPartCFrame(LEFTARM.CFrame)
  1031. LEFTGUN.PrimaryPart:Remove()
  1032. local LHAMMER = LEFTGUN.Hammer
  1033. for index, CHILD in pairs(LEFTGUN:GetChildren()) do
  1034. CHILD.Anchored = false
  1035. WeldParts(LEFTARM,CHILD)
  1036. end
  1037. script.GunModel:Remove()
  1038.  
  1039. --//====================================================\\--
  1040. --|| ABILITIES
  1041. --\\====================================================//--
  1042.  
  1043. function FIRE_IN_THE_HOLE()
  1044. ATTACKING = true
  1045. coroutine.resume(coroutine.create(function()
  1046. local GYRO = IT("BodyGyro")
  1047. GYRO.D = 20
  1048. GYRO.P = 5000
  1049. GYRO.MaxTorque = VT(0,4000000,0)
  1050. GYRO.CFrame = CF(ROOT.Position,MOUSEPOS)
  1051. GYRO.Parent = ROOT
  1052. repeat
  1053. Swait()
  1054. GYRO.CFrame = CF(ROOT.Position,MOUSEPOS)
  1055. until ATTACKING == false
  1056. GYRO:Remove()
  1057. end))
  1058. local FIRE = function(HAMMER)
  1059. local PROJECTILE = HAMMER:Clone()
  1060. local F = NewSound({ID = 159490394,PARENT = PROJECTILE,VOLUME = 1,PITCH = MRANDOM(9,11)/10,LOOP = false,MAXDISTANCE = 1000,EMITTERSIZE = 50,PLAYING = true,PLAYONREMOVE = false,DOESDEBRIS = true})
  1061. local C = CF(HAMMER.Position,MOUSEPOS)
  1062. PROJECTILE.CFrame = C*CFrame.new(0,0,-1.5)*CFrame.Angles(math.rad(180),0,math.rad(-90))
  1063. PROJECTILE.CanCollide = true
  1064. PROJECTILE.Parent = workspace
  1065. local MOVE = IT("BodyVelocity")
  1066. MOVE.Velocity = C.lookVector*250
  1067. MOVE.Parent = PROJECTILE
  1068. MOVE.MaxForce = VT(500000,500000,500000)
  1069. Debris:AddItem(PROJECTILE,20)
  1070. KICKOCLOCK = PROJECTILE.Touched:Connect(function(HIT)
  1071. if HIT.Parent then
  1072. if HIT.Parent:FindFirstChildOfClass("Humanoid") then
  1073. F:Remove()
  1074. KICKOCLOCK:Disconnect()
  1075. MOVE:Remove()
  1076. PROJECTILE.Velocity = VT(0,0,0)
  1077. local TORS = HIT.Parent:FindFirstChildOfClass("Humanoid").Torso
  1078. if TORS then
  1079. if game.Players:GetPlayerFromCharacter(HIT.Parent) ~= PLAYER then
  1080. WACKYEFFECT({Time = 25, EffectType = "Sphere", Size = VT(4,4,4), Size2 = VT(15,15,15), Transparency = 0, Transparency2 = 1, CFrame = CF(TORS.Position), MoveToPos = nil, RotationX = 0, RotationY = 0, RotationZ = 0, Material = "Neon", Color = C3(1,0,0), SoundID = 147722910, SoundPitch = 1, SoundVolume = 5, UseBoomerangMath = true, Boomerang = 0, SizeBoomerang = 50})
  1081. if game.Players:GetPlayerFromCharacter(HIT.Parent) then
  1082. local MSG = KICKMESSAGES[MRANDOM(1,#KICKMESSAGES)]
  1083. Chatter(MSG)
  1084. game.Players:GetPlayerFromCharacter(HIT.Parent):Kick(MSG)
  1085. end
  1086. local MSG = KICKMESSAGES[MRANDOM(1,#KICKMESSAGES)]
  1087. Chatter(MSG)
  1088. HIT.Parent:Remove()
  1089. end
  1090. end
  1091. elseif HIT.CanCollide == true or HIT.Anchored == true then
  1092. F:Remove()
  1093. KICKOCLOCK:Disconnect()
  1094. MOVE:Remove()
  1095. end
  1096. end
  1097. end)
  1098. end
  1099. repeat
  1100. if COMBO == 1 then
  1101. COMBO = 2
  1102. for i=0, 0.25, 0.1 / ANIM_SPEED do
  1103. Swait()
  1104. ROOTJOINT.C0 = Clerp(ROOTJOINT.C0,ROOTC0 * CF(0, 0, 0 + 0.2 * COS(SINE / 12)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.5 / ANIM_SPEED)
  1105. NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(-35+MRANDOM(-10,10)), RAD(MRANDOM(-10,10)), RAD(MRANDOM(-10,10))), 0.5 / ANIM_SPEED)
  1106. RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(90), RAD(-40), RAD(0)) * RIGHTSHOULDERC0, 1 / ANIM_SPEED)
  1107. LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(145 - 45 * SIN(SINE / 12)), RAD(0), RAD(-45+MRANDOM(-5,5))) * LEFTSHOULDERC0, 0.5 / ANIM_SPEED)
  1108. RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1, -1 - 0.2 * COS(SINE / 12), -0.01) * ANGLES(RAD(0), RAD(65), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.5 / ANIM_SPEED)
  1109. LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1, -1 - 0.2 * COS(SINE / 12), -0.01) * ANGLES(RAD(0), RAD(-65+MRANDOM(-10,10)), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.5 / ANIM_SPEED)
  1110. end
  1111. FIRE(RHAMMER)
  1112. RHAMMER.Kick.Enabled = false
  1113. RHAMMER.Transparency = 1
  1114. for i=0, 0.15, 0.1 / ANIM_SPEED do
  1115. Swait()
  1116. ROOTJOINT.C0 = Clerp(ROOTJOINT.C0,ROOTC0 * CF(0, 0, 0 + 0.2 * COS(SINE / 12)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.5 / ANIM_SPEED)
  1117. NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(-35+MRANDOM(-10,10)), RAD(MRANDOM(-10,10)), RAD(MRANDOM(-10,10))), 0.5 / ANIM_SPEED)
  1118. RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(90), RAD(-40), RAD(0)) * RIGHTSHOULDERC0, 1 / ANIM_SPEED)
  1119. LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(145 - 45 * SIN(SINE / 12)), RAD(0), RAD(-45+MRANDOM(-5,5))) * LEFTSHOULDERC0, 0.5 / ANIM_SPEED)
  1120. RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1, -1 - 0.2 * COS(SINE / 12), -0.01) * ANGLES(RAD(0), RAD(65), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.5 / ANIM_SPEED)
  1121. LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1, -1 - 0.2 * COS(SINE / 12), -0.01) * ANGLES(RAD(0), RAD(-65+MRANDOM(-10,10)), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.5 / ANIM_SPEED)
  1122. end
  1123. RHAMMER.Kick.Enabled = true
  1124. RHAMMER.Transparency = 0
  1125. elseif COMBO == 2 then
  1126. COMBO = 1
  1127. for i=0, 0.25, 0.1 / ANIM_SPEED do
  1128. Swait()
  1129. ROOTJOINT.C0 = Clerp(ROOTJOINT.C0,ROOTC0 * CF(0, 0, 0 + 0.2 * COS(SINE / 12)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.5 / ANIM_SPEED)
  1130. NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(-35+MRANDOM(-10,10)), RAD(MRANDOM(-10,10)), RAD(MRANDOM(-10,10))), 0.5 / ANIM_SPEED)
  1131. RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(145 + 45 * SIN(SINE / 12)), RAD(0), RAD(45+MRANDOM(-5,5))) * RIGHTSHOULDERC0, 0.5 / ANIM_SPEED)
  1132. LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(90), RAD(50), RAD(0)) * LEFTSHOULDERC0, 1 / ANIM_SPEED)
  1133. RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1, -1 - 0.2 * COS(SINE / 12), -0.01) * ANGLES(RAD(0), RAD(65), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.5 / ANIM_SPEED)
  1134. LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1, -1 - 0.2 * COS(SINE / 12), -0.01) * ANGLES(RAD(0), RAD(-65+MRANDOM(-10,10)), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.5 / ANIM_SPEED)
  1135. end
  1136. FIRE(LHAMMER)
  1137. LHAMMER.Kick.Enabled = false
  1138. LHAMMER.Transparency = 1
  1139. for i=0, 0.15, 0.1 / ANIM_SPEED do
  1140. Swait()
  1141. ROOTJOINT.C0 = Clerp(ROOTJOINT.C0,ROOTC0 * CF(0, 0, 0 + 0.2 * COS(SINE / 12)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.5 / ANIM_SPEED)
  1142. NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(-35+MRANDOM(-10,10)), RAD(MRANDOM(-10,10)), RAD(MRANDOM(-10,10))), 0.5 / ANIM_SPEED)
  1143. RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(145 + 45 * SIN(SINE / 12)), RAD(0), RAD(45+MRANDOM(-5,5))) * RIGHTSHOULDERC0, 0.5 / ANIM_SPEED)
  1144. LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(90), RAD(50), RAD(0)) * LEFTSHOULDERC0, 1 / ANIM_SPEED)
  1145. RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1, -1 - 0.2 * COS(SINE / 12), -0.01) * ANGLES(RAD(0), RAD(65), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.5 / ANIM_SPEED)
  1146. LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1, -1 - 0.2 * COS(SINE / 12), -0.01) * ANGLES(RAD(0), RAD(-65+MRANDOM(-10,10)), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.5 / ANIM_SPEED)
  1147. end
  1148. LHAMMER.Kick.Enabled = true
  1149. LHAMMER.Transparency = 0
  1150. end
  1151. until MOUSEHOLD == false
  1152. ATTACKING = false
  1153. end
  1154.  
  1155. function England()
  1156. ATTACKING = true
  1157. Chatter(KICKMESSAGES[MRANDOM(1,#KICKMESSAGES)])
  1158. for i = 1, 100 do
  1159. Swait()
  1160. ROOTJOINT.C0 = Clerp(ROOTJOINT.C0, ROOTC0 * CF(0, 0, 0 ) * ANGLES(RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350))), 2 / ANIM_SPEED)
  1161. NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0 , 0 + ((1) - 1)) * ANGLES(RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350))), 2 / ANIM_SPEED)
  1162. RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350))) * RIGHTSHOULDERC0, 2 / ANIM_SPEED)
  1163. LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350))) * LEFTSHOULDERC0, 2 / ANIM_SPEED)
  1164. RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1, -1, 0) * ANGLES(RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350))), 2 / ANIM_SPEED)
  1165. LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1, -1, 0) * ANGLES(RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350))), 2 / ANIM_SPEED)
  1166. end
  1167. ATTACKING = false
  1168. end
  1169.  
  1170. --//====================================================\\--
  1171. --|| WRAP
  1172. --\\====================================================//--
  1173.  
  1174. REMOTE.OnServerEvent:Connect(function(PLR,V1,V2)
  1175. if PLR == PLAYER then
  1176. --if V1 == "MousePositionUpdate" then
  1177. --MOUSEPOS = V2
  1178. if V1 == "KeyUp" then
  1179. KEYHOLD = false
  1180. elseif V1 == "MouseUp" then
  1181. MOUSEHOLD = false
  1182. end
  1183. if ATTACKING == false then
  1184. if V1 == "MouseDown" then
  1185. MOUSEHOLD = true
  1186. FIRE_IN_THE_HOLE()
  1187. elseif V1 == "KeyDown" then
  1188. KEYHOLD = true
  1189. if V2 == "e" then
  1190. if ROOT:FindFirstChild("BGM_MUSIC") then
  1191. ROOT:FindFirstChild("BGM_MUSIC"):Remove()
  1192. else
  1193. local M = NewSound({ID = 2516100492,PARENT = ROOT,VOLUME = 1.5,PITCH = 1.2,LOOP = true,MAXDISTANCE = 300,EMITTERSIZE = 300,PLAYING = true,PLAYONREMOVE = false,DOESDEBRIS = true})
  1194. M.Name = "BGM_MUSIC"
  1195. end
  1196. elseif V2 == "t" then
  1197. England()
  1198. end
  1199. end
  1200. end
  1201. end
  1202. end)
  1203. local M = NewSound({ID = 2516100492,PARENT = ROOT,VOLUME = 1.5,PITCH = 1.2,LOOP = true,MAXDISTANCE = 300,EMITTERSIZE = 300,PLAYING = true,PLAYONREMOVE = false,DOESDEBRIS = true})
  1204. M.Name = "BGM_MUSIC"
  1205.  
  1206. HUM.HealthChanged:Connect(function()
  1207. HUM.PlatformStand = false
  1208. HUM.MaxHealth = 3000
  1209. HUM.Health = 3000
  1210. HUM.Name = PLAYER.UserId
  1211. HUM.WalkSpeed = 75
  1212. end)
  1213. HUM.WalkSpeed = 75
  1214. HUM.JumpPower = 165
  1215. script.Parent = PLAYER.Backpack
  1216. while true do
  1217. Swait()
  1218. SINE = SINE + CHANGE
  1219. if CHARACTER:FindFirstChild("Animate") then
  1220. CHARACTER:FindFirstChild("Animate"):Destroy()
  1221. end
  1222. if CHARACTER:FindFirstChild("Sound") then
  1223. CHARACTER:FindFirstChild("Sound"):Destroy()
  1224. end
  1225. for _,v in next, HUM:GetPlayingAnimationTracks() do
  1226. v:Stop();
  1227. end
  1228. local TORSOVELOCITY = (ROOT.Velocity * VT(1, 0, 1)).magnitude
  1229. local TORSOVERTICALVELOCITY = ROOT.Velocity.y
  1230. local HITFLOOR = Raycast(ROOT.Position, (CF(ROOT.Position, ROOT.Position + VT(0, -1, 0))).lookVector, 4+HUM.HipHeight, CHARACTER)
  1231. local WALKSPEEDVALUE = 2
  1232. if ANIM == "Walk" and TORSOVELOCITY > 1 then
  1233. ROOTJOINT.C1 = Clerp(ROOTJOINT.C1, ROOTC0 * CF(0, 0, -0.05 * COS(SINE / (WALKSPEEDVALUE / 2))) * ANGLES(RAD(0), RAD(0) - ROOT.RotVelocity.Y / 35, RAD(0)), 2 / ANIM_SPEED)
  1234. NECK.C1 = Clerp(NECK.C1, CF(0, -0.5, 0) * ANGLES(RAD(-90), RAD(0), RAD(180)) * ANGLES(RAD(2.5 * SIN(SINE / (WALKSPEEDVALUE / 2))), RAD(0), RAD(0) - HEAD.RotVelocity.Y / 30), 0.8/ ANIM_SPEED)
  1235. 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(175 * COS(SINE / WALKSPEEDVALUE))), 0.6 / ANIM_SPEED)
  1236. 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(175 * COS(SINE / WALKSPEEDVALUE))), 0.6 / ANIM_SPEED)
  1237. elseif (ANIM ~= "Walk") or (TORSOVELOCITY < 1) then
  1238. ROOTJOINT.C1 = Clerp(ROOTJOINT.C1, ROOTC0 * CF(0, 0, 0) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.2 / ANIM_SPEED)
  1239. NECK.C1 = Clerp(NECK.C1, CF(0, -0.5, 0) * ANGLES(RAD(-90), RAD(0), RAD(180)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.2 / ANIM_SPEED)
  1240. 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)
  1241. 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)
  1242. end
  1243. if HITFLOOR then
  1244. if TORSOVELOCITY < 1 and HITFLOOR ~= nil then
  1245. ANIM = "Idle"
  1246. if ATTACKING == false then
  1247. ROOTJOINT.C0 = Clerp(ROOTJOINT.C0,ROOTC0 * CF(0, 0, 0 + 0.2 * COS(SINE / 12)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.5 / ANIM_SPEED)
  1248. NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(-35+MRANDOM(-10,10)), RAD(MRANDOM(-10,10)), RAD(MRANDOM(-10,10))), 0.5 / ANIM_SPEED)
  1249. RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(145 + 45 * SIN(SINE / 12)), RAD(0), RAD(45+MRANDOM(-5,5))) * RIGHTSHOULDERC0, 0.5 / ANIM_SPEED)
  1250. LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(145 - 45 * SIN(SINE / 12)), RAD(0), RAD(-45+MRANDOM(-5,5))) * LEFTSHOULDERC0, 0.5 / ANIM_SPEED)
  1251. RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1, -1 - 0.2 * COS(SINE / 12), -0.01) * ANGLES(RAD(0), RAD(65), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.5 / ANIM_SPEED)
  1252. LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1, -1 - 0.2 * COS(SINE / 12), -0.01) * ANGLES(RAD(0), RAD(-65+MRANDOM(-10,10)), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.5 / ANIM_SPEED)
  1253. end
  1254. elseif TORSOVELOCITY > 1 and HITFLOOR ~= nil then
  1255. ANIM = "Walk"
  1256. if ATTACKING == false then
  1257. ROOTJOINT.C0 = Clerp(ROOTJOINT.C0,ROOTC0 * CF(0, 0, -0.2) * ANGLES(RAD(-45), RAD(0), RAD(0)), 0.25 / ANIM_SPEED)
  1258. NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(-75 - 8 * SIN(SINE / (WALKSPEEDVALUE / 2))), RAD(0), RAD(0)), 0.25 / ANIM_SPEED)
  1259. RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(200), RAD(-15), RAD(35)) * RIGHTSHOULDERC0, 0.75 / ANIM_SPEED)
  1260. LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(200), RAD(15), RAD(-35)) * LEFTSHOULDERC0, 0.75 / ANIM_SPEED)
  1261. RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1 , -1, 0) * ANGLES(RAD(0), RAD(75), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(-15)), 2 / ANIM_SPEED)
  1262. LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1, -1, 0) * ANGLES(RAD(0), RAD(-75), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(15)), 2 / ANIM_SPEED)
  1263. end
  1264. end
  1265. else
  1266. if TORSOVERTICALVELOCITY > 0 then
  1267. ANIM = "Jump"
  1268. if ATTACKING == false then
  1269. ROOTJOINT.C0 = Clerp(ROOTJOINT.C0, ROOTC0 * CF(0, 0, 0) * ANGLES(RAD(0), RAD(0), RAD(0)), 0.5 / ANIM_SPEED)
  1270. NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(-20), RAD(0), RAD(0)), 0.2 / ANIM_SPEED)
  1271. RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(-40), RAD(0), RAD(20)) * RIGHTSHOULDERC0, 0.5 / ANIM_SPEED)
  1272. LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(-40), RAD(0), RAD(-20)) * LEFTSHOULDERC0, 0.5 / ANIM_SPEED)
  1273. RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1, -0.3, -0.5) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(-20)), 0.5 / ANIM_SPEED)
  1274. LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1, -1, -0.3) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(20)), 0.5 / ANIM_SPEED)
  1275. end
  1276. else
  1277. ANIM = "Fall"
  1278. if ATTACKING == false then
  1279. ROOTJOINT.C0 = Clerp(ROOTJOINT.C0, ROOTC0 * CF(0, 0, 0 ) * ANGLES(RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350))), 2 / ANIM_SPEED)
  1280. NECK.C0 = Clerp(NECK.C0, NECKC0 * CF(0, 0 , 0 + ((1) - 1)) * ANGLES(RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350))), 2 / ANIM_SPEED)
  1281. RIGHTSHOULDER.C0 = Clerp(RIGHTSHOULDER.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350))) * RIGHTSHOULDERC0, 2 / ANIM_SPEED)
  1282. LEFTSHOULDER.C0 = Clerp(LEFTSHOULDER.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350))) * LEFTSHOULDERC0, 2 / ANIM_SPEED)
  1283. RIGHTHIP.C0 = Clerp(RIGHTHIP.C0, CF(1, -1, 0) * ANGLES(RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350))), 2 / ANIM_SPEED)
  1284. LEFTHIP.C0 = Clerp(LEFTHIP.C0, CF(-1, -1, 0) * ANGLES(RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350)), RAD(MRANDOM(0,350))), 2 / ANIM_SPEED)
  1285. end
  1286. end
  1287. end
  1288. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement