Advertisement
ingfury

Tom

Jun 5th, 2018
343
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 32.74 KB | None | 0 0
  1. --//====================================================\\--
  2. --|| CREATED BY THE TRUE ILLUMINATY, SHACKLUSTER
  3. --\\====================================================//--
  4.  
  5.  
  6.  
  7. wait(0.2)
  8.  
  9.  
  10.  
  11. Player = owner
  12. PlayerGui = Player.PlayerGui
  13. Cam = workspace.CurrentCamera
  14. Backpack = Player.Backpack
  15. Character = Player.Character
  16. Humanoid = Character.Humanoid
  17. RootPart = Character["HumanoidRootPart"]
  18. Torso = Character["Torso"]
  19. Head = Character["Head"]
  20. RightArm = Character["Right Arm"]
  21. LeftArm = Character["Left Arm"]
  22. RightLeg = Character["Right Leg"]
  23. LeftLeg = Character["Left Leg"]
  24. RootJoint = RootPart["RootJoint"]
  25. Neck = Torso["Neck"]
  26. RightShoulder = Torso["Right Shoulder"]
  27. LeftShoulder = Torso["Left Shoulder"]
  28. RightHip = Torso["Right Hip"]
  29. LeftHip = Torso["Left Hip"]
  30. KEYHOLD = false
  31. IT = Instance.new
  32. CF = CFrame.new
  33. VT = Vector3.new
  34. RAD = math.rad
  35. C3 = Color3.new
  36. UD2 = UDim2.new
  37. BRICKC = BrickColor.new
  38. ANGLES = CFrame.Angles
  39. EULER = CFrame.fromEulerAnglesXYZ
  40. COS = math.cos
  41. ACOS = math.acos
  42. SIN = math.sin
  43. ASIN = math.asin
  44. ABS = math.abs
  45. MRANDOM = math.random
  46. FLOOR = math.floor
  47. local Torsos = {}
  48.  
  49. function CreateMesh(MESH, PARENT, MESHTYPE, MESHID, TEXTUREID, SCALE, OFFSET)
  50. local NEWMESH = IT(MESH)
  51. if MESH == "SpecialMesh" then
  52. NEWMESH.MeshType = MESHTYPE
  53. if MESHID ~= "nil" and MESHID ~= "" then
  54. NEWMESH.MeshId = "http://www.roblox.com/asset/?id="..MESHID
  55. end
  56. if TEXTUREID ~= "nil" and TEXTUREID ~= "" then
  57. NEWMESH.TextureId = "http://www.roblox.com/asset/?id="..TEXTUREID
  58. end
  59. end
  60. NEWMESH.Offset = OFFSET or VT(0, 0, 0)
  61. NEWMESH.Scale = SCALE
  62. NEWMESH.Parent = PARENT
  63. return NEWMESH
  64. end
  65.  
  66. function CreatePart(FORMFACTOR, PARENT, MATERIAL, REFLECTANCE, TRANSPARENCY, BRICKCOLOR, NAME, SIZE)
  67. local NEWPART = IT("Part")
  68. NEWPART.formFactor = FORMFACTOR
  69. NEWPART.Reflectance = REFLECTANCE
  70. NEWPART.Transparency = TRANSPARENCY
  71. NEWPART.CanCollide = false
  72. NEWPART.Locked = true
  73. NEWPART.BrickColor = BRICKC(tostring(BRICKCOLOR))
  74. NEWPART.Name = NAME
  75. NEWPART.Size = SIZE
  76. NEWPART.Position = Torso.Position
  77. NEWPART.Material = MATERIAL
  78. NEWPART:BreakJoints()
  79. NEWPART.Parent = PARENT
  80. return NEWPART
  81. end
  82.  
  83.  
  84. --//=================================\\
  85. --|| CUSTOMIZATION
  86. --\\=================================//
  87.  
  88. Class_Name = "Template"
  89. Weapon_Name = "Add-ons"
  90.  
  91. Custom_Colors = {
  92. Custom_Color_1 = BRICKC("Institutional white"); --1st color for the weapon.
  93. Custom_Color_2 = BRICKC("Institutional white"); --2nd color for the weapon.
  94.  
  95. Custom_Color_3 = BRICKC("Institutional white"); --Color for the abilities.
  96. Custom_Color_4 = BRICKC("Institutional white"); --Color for the secondary bar.
  97. Custom_Color_5 = BRICKC("Institutional white"); --Color for the mana bar.
  98. Custom_Color_6 = BRICKC("Institutional white"); --Color for the health bar.
  99. Custom_Color_7 = BRICKC("Institutional white"); --Color for the stun bar.
  100.  
  101. Custom_Color_8 = BRICKC("Institutional white"); --Background for the mana bar.
  102. Custom_Color_9 = BRICKC("Institutional white"); --Background for the secondary mana bar.
  103. Custom_Color_10 = BRICKC("Institutional white"); --Background for the stun bar.
  104. Custom_Color_11 = BRICKC("Institutional white"); --Background for the health bar.
  105. Custom_Color_12 = BRICKC("Institutional white"); --Background for the abilities.
  106. }
  107.  
  108.  
  109. Player_Size = 1 --Size of the player.
  110. Animation_Speed = 3
  111. Frame_Speed = 1 / 60 -- (1 / 30) OR (1 / 60)
  112.  
  113. local Speed = 16
  114. local Effects2 = {}
  115.  
  116. --//=================================\\
  117. --|| END OF CUSTOMIZATION
  118. --\\=================================//
  119.  
  120. local function weldBetween(a, b)
  121. local weldd = Instance.new("ManualWeld")
  122. weldd.Part0 = a
  123. weldd.Part1 = b
  124. weldd.C0 = CFrame.new()
  125. weldd.C1 = b.CFrame:inverse() * a.CFrame
  126. weldd.Parent = a
  127. return weldd
  128. end
  129.  
  130. function createaccessory(attachmentpart,mesh,texture,scale,offset,color)
  131. local acs = Instance.new("Part")
  132. acs.CanCollide = false
  133. acs.Anchored = false
  134. acs.Size = Vector3.new(0,0,0)
  135. acs.CFrame = attachmentpart.CFrame
  136. acs.Parent = Character
  137. acs.BrickColor = color
  138. local meshs = Instance.new("SpecialMesh")
  139. meshs.MeshId = mesh
  140. meshs.TextureId = texture
  141. meshs.Parent = acs
  142. meshs.Scale = scale
  143. meshs.Offset = offset
  144. weldBetween(attachmentpart,acs)
  145. end
  146.  
  147. function createbodypart(TYPE,COLOR,PART,OFFSET,SIZE)
  148. if TYPE == "Gem" then
  149. local acs = CreatePart(3, Character, "Plastic", 0, 0, COLOR, "Part", VT(0,0,0))
  150. acs.Anchored = false
  151. acs.CanCollide = false
  152. acs.CFrame = PART.CFrame
  153. local acs2 = CreateMesh("SpecialMesh", acs, "FileMesh", "9756362", "", SIZE, OFFSET)
  154. weldBetween(PART,acs)
  155. elseif TYPE == "Skull" then
  156. local acs = CreatePart(3, Character, "Plastic", 0, 0, COLOR, "Part", VT(0,0,0))
  157. acs.Anchored = false
  158. acs.CanCollide = false
  159. acs.CFrame = PART.CFrame
  160. local acs2 = CreateMesh("SpecialMesh", acs, "FileMesh", "4770583", "", SIZE, OFFSET)
  161. weldBetween(PART,acs)
  162. elseif TYPE == "Eye" then
  163. local acs = CreatePart(3, Character, "Neon", 0, 0, COLOR, "Part", VT(0,0,0))
  164. acs.Anchored = false
  165. acs.CanCollide = false
  166. acs.CFrame = PART.CFrame
  167. local acs2 = CreateMesh("SpecialMesh", acs, "Sphere", "", "", SIZE, OFFSET)
  168. weldBetween(PART,acs)
  169. end
  170. end
  171.  
  172. --//=================================\\
  173. --|| USEFUL VALUES
  174. --\\=================================//
  175.  
  176. local ROOTC0 = CF(0, 0, 0) * ANGLES(RAD(-90), RAD(0), RAD(180))
  177. local NECKC0 = CF(0, 1, 0) * ANGLES(RAD(-90), RAD(0), RAD(180))
  178. local RIGHTSHOULDERC0 = CF(-0.5, 0, 0) * ANGLES(RAD(0), RAD(90), RAD(0))
  179. local LEFTSHOULDERC0 = CF(0.5, 0, 0) * ANGLES(RAD(0), RAD(-90), RAD(0))
  180. local CO1 = 0
  181. local CO2 = 0
  182. local CO3 = 0
  183. local CO4 = 0
  184. local CHANGEDEFENSE = 0
  185. local CHANGEDAMAGE = 0
  186. local CHANGEMOVEMENT = 0
  187. local ANIM = "Idle"
  188. local ATTACK = false
  189. local EQUIPPED = false
  190. local HOLD = false
  191. local COMBO = 1
  192. local LASTPOINT = nil
  193. local BLCF = nil
  194. local SCFR = nil
  195. local STAGGERHITANIM = false
  196. local STAGGERANIM = false
  197. local STUNANIM = false
  198. local CRITCHANCENUMBER = 0
  199. local IDLENUMBER = 0
  200. local DONUMBER = 0
  201. local HANDIDLE = false
  202. local SINE = 0
  203. local CHANGE = 2 / Animation_Speed
  204. local WALKINGANIM = false
  205. local WALK = 0
  206. local DISABLEJUMPING = false
  207. local HASBEENBLOCKED = false
  208. local STUNDELAYNUMBER = 0
  209. local MANADELAYNUMBER = 0
  210. local SECONDARYMANADELAYNUMBER = 0
  211. local ROBLOXIDLEANIMATION = IT("Animation")
  212. ROBLOXIDLEANIMATION.Name = "Roblox Idle Animation"
  213. ROBLOXIDLEANIMATION.AnimationId = "http://www.roblox.com/asset/?id=180435571"
  214. --ROBLOXIDLEANIMATION.Parent = Humanoid
  215. local WEAPONGUI = IT("ScreenGui", nil)
  216. WEAPONGUI.Name = "Weapon GUI"
  217. local WEAPONTOOL = IT("HopperBin", nil)
  218. WEAPONTOOL.Name = Weapon_Name
  219. local Weapon = IT("Model")
  220. Weapon.Name = Weapon_Name
  221. local Effects = IT("Folder", Weapon)
  222. Effects.Name = "Effects"
  223. local ANIMATOR = Humanoid.Animator
  224. local ANIMATE = Character.Animate
  225. local HITPLAYERSOUNDS = {--[["1025464252", "1025464252", "1025464252", "1025464252", "1025464252", "1025464252"--]]"1025464252", "1025464252", "1025464252", "1025464252", "1025464252", "1025464252"}
  226. local HITARMORSOUNDS = {"1025464252", "1025464252", "1025464252", "1025464252", "1025464252"}
  227. local HITWEAPONSOUNDS = {"1025464252", "1025464252", "1025464252", "1025464252", "1025464252"}
  228. local HITBLOCKSOUNDS = {"1025464252", "1025464252"}
  229. local UNANCHOR = true
  230.  
  231. --//=================================\\
  232. --\\=================================//
  233.  
  234. --//=================================\\
  235. --|| STATS
  236. --\\=================================//
  237.  
  238. if Character:FindFirstChild("Stats") ~= nil then
  239. Character:FindFirstChild("Stats").Parent = nil
  240. end
  241.  
  242. local Stats = IT("Folder", nil)
  243. Stats.Name = "Stats"
  244. local ChangeStat = IT("Folder", Stats)
  245. ChangeStat.Name = "ChangeStat"
  246. local Defense = IT("NumberValue", Stats)
  247. Defense.Name = "Defense"
  248. Defense.Value = 1
  249. local Movement = IT("NumberValue", Stats)
  250. Movement.Name = "Movement"
  251. Movement.Value = 1
  252. local Damage = IT("NumberValue", Stats)
  253. Damage.Name = "Damage"
  254. Damage.Value = 1
  255. local Mana = IT("NumberValue", Stats)
  256. Mana.Name = "Mana"
  257. Mana.Value = 0
  258. local SecondaryMana = IT("NumberValue", Stats)
  259. SecondaryMana.Name = "SecondaryMana"
  260. SecondaryMana.Value = 0
  261. local CanCrit = IT("BoolValue", Stats)
  262. CanCrit.Name = "CanCrit"
  263. CanCrit.Value = false
  264. local CritChance = IT("NumberValue", Stats)
  265. CritChance.Name = "CritChance"
  266. CritChance.Value = 20
  267. local CanPenetrateArmor = IT("BoolValue", Stats)
  268. CanPenetrateArmor.Name = "CanPenetrateArmor"
  269. CanPenetrateArmor.Value = false
  270. local AntiTeamKill = IT("BoolValue", Stats)
  271. AntiTeamKill.Name = "AntiTeamKill"
  272. AntiTeamKill.Value = false
  273. local Rooted = IT("BoolValue", Stats)
  274. Rooted.Name = "Rooted"
  275. Rooted.Value = false
  276. local Block = IT("BoolValue", Stats)
  277. Block.Name = "Block"
  278. Block.Value = false
  279. local RecentEnemy = IT("ObjectValue", Stats)
  280. RecentEnemy.Name = "RecentEnemy"
  281. RecentEnemy.Value = nil
  282. local StaggerHit = IT("BoolValue", Stats)
  283. StaggerHit.Name = "StaggerHit"
  284. StaggerHit.Value = false
  285. local Stagger = IT("BoolValue", Stats)
  286. Stagger.Name = "Stagger"
  287. Stagger.Value = false
  288. local Stun = IT("BoolValue", Stats)
  289. Stun.Name = "Stun"
  290. Stun.Value = false
  291. local StunValue = IT("NumberValue", Stats)
  292. StunValue.Name = "StunValue"
  293. StunValue.Value = 0
  294.  
  295.  
  296. --//=================================\\
  297. --\\=================================//
  298.  
  299.  
  300.  
  301.  
  302.  
  303. --//=================================\\
  304. --|| DEBUFFS / BUFFS
  305. --\\=================================//
  306.  
  307. local DEFENSECHANGE1 = IT("NumberValue", ChangeStat)
  308. DEFENSECHANGE1.Name = "ChangeDefense"
  309. DEFENSECHANGE1.Value = 0
  310.  
  311. local MOVEMENTCHANGE1 = IT("NumberValue", nil)
  312. MOVEMENTCHANGE1.Name = "ChangeMovement"
  313. MOVEMENTCHANGE1.Value = 0
  314.  
  315. --//=================================\\
  316. --\\=================================//
  317.  
  318.  
  319.  
  320.  
  321.  
  322. --//=================================\\
  323. --|| SAZERENOS' ARTIFICIAL HEARTBEAT
  324. --\\=================================//
  325.  
  326. ArtificialHB = Instance.new("BindableEvent", script)
  327. ArtificialHB.Name = "ArtificialHB"
  328.  
  329. script:WaitForChild("ArtificialHB")
  330.  
  331. frame = Frame_Speed
  332. tf = 0
  333. allowframeloss = false
  334. tossremainder = false
  335. lastframe = tick()
  336. script.ArtificialHB:Fire()
  337.  
  338. game:GetService("RunService").Heartbeat:connect(function(s, p)
  339. tf = tf + s
  340. if tf >= frame then
  341. if allowframeloss then
  342. script.ArtificialHB:Fire()
  343. lastframe = tick()
  344. else
  345. for i = 1, math.floor(tf / frame) do
  346. script.ArtificialHB:Fire()
  347. end
  348. lastframe = tick()
  349. end
  350. if tossremainder then
  351. tf = 0
  352. else
  353. tf = tf - frame * math.floor(tf / frame)
  354. end
  355. end
  356. end)
  357.  
  358. --//=================================\\
  359. --\\=================================//
  360.  
  361.  
  362.  
  363.  
  364.  
  365. --//=================================\\
  366. --|| SOME FUNCTIONS
  367. --\\=================================//
  368.  
  369. function Raycast(POSITION, DIRECTION, RANGE, IGNOREDECENDANTS)
  370. return workspace:FindPartOnRay(Ray.new(POSITION, DIRECTION.unit * RANGE), IGNOREDECENDANTS)
  371. end
  372.  
  373. function PositiveAngle(NUMBER)
  374. if NUMBER >= 0 then
  375. NUMBER = 0
  376. end
  377. return NUMBER
  378. end
  379.  
  380. function NegativeAngle(NUMBER)
  381. if NUMBER <= 0 then
  382. NUMBER = 0
  383. end
  384. return NUMBER
  385. end
  386.  
  387. function Swait(NUMBER)
  388. if NUMBER == 0 or NUMBER == nil then
  389. ArtificialHB.Event:wait()
  390. else
  391. for i = 1, NUMBER do
  392. ArtificialHB.Event:wait()
  393. end
  394. end
  395. end
  396.  
  397. function QuaternionFromCFrame(cf)
  398. local mx, my, mz, m00, m01, m02, m10, m11, m12, m20, m21, m22 = cf:components()
  399. local trace = m00 + m11 + m22
  400. if trace > 0 then
  401. local s = math.sqrt(1 + trace)
  402. local recip = 0.5 / s
  403. return (m21 - m12) * recip, (m02 - m20) * recip, (m10 - m01) * recip, s * 0.5
  404. else
  405. local i = 0
  406. if m11 > m00 then
  407. i = 1
  408. end
  409. if m22 > (i == 0 and m00 or m11) then
  410. i = 2
  411. end
  412. if i == 0 then
  413. local s = math.sqrt(m00 - m11 - m22 + 1)
  414. local recip = 0.5 / s
  415. return 0.5 * s, (m10 + m01) * recip, (m20 + m02) * recip, (m21 - m12) * recip
  416. elseif i == 1 then
  417. local s = math.sqrt(m11 - m22 - m00 + 1)
  418. local recip = 0.5 / s
  419. return (m01 + m10) * recip, 0.5 * s, (m21 + m12) * recip, (m02 - m20) * recip
  420. elseif i == 2 then
  421. local s = math.sqrt(m22 - m00 - m11 + 1)
  422. local recip = 0.5 / s return (m02 + m20) * recip, (m12 + m21) * recip, 0.5 * s, (m10 - m01) * recip
  423. end
  424. end
  425. end
  426.  
  427. function QuaternionToCFrame(px, py, pz, x, y, z, w)
  428. local xs, ys, zs = x + x, y + y, z + z
  429. local wx, wy, wz = w * xs, w * ys, w * zs
  430. local xx = x * xs
  431. local xy = x * ys
  432. local xz = x * zs
  433. local yy = y * ys
  434. local yz = y * zs
  435. local zz = z * zs
  436. 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))
  437. end
  438.  
  439. function QuaternionSlerp(a, b, t)
  440. local cosTheta = a[1] * b[1] + a[2] * b[2] + a[3] * b[3] + a[4] * b[4]
  441. local startInterp, finishInterp;
  442. if cosTheta >= 0.0001 then
  443. if (1 - cosTheta) > 0.0001 then
  444. local theta = ACOS(cosTheta)
  445. local invSinTheta = 1 / SIN(theta)
  446. startInterp = SIN((1 - t) * theta) * invSinTheta
  447. finishInterp = SIN(t * theta) * invSinTheta
  448. else
  449. startInterp = 1 - t
  450. finishInterp = t
  451. end
  452. else
  453. if (1 + cosTheta) > 0.0001 then
  454. local theta = ACOS(-cosTheta)
  455. local invSinTheta = 1 / SIN(theta)
  456. startInterp = SIN((t - 1) * theta) * invSinTheta
  457. finishInterp = SIN(t * theta) * invSinTheta
  458. else
  459. startInterp = t - 1
  460. finishInterp = t
  461. end
  462. end
  463. 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
  464. end
  465.  
  466. function Clerp(a, b, t)
  467. local qa = {QuaternionFromCFrame(a)}
  468. local qb = {QuaternionFromCFrame(b)}
  469. local ax, ay, az = a.x, a.y, a.z
  470. local bx, by, bz = b.x, b.y, b.z
  471. local _t = 1 - t
  472. return QuaternionToCFrame(_t * ax + t * bx, _t * ay + t * by, _t * az + t * bz, QuaternionSlerp(qa, qb, t))
  473. end
  474.  
  475. function CreateFrame(PARENT, TRANSPARENCY, BORDERSIZEPIXEL, POSITION, SIZE, COLOR, BORDERCOLOR, NAME)
  476. local frame = IT("Frame")
  477. frame.BackgroundTransparency = TRANSPARENCY
  478. frame.BorderSizePixel = BORDERSIZEPIXEL
  479. frame.Position = POSITION
  480. frame.Size = SIZE
  481. frame.BackgroundColor3 = COLOR
  482. frame.BorderColor3 = BORDERCOLOR
  483. frame.Name = NAME
  484. frame.Parent = PARENT
  485. return frame
  486. end
  487.  
  488. function CreateLabel(PARENT, TEXT, TEXTCOLOR, TEXTFONTSIZE, TEXTFONT, TRANSPARENCY, BORDERSIZEPIXEL, STROKETRANSPARENCY, NAME)
  489. local label = IT("TextLabel")
  490. label.BackgroundTransparency = 1
  491. label.Size = UD2(1, 0, 1, 0)
  492. label.Position = UD2(0, 0, 0, 0)
  493. label.TextColor3 = C3(255, 255, 255)
  494. label.TextStrokeTransparency = STROKETRANSPARENCY
  495. label.TextTransparency = TRANSPARENCY
  496. label.FontSize = TEXTFONTSIZE
  497. label.Font = TEXTFONT
  498. label.BorderSizePixel = BORDERSIZEPIXEL
  499. label.TextScaled = true
  500. label.Text = TEXT
  501. label.Name = NAME
  502. label.Parent = PARENT
  503. return label
  504. end
  505.  
  506. function NoOutlines(PART)
  507. PART.TopSurface, PART.BottomSurface, PART.LeftSurface, PART.RightSurface, PART.FrontSurface, PART.BackSurface = 10, 10, 10, 10, 10, 10
  508. end
  509.  
  510.  
  511. function CreateWeldOrSnapOrMotor(TYPE, PARENT, PART0, PART1, C0, C1)
  512. local NEWWELD = IT(TYPE)
  513. NEWWELD.Part0 = PART0
  514. NEWWELD.Part1 = PART1
  515. NEWWELD.C0 = C0
  516. NEWWELD.C1 = C1
  517. NEWWELD.Parent = PARENT
  518. return NEWWELD
  519. end
  520.  
  521. function CreateSound(ID, PARENT, VOLUME, PITCH)
  522. coroutine.resume(coroutine.create(function()
  523. local NEWSOUND = IT("Sound", PARENT)
  524. NEWSOUND.Volume = VOLUME
  525. NEWSOUND.Pitch = PITCH
  526. NEWSOUND.SoundId = "http://www.roblox.com/asset/?id="..ID
  527. Swait()
  528. NEWSOUND:play()
  529. game:GetService("Debris"):AddItem(NEWSOUND, 10)
  530. end))
  531. end
  532.  
  533. --//=================================\\
  534. --\\=================================//
  535.  
  536.  
  537.  
  538.  
  539.  
  540. --//=================================\\
  541. --|| RESIZE PLAYER
  542. --\\=================================//
  543.  
  544. if Player_Size ~= 1 then
  545. RootPart.Size = RootPart.Size * Player_Size
  546. Torso.Size = Torso.Size * Player_Size
  547. Head.Size = Head.Size * Player_Size
  548. RightArm.Size = RightArm.Size * Player_Size
  549. LeftArm.Size = LeftArm.Size * Player_Size
  550. RightLeg.Size = RightLeg.Size * Player_Size
  551. LeftLeg.Size = LeftLeg.Size * Player_Size
  552. RootJoint.Parent = RootPart
  553. Neck.Parent = Torso
  554. RightShoulder.Parent = Torso
  555. LeftShoulder.Parent = Torso
  556. RightHip.Parent = Torso
  557. LeftHip.Parent = Torso
  558.  
  559. RootJoint.C0 = ROOTC0 * CF(0 * Player_Size, 0 * Player_Size, 0 * Player_Size) * ANGLES(RAD(0), RAD(0), RAD(0))
  560. RootJoint.C1 = ROOTC0 * CF(0 * Player_Size, 0 * Player_Size, 0 * Player_Size) * ANGLES(RAD(0), RAD(0), RAD(0))
  561. Neck.C0 = NECKC0 * CF(0 * Player_Size, 0 * Player_Size, 0 + ((1 * Player_Size) - 1)) * ANGLES(RAD(0), RAD(0), RAD(0))
  562. Neck.C1 = CF(0 * Player_Size, -0.5 * Player_Size, 0 * Player_Size) * ANGLES(RAD(-90), RAD(0), RAD(180))
  563. RightShoulder.C0 = CF(1.5 * Player_Size, 0.5 * Player_Size, 0 * Player_Size) * ANGLES(RAD(0), RAD(0), RAD(0)) * RIGHTSHOULDERC0
  564. LeftShoulder.C0 = CF(-1.5 * Player_Size, 0.5 * Player_Size, 0 * Player_Size) * ANGLES(RAD(0), RAD(0), RAD(0)) * LEFTSHOULDERC0
  565. if Disable_Moving_Arms == false then
  566. RightShoulder.C1 = ANGLES(0, RAD(90), 0) * CF(0 * Player_Size, 0.5 * Player_Size, -0.5)
  567. LeftShoulder.C1 = ANGLES(0, RAD(-90), 0) * CF(0 * Player_Size, 0.5 * Player_Size, -0.5)
  568. else
  569. RightShoulder.C1 = CF(0 * Player_Size, 0.5 * Player_Size, 0 * Player_Size)
  570. LeftShoulder.C1 = CF(0 * Player_Size, 0.5 * Player_Size, 0 * Player_Size)
  571. end
  572. RightHip.C0 = CF(1 * Player_Size, -1 * Player_Size, 0 * Player_Size) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0))
  573. LeftHip.C0 = CF(-1 * Player_Size, -1 * Player_Size, 0 * Player_Size) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0))
  574. RightHip.C1 = CF(0.5 * Player_Size, 1 * Player_Size, 0 * Player_Size) * ANGLES(RAD(0), RAD(90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0))
  575. LeftHip.C1 = CF(-0.5 * Player_Size, 1 * Player_Size, 0 * Player_Size) * ANGLES(RAD(0), RAD(-90), RAD(0)) * ANGLES(RAD(0), RAD(0), RAD(0))
  576. --------------------
  577. end
  578.  
  579.  
  580. --//=================================\\
  581. --\\=================================//
  582.  
  583.  
  584.  
  585.  
  586. --//=================================\\
  587. --|| WEAPON CREATION
  588. --\\=================================//
  589.  
  590. if Player_Size ~= 1 then
  591. for _, v in pairs (Weapon:GetChildren()) do
  592. if v.ClassName == "Motor" or v.ClassName == "Weld" or v.ClassName == "Snap" then
  593. local p1 = v.Part1
  594. v.Part1 = nil
  595. local cf1, cf2, cf3, cf4, cf5, cf6, cf7, cf8, cf9, cf10, cf11, cf12 = v.C1:components()
  596. v.C1 = CF(cf1 * Player_Size, cf2 * Player_Size, cf3 * Player_Size, cf4, cf5, cf6, cf7, cf8, cf9, cf10, cf11, cf12)
  597. v.Part1 = p1
  598. elseif v.ClassName == "Part" then
  599. for _, b in pairs (v:GetChildren()) do
  600. if b.ClassName == "SpecialMesh" or b.ClassName == "BlockMesh" then
  601. b.Scale = VT(b.Scale.x * Player_Size, b.Scale.y * Player_Size, b.Scale.z * Player_Size)
  602. end
  603. end
  604. end
  605. end
  606. end
  607.  
  608. for _, c in pairs(Weapon:GetChildren()) do
  609. if c.ClassName == "Part" then
  610. c.CustomPhysicalProperties = PhysicalProperties.new(0, 0, 0, 0, 0)
  611. end
  612. end
  613.  
  614. Weapon.Parent = Character
  615.  
  616. print(Class_Name.." loaded.")
  617.  
  618. --//=================================\\
  619. --\\=================================//
  620.  
  621.  
  622.  
  623. --//=================================\\
  624. --|| ATTACK FUNCTIONS AND STUFF
  625. --\\=================================//
  626.  
  627. local raysound = Instance.new("Sound",Character)
  628. raysound.SoundId = "rbxassetid://672731096"
  629. raysound.Pitch = 1
  630. raysound.Looped = true
  631. raysound.Volume = 10
  632.  
  633. function pew()
  634. ATTACK = true
  635. local sphere = Instance.new("Part",Effects)
  636. sphere.Size = Vector3.new(0,0,0)
  637. sphere.Material = "Neon"
  638. sphere.Shape = "Ball"
  639. sphere.Name = "AntimatterRay"
  640. sphere.Anchored = true
  641. sphere.Color = Color3.new(33/255, 102/255, 192/255)
  642. sphere.CFrame = RootPart.CFrame + RootPart.CFrame.lookVector*27
  643. sphere.CanCollide = false
  644. local hit = sphere.Touched:connect(function(hit)
  645. if hit.Parent ~= Character and hit.Parent.Parent ~= Character and hit.Parent ~= Effects and hit.Anchored == false and hit:FindFirstChild("Vanishing") == nil then
  646. if hit.Parent:FindFirstChild("Humanoid") then
  647. hit.Parent:BreakJoints()
  648. if hit.Parent:FindFirstChild("Vanishing") == nil then
  649. local vanish = Instance.new("BoolValue",hit.Parent)
  650. vanish.Name = "Vanishing"
  651. local sound = Instance.new("Sound",hit)
  652. sound.SoundId = "rbxassetid://1025464252"
  653. sound.Volume = 10
  654. sound:Play()
  655. end
  656. else
  657. local vanish = Instance.new("BoolValue",hit)
  658. vanish.Name = "Vanishing"
  659. hit.Color = Color3.new(33/255, 102/255, 192/255)
  660. table.insert(Effects2,{hit,"Disappear",0.07,0,1,1,1})
  661. if hit:FindFirstChildOfClass("SpecialMesh") then
  662. local mesh = hit:FindFirstChildOfClass("SpecialMesh")
  663. mesh.TextureId = ""
  664. end
  665. end
  666. end
  667. end)
  668. repeat
  669. Swait()
  670. RootPart.CFrame=CFrame.new(RootPart.CFrame.p,Mouse.Hit.p) * CFrame.new(0, 0, 0)
  671. sphere.Size = sphere.Size + Vector3.new(1,1,1)
  672. sphere.Color = Color3.new(33/255, 102/255, 192/255)
  673. sphere.CFrame = RootPart.CFrame + RootPart.CFrame.lookVector*(sphere.Size.Y/1.75)
  674. until KEYHOLD == false or sphere.Size.Y > 200
  675. CreateSound("1025464252", Effects, 10, 1)
  676. local bv = Instance.new("BodyVelocity")
  677. bv.maxForce = Vector3.new(1e9, 1e9, 1e9)
  678. bv.velocity = RootPart.CFrame.lookVector*350
  679. bv.Parent = sphere
  680. bv.Name = "DASH"
  681. sphere.Anchored = false
  682. ATTACK = false
  683. game:GetService("Debris"):AddItem(sphere, 15)
  684. end
  685.  
  686. function HoldRay()
  687. ATTACK = true
  688. UNANCHOR = false
  689. CreateSound("975173739", Torso, 15, 3.5)
  690. local sphere = Instance.new("Part",Effects)
  691. sphere.Size = Vector3.new(0,0,0)
  692. sphere.Material = "Neon"
  693. sphere.Shape = "Ball"
  694. sphere.Name = "AntimatterRay"
  695. sphere.Anchored = true
  696. sphere.Color = Color3.new(33/255, 102/255, 192/255)
  697. sphere.CFrame = RootPart.CFrame + RootPart.CFrame.lookVector*15
  698. sphere.CanCollide = false
  699. for i=0, 1, 0.1 / Animation_Speed do
  700. Swait()
  701. RootPart.CFrame=CFrame.new(RootPart.CFrame.p,Mouse.Hit.p) * CFrame.new(0, 0, 0)
  702. sphere.Size = sphere.Size + Vector3.new(0.6,0.6,0.6)
  703. sphere.CFrame = RootPart.CFrame + RootPart.CFrame.lookVector*15
  704. end
  705. local sound = Instance.new("Sound",Effects)
  706. sound.SoundId = "rbxassetid://1025464252"
  707. sound.Volume = 10
  708. sound:Play()
  709. repeat
  710. sphere.CFrame = RootPart.CFrame + RootPart.CFrame.lookVector*15
  711. Swait()
  712. RootPart.CFrame=CFrame.new(RootPart.CFrame.p,Mouse.Hit.p) * CFrame.new(0, 0, 0)
  713. until sound.Playing == false
  714. sound:remove()
  715. raysound:Play()
  716. local timer = 1
  717. local Lazor = Instance.new("Part",Effects)
  718. Lazor.Size = Vector3.new(12,12,1000)
  719. Lazor.Name = "AntimatterRay"
  720. Lazor.Material = "Neon"
  721. Lazor.Anchored = true
  722. Lazor.CanCollide = false
  723. Lazor.CFrame = RootPart.CFrame + RootPart.CFrame.lookVector*515
  724. Lazor.Color = Color3.new(33/255, 102/255, 192/255)
  725. Lazor.CFrame = Lazor.CFrame * CFrame.fromEulerAnglesXYZ(0,0,math.random(-180,180))
  726. local hit = Lazor.Touched:connect(function(hit)
  727. if hit.Parent ~= Character and hit.Parent.Parent ~= Character and hit.Parent ~= Effects and hit.Anchored == false and hit:FindFirstChild("Vanishing") == nil then
  728. if hit.Parent:FindFirstChild("Humanoid") then
  729. hit.Parent:BreakJoints()
  730. if hit.Parent:FindFirstChild("Vanishing") == nil then
  731. local vanish = Instance.new("BoolValue",hit.Parent)
  732. vanish.Name = "Vanishing"
  733. local sound = Instance.new("Sound",hit)
  734. sound.SoundId = "rbxassetid://1025464252"
  735. sound.Volume = 10
  736. sound:Play()
  737. end
  738. else
  739. local vanish = Instance.new("BoolValue",hit)
  740. vanish.Name = "Vanishing"
  741. hit.Color = Color3.new(33/255, 102/255, 192/255)
  742. table.insert(Effects2,{hit,"Disappear",0.07,0,1,1,1})
  743. if hit:FindFirstChildOfClass("SpecialMesh") then
  744. local mesh = hit:FindFirstChildOfClass("SpecialMesh")
  745. mesh.TextureId = ""
  746. end
  747. end
  748. end
  749. end)
  750. local hit2 = sphere.Touched:connect(function(hit)
  751. if hit.Parent ~= Character and hit.Parent.Parent ~= Character and hit.Parent ~= Effects and hit.Anchored == false and hit:FindFirstChild("Vanishing") == nil then
  752. if hit.Parent:FindFirstChild("Humanoid") then
  753. hit.Parent:BreakJoints()
  754. if hit.Parent:FindFirstChild("Vanishing") == nil then
  755. local vanish = Instance.new("BoolValue",hit.Parent)
  756. vanish.Name = "Vanishing"
  757. local sound = Instance.new("Sound",hit)
  758. sound.SoundId = "rbxassetid://1025464252"
  759. sound.Volume = 10
  760. sound:Play()
  761. end
  762. else
  763. local vanish = Instance.new("BoolValue",hit)
  764. vanish.Name = "Vanishing"
  765. hit.Color = Color3.new(33/255, 102/255, 192/255)
  766. table.insert(Effects2,{hit,"Disappear",0.07,0,1,1,1})
  767. if hit:FindFirstChildOfClass("SpecialMesh") then
  768. local mesh = hit:FindFirstChildOfClass("SpecialMesh")
  769. mesh.TextureId = ""
  770. end
  771. end
  772. end
  773. end)
  774. repeat
  775. if HOLD == true then
  776. RootPart.CFrame=CFrame.new(RootPart.CFrame.p,Mouse.Hit.p) * CFrame.new(0, 0, 0)
  777. Lazor.CFrame = RootPart.CFrame + RootPart.CFrame.lookVector*515
  778. sphere.CFrame = RootPart.CFrame + RootPart.CFrame.lookVector*15
  779. Lazor.CFrame = Lazor.CFrame * CFrame.fromEulerAnglesXYZ(0,0,math.random(-180,180))
  780. if timer ==1 then
  781. Lazor.Color = Color3.new(33/255, 102/255, 192/255)
  782. sphere.Color = Color3.new(33/255, 102/255, 192/255)
  783. timer = 2
  784. elseif timer ==2 then
  785. Lazor.Color = Color3.new(33/255, 102/255, 192/255)
  786. sphere.Color = Color3.new(33/255, 102/255, 192/255)
  787. timer = 1
  788. end
  789. end
  790. Swait()
  791. until HOLD == false
  792. for i=0, 1, 0.1 / Animation_Speed/2 do
  793. Swait()
  794. Lazor.CFrame = Lazor.CFrame * CFrame.fromEulerAnglesXYZ(0,0,math.random(-180,180))
  795. RootPart.CFrame=CFrame.new(RootPart.CFrame.p,Mouse.Hit.p) * CFrame.new(0, 0, 0)
  796. Lazor.CFrame = RootPart.CFrame + RootPart.CFrame.lookVector*515
  797. sphere.CFrame = RootPart.CFrame + RootPart.CFrame.lookVector*15
  798. sphere.Anchored = true
  799. Lazor.Anchored = true
  800. sphere.Size = sphere.Size - Vector3.new(0.2,0.2,0.2)
  801. Lazor.Size = Lazor.Size - Vector3.new(0.5,0.5,0)
  802. Lazor.Transparency = Lazor.Transparency + 0.03
  803. sphere.Transparency = sphere.Transparency + 0.03
  804. raysound.Volume = raysound.Volume - 0.1
  805. if timer ==1 then
  806. Lazor.Color = Color3.new(33/255, 102/255, 192/255)
  807. sphere.Color = Color3.new(33/255, 102/255, 192/255)
  808. timer = 2
  809. elseif timer ==2 then
  810. Lazor.Color = Color3.new(33/255, 102/255, 192/255)
  811. sphere.Color = Color3.new(33/255, 102/255, 192/255)
  812. timer = 1
  813. end
  814. end
  815. RootPart.CFrame=CFrame.new(RootPart.CFrame.p,Vector3.new(Mouse.Hit.p.X,RootPart.Position.Y,Mouse.Hit.p.Z)) * CFrame.new(0, 0, 0)
  816. hit2:disconnect()
  817. hit:disconnect()
  818. raysound:Stop()
  819. raysound.Volume = 5
  820. sphere:remove()
  821. Lazor:remove()
  822. BLCF = nil
  823. SCFR = nil
  824. ATTACK = false
  825. UNANCHOR = true
  826. end
  827.  
  828. local sick = Instance.new("Sound",Character)
  829. sick.SoundId = "rbxassetid://672731096"
  830. sick.Looped = true
  831. sick.Pitch = 1
  832. sick.Volume = 10
  833. sick:Play()
  834.  
  835. local Spook = false
  836.  
  837. function spooky()
  838. Spook = true
  839. local cframe = nil
  840. local pos = nil
  841. sick:Stop()
  842. local sound = Instance.new("Sound",Effects)
  843. sound.SoundId = "rbxassetid://1025464252"
  844. sound.Volume = 10
  845. sound:Play()
  846. q = workspace:GetChildren()
  847. for i = 1, #q do
  848. g = q[i]:GetChildren()
  849. for t = 1, #g do
  850. if g[t].Name == "Torso" or g[t].Name == "UpperTorso" and q[i] ~= Character then
  851. table.insert(Effects2,{g[t],"TorsoSpin",0,0,0,0})
  852. end
  853. end
  854. end
  855. repeat
  856. Swait()
  857. until sound.Playing == false
  858. sound:remove()
  859. sick:Play()
  860. Spook = false
  861. end
  862.  
  863. --//=================================\\
  864. --|| ASSIGN THINGS TO KEYS
  865. --\\=================================//
  866.  
  867. Humanoid.Changed:connect(function(Jump)
  868. if Jump == "Jump" and (Disable_Jump == true or DISABLEJUMPING == true) then
  869. Humanoid.Jump = false
  870. end
  871. end)
  872.  
  873. function MouseDown(Mouse)
  874. if HOLD == false and ATTACK == false then
  875. HOLD = true
  876. HoldRay()
  877. elseif HOLD == true then
  878. HOLD = false
  879. end
  880. end
  881.  
  882. function MouseUp(Mouse)
  883. end
  884.  
  885. function RayCast(Position, Direction, MaxDistance, IgnoreList)
  886. return game:GetService("Workspace"):FindPartOnRayWithIgnoreList(Ray.new(Position, Direction.unit * (MaxDistance or 999.999)), IgnoreList)
  887. end
  888.  
  889. function KeyDown(Key)
  890. KEYHOLD = true
  891. if Key == "w" and HOLD == false and ATTACK == false then
  892. repeat
  893. local RayHit, RayPos = RayCast(RootPart.Position, RootPart.CFrame.lookVector*150, 1.8, {workspace})
  894. RootPart.CFrame = CFrame.new(RayPos,Mouse.Hit.p) * CFrame.new(0, 0, 0)
  895. Swait()
  896. until KEYHOLD == false
  897. end
  898. if Key == "s" and HOLD == false and ATTACK == false then
  899. repeat
  900. local RayHit, RayPos = RayCast(RootPart.Position, RootPart.CFrame.lookVector*-150, 1.8, {workspace})
  901. RootPart.CFrame = CFrame.new(RayPos,Mouse.Hit.p) * CFrame.new(0, 0, 0)
  902. Swait()
  903. until KEYHOLD == false
  904. end
  905. if Key == "z" and ATTACK == false then
  906. pew()
  907. end
  908. if Key == "f" and Spook == false then
  909. spooky()
  910. end
  911. end
  912.  
  913. function KeyUp(Key)
  914. KEYHOLD = false
  915. end
  916.  
  917. Mouse.Button1Down:connect(function(NEWKEY)
  918. MouseDown(NEWKEY)
  919. end)
  920. Mouse.Button1Up:connect(function(NEWKEY)
  921. MouseUp(NEWKEY)
  922. end)
  923. Mouse.KeyDown:connect(function(NEWKEY)
  924. KeyDown(NEWKEY)
  925. end)
  926. Mouse.KeyUp:connect(function(NEWKEY)
  927. KeyUp(NEWKEY)
  928. end)
  929.  
  930. --//=================================\\
  931. --\\=================================//
  932.  
  933.  
  934. function unanchor()
  935. if UNANCHOR == true then
  936. g = Character:GetChildren()
  937. for i = 1, #g do
  938. if g[i].ClassName == "Part" and g[i].Name ~= "HumanoidRootPart" then
  939. g[i].Anchored = false
  940. end
  941. end
  942. end
  943. RootPart.Anchored = true
  944. end
  945.  
  946.  
  947. --//=================================\\
  948. --|| WRAP THE WHOLE SCRIPT UP
  949. --\\=================================//
  950.  
  951. Humanoid.Changed:connect(function(Jump)
  952. if Jump == "Jump" and (Disable_Jump == true or DISABLEJUMPING == true) then
  953. Humanoid.Jump = false
  954. end
  955. end)
  956.  
  957. Humanoid.Died:connect(function()
  958. ATTACK = true
  959. sick:Stop()
  960. CreateSound("1025464252", workspace, 10, 1)
  961. for i = 1, 15 do
  962. local bag = Instance.new("Part",workspace)
  963. bag.Size = VT(1.8, 1.6, 1.2)
  964. bag.CFrame = RootPart.CFrame
  965. local mesh = Instance.new("SpecialMesh",bag)
  966. mesh.MeshType = "FileMesh"
  967. mesh.MeshId = "http://www.roblox.com/asset/?id=19106014"
  968. mesh.TextureId = "rbxassetid://37305301"
  969. end
  970. q = Character:GetChildren()
  971. for i = 1, #q do
  972. if q[i].ClassName == "Model" or q[i].ClassName == "Part" then
  973. q[i]:remove()
  974. end
  975. end
  976. end)
  977.  
  978. RightArm:remove()
  979. LeftArm:remove()
  980. LeftLeg:remove()
  981. RightLeg:remove()
  982. Head.Transparency = 1
  983. Torso.Transparency = 1
  984. Head:ClearAllChildren()
  985. local HandlePart = CreatePart(3, Weapon, "SmoothPlastic", 0, 0, "Really black", "Handle", VT(0.25*Player_Size,0.25*Player_Size,1.5*Player_Size))
  986. local HandleWeld = CreateWeldOrSnapOrMotor("Weld", HandlePart, Torso, HandlePart, CF(0 * Player_Size, 1 * Player_Size, 1 * Player_Size) * ANGLES(RAD(0), RAD(180), RAD(0)), CF(0, 0, 0))
  987. local mesh = Instance.new("SpecialMesh",HandlePart)
  988. mesh.MeshId = "rbxassetid://500205764"
  989. mesh.TextureId = "rbxassetid://500205767"
  990. mesh.Scale = Vector3.new(0.02,0.02,0.02)
  991.  
  992. ANIMATE.Parent = nil
  993. local IDLEANIMATION = Humanoid:LoadAnimation(ROBLOXIDLEANIMATION)
  994. IDLEANIMATION:Play()
  995.  
  996. while true do
  997. Swait()
  998. if #Effects2>0 then
  999. for e=1,#Effects2 do
  1000. if Effects2[e]~=nil then
  1001. local Thing=Effects2[e]
  1002. if Thing~=nil then
  1003. local Part=Thing[1]
  1004. local Mode=Thing[2]
  1005. local Delay=Thing[3]
  1006. local IncX=Thing[4]
  1007. local IncY=Thing[5]
  1008. local IncZ=Thing[6]
  1009. local Part2=Thing[8]
  1010. if Thing[1].Transparency<=1 then
  1011. if Thing[2]=="Block1" then
  1012. Thing[1].CFrame=Part2.CFrame
  1013. Mesh=Thing[1].Mesh
  1014. Mesh.Scale=Mesh.Scale+VT(Thing[4],Thing[5],Thing[6])
  1015. Thing[1].Transparency=Thing[1].Transparency+Thing[3]
  1016. elseif Thing[2]=="Cylinder" then
  1017. Mesh=Thing[1].Mesh
  1018. Mesh.Scale=Mesh.Scale+VT(Thing[4],Thing[5],Thing[6])
  1019. Thing[1].Transparency=Thing[1].Transparency+Thing[3]
  1020. elseif Thing[2]=="Blood" then
  1021. Mesh=Thing[7]
  1022. Thing[1].CFrame=Thing[1].CFrame*CF(0,.5,0)
  1023. Mesh.Scale=Mesh.Scale+VT(Thing[4],Thing[5],Thing[6])
  1024. Thing[1].Transparency=Thing[1].Transparency+Thing[3]
  1025. elseif Thing[2]=="Elec" then
  1026. Mesh=Thing[1].Mesh
  1027. Mesh.Scale=Mesh.Scale+VT(Thing[7],Thing[8],Thing[9])
  1028. Thing[1].Transparency=Thing[1].Transparency+Thing[3]
  1029. elseif Thing[2]=="Disappear" then
  1030. Thing[1].Transparency=Thing[1].Transparency+Thing[3]
  1031. elseif Thing[2]=="TorsoSpin" and Spook == true then
  1032. Thing[1].CFrame = CFrame.new(Thing[1].Position,Vector3.new(math.random(-180,180),math.random(-180,180),math.random(-180,180)))
  1033. end
  1034. else
  1035. Part.Parent=nil
  1036. table.remove(Effects2,e)
  1037. end
  1038. end
  1039. end
  1040. end
  1041. end
  1042. RootPart.CFrame=CFrame.new(RootPart.CFrame.p,Mouse.Hit.p) * CFrame.new(0, 0, 0)
  1043. q = Character:GetChildren()
  1044. for u = 1, #q do
  1045. if q[u].ClassName == "Accessory" or q[u].ClassName == "Hat" then
  1046. q[u]:remove()
  1047. end
  1048. end
  1049. unanchor()
  1050. Humanoid.MaxHealth = "inf"
  1051. Humanoid.Health = "inf"
  1052. if Rooted == false then
  1053. Disable_Jump = false
  1054. Humanoid.WalkSpeed = Speed
  1055. elseif Rooted == true then
  1056. Disable_Jump = true
  1057. Humanoid.WalkSpeed = 0
  1058. end
  1059. end
  1060.  
  1061. --//=================================\\
  1062. --\\=================================//
  1063.  
  1064.  
  1065.  
  1066.  
  1067.  
  1068. --//====================================================\\--
  1069. --|| END OF SCRIPT
  1070. --\\====================================================//--
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement