jordan83221

sword

Dec 24th, 2015
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 16.64 KB | None | 0 0
  1. --[[
  2.     abyssal sword
  3.     LOCALSCRIPT
  4.    
  5.     keys:
  6.         e = energy brick
  7.         c = smash
  8.         f = fall
  9.         l = lightning
  10.         click = slash
  11.         right click = lasers
  12. ]]
  13.  
  14. me = game.Players.LocalPlayer
  15.  
  16. local user = me.Character
  17.  
  18. local tool = Instance.new("Tool", me.Backpack)
  19. tool.Name = "Abyssal Sword"
  20.  
  21. local handle = Instance.new("Part", tool)
  22. handle.formFactor = "Custom"
  23. handle.CanCollide = false
  24. handle.Name = "Handle"
  25. handle.TopSurface = "Smooth"
  26. handle.BottomSurface = "Smooth"
  27. handle.Size = Vector3.new(0.3, 1, 0.3)
  28. handle.Rotation = Vector3.new(90, 0, 0)
  29.  
  30. handle.Touched:connect(function(h)
  31.     if not h:IsDescendantOf(me.Character) then
  32.         for _, a in pairs(h.Parent:GetChildren()) do
  33.             if a:IsA("Humanoid") then
  34.                 a.Health = a.Health - 20
  35.             end
  36.         end
  37.     end
  38. end)
  39.  
  40. tool.GripPos = Vector3.new(0, 0, -2)
  41. tool.GripForward = Vector3.new(-1, 0, 0)
  42. tool.GripRight = Vector3.new(0, 1, 0)
  43. tool.GripUp = Vector3.new(0, 0, 1.5)
  44.  
  45. local fp = Instance.new("Part", tool)
  46. fp.FormFactor = "Custom"
  47. fp.Transparency = 1
  48. fp.Size = Vector3.new(0.25, 0.25, 0.25)
  49.  
  50. local fire = Instance.new("Fire", fp)
  51. fire.Color = Color3.new(0, 0, 0)
  52. fire.SecondaryColor = Color3.new(255, 0, 0)
  53. fire.Size = 3
  54. fire.Heat = 0
  55.  
  56. local derp = Instance.new("SpecialMesh", handle)
  57. derp.MeshId = "http://www.roblox.com/asset/?id=61357428"
  58. derp.TextureId = "http://www.roblox.com/asset/?id=61357495 "
  59. derp.Scale = Vector3.new(2, 2, 2.5)
  60.  
  61. dist = 1.5
  62. defdist = 1.5
  63. upos = 0
  64. yrot = 90
  65. mode = 1
  66. fdist = 2
  67. updist = 0
  68.  
  69. RS = me.Character.Torso["Right Shoulder"]
  70. LS = me.Character.Torso["Left Shoulder"]
  71.  
  72. RSAnim = CFrame.new(1, 0.5, 0) * CFrame.Angles(0, math.rad(90), 0)
  73. LSAnim = CFrame.new(-1, 0.5, 0) * CFrame.Angles(0, math.rad(-90), 0)
  74.  
  75. local keys = {}
  76.  
  77. coroutine.wrap(function()
  78.     while true do
  79.         for i = 1, 40 do
  80.             dist = dist + 0.02
  81.             defdist = defdist + 0.02
  82.             wait()
  83.         end
  84.        
  85.         for i = 1, 40 do
  86.             dist = dist - 0.02
  87.             defdist = defdist - 0.02
  88.             wait()
  89.         end
  90.     end
  91. end)()
  92.  
  93. for i = 1, 6 do
  94.     local pr = Instance.new("Part", tool)
  95.     pr.FormFactor = "Custom"
  96.     pr.TopSurface = "Smooth"
  97.     pr.BottomSurface = "Smooth"
  98.     pr.Name = "derpp"
  99.     pr.Transparency = 0
  100.     pr.Anchored = true
  101.     pr.CanCollide = false
  102.    
  103.     pr.Touched:connect(function(h)
  104.         if not h:IsDescendantOf(me.Character) then
  105.             if h.Parent:FindFirstChild("Humanoid") then
  106.                 h.Parent.Humanoid:TakeDamage(10)
  107.             end
  108.         end
  109.     end)
  110.     if i == 1 or i == 3 or i == 5 then
  111.         pr.BrickColor = BrickColor.new("Really black")
  112.    
  113.     else
  114.         pr.BrickColor = BrickColor.new("Dusty Rose")
  115.     end
  116.    
  117.     pr.CanCollide = false
  118.     pr.Size = Vector3.new(0.5, 0.5, 0.5)
  119.     coroutine.wrap(function()
  120.         while true do
  121.             for r = 1, 90 do
  122.                 if mode == 1 then
  123.                     pr.CFrame = fp.CFrame * CFrame.Angles(0, math.rad((r*4)+((360/6)*i)), math.rad((r*4)+((360/5)*i))) * CFrame.new(0, 0, dist)
  124.                
  125.                 elseif mode == 2 then
  126.                     pr.CFrame = (fp.CFrame * CFrame.new(2, 0, 0)) * CFrame.Angles(math.rad((r*4)+((360/6)*i)), 0, math.rad((r*4)+((360/5)*i))) * CFrame.new(0, 0, dist)
  127.                    
  128.                 elseif mode == 3 then
  129.                     pr.CFrame = me.Character["EnergyBrick"].CFrame * CFrame.Angles(0, 0, math.rad((r*4)+((360/6)*i))) * CFrame.new(0, dist, 0)
  130.                 end
  131.                 wait()
  132.             end
  133.         end
  134.     end)()
  135. end
  136.  
  137. tool.Equipped:connect(function(m)
  138.     local w = Instance.new("Weld", handle)
  139.     w.Part0 = handle
  140.     w.Part1 = fp
  141.     w.C0 = CFrame.new(0, 0, 0.75)
  142.  
  143.     m.Button1Down:connect(function()
  144.         down = true
  145.         wait()
  146.        
  147.         for i = 1,6 do
  148.             me.Character.Torso["Right Shoulder"].C0 = me.Character.Torso["Right Shoulder"].C0 * CFrame.Angles(0, 0, math.rad(-i*4))
  149.             wait()
  150.         end
  151.        
  152.         for i = 1, 6 do
  153.             me.Character.Torso["Right Shoulder"].C0 = me.Character.Torso["Right Shoulder"].C0 * CFrame.Angles(0, 0, math.rad(i*4))
  154.             wait()
  155.         end
  156.     end)
  157.  
  158.     m.Button1Up:connect(function()
  159.         down = false
  160.     end)
  161.    
  162.     m.Button2Down:connect(function()
  163.         mode = 2
  164.         fire.Size = 6
  165.         wait(0.5)
  166.         for _, a in pairs(tool:GetChildren()) do
  167.             if a.Name == "derpp" then
  168.                 coroutine.wrap(function()
  169.                     local ray = Ray.new(a.CFrame.p, (m.Hit.p-a.CFrame.p).unit*300)
  170.                        
  171.                     local hit, pos = game.Workspace:FindPartOnRay(ray, me.Character)
  172.                        
  173.                     local h = hit
  174.                     if h then
  175.                         for _, a in pairs(h.Parent:GetChildren()) do
  176.                             if a:IsA("Humanoid") then
  177.                                 a.Health = a.Health - 20
  178.                             end
  179.                         end
  180.                     end
  181.                        
  182.                     local dis = (pos-a.CFrame.p).magnitude
  183.                        
  184.                     local beam = Instance.new("Part", user)
  185.                     beam.TopSurface = "Smooth"
  186.                     beam.BottomSurface = "Smooth"
  187.                     beam.FormFactor = "Custom"
  188.                     beam.Size = Vector3.new(1, 1, dis)
  189.                     beam.Anchored = true
  190.                     beam.BrickColor = BrickColor.new("Really black")
  191.                     beam.CanCollide = false
  192.                     beam.Transparency = 0.3
  193.                     coroutine.wrap(function()
  194.                         for d = 1, 10 do
  195.                             beam.Size = beam.Size - Vector3.new(0.1, 0.1, 0)
  196.                             beam.CFrame = CFrame.new(pos, a.CFrame.p) * CFrame.new(0, 0, -dis/2)
  197.                             wait()
  198.                         end
  199.                     end)()
  200.                     wait(0.5)
  201.                     beam:Remove()
  202.                 end)()
  203.             end
  204.         end
  205.    
  206.         wait(0.5)
  207.         mode = 1
  208.     end)
  209.    
  210.     m.Button2Up:connect(function(k)
  211.         fire.Size = 3
  212.     end)
  213.    
  214.     m.KeyDown:connect(function(key)
  215.         if key:lower() == "e" then
  216.             me.Character.Animate.Disabled = true
  217.             wait(1)
  218.             RS.C0 = RSAnim
  219.             LS.C0 = LSAnim
  220.             for _, a in pairs(tool:GetChildren()) do
  221.                 if a.Name ~= "derpp" then
  222.                     a.Transparency = 1
  223.                 end
  224.             end
  225.             fire.Enabled = false
  226.            
  227.             LS.C0 = CFrame.new(-1, 0.5, 0) * CFrame.Angles(math.rad(90), math.rad(-90), 0) * CFrame.Angles(math.rad(30), 0, 0)
  228.             RS.C0 = CFrame.new(1, 0.5, 0) * CFrame.Angles(math.rad(90), math.rad(90), 0) * CFrame.Angles(math.rad(30), 0, 0)
  229.            
  230.             coroutine.wrap(function()
  231.                 for d = 1, 30 do
  232.                     LS.C0 = CFrame.new(-1, 0.5, 0) * CFrame.Angles(math.rad(90), math.rad(-90), 0) * CFrame.Angles(math.rad((30-(d))), 0, 0)
  233.                     RS.C0 = CFrame.new(1, 0.5, 0) * CFrame.Angles(math.rad(90), math.rad(90), 0) * CFrame.Angles(math.rad(30-(d)), 0, 0)
  234.                     wait()
  235.                 end
  236.             end)()
  237.            
  238.             local ball = Instance.new("Part", me.Character)
  239.             ball.Name = "EnergyBrick"
  240.             ball.TopSurface = "Smooth"
  241.             ball.BottomSurface = "Smooth"
  242.             ball.CanCollide = false
  243.             ball.Transparency = 0.4
  244.             ball.BrickColor = BrickColor.new("Really black")
  245.             ball.Anchored = true
  246.             ball.Size = Vector3.new(1, 1, 1)
  247.             ball.FormFactor = "Custom"
  248.             ball.CFrame = me.Character.Torso.CFrame * CFrame.Angles(0, math.rad(180), 0) * CFrame.new(0, 0, fdist)
  249.             ball.Touched:connect(function(h)
  250.                 if not h:IsDescendantOf(me.Character) then
  251.                     if h:IsA("Part") and not h.Name:lower():find("base") then
  252.                         h:Destroy()
  253.                     end
  254.                 end
  255.             end)
  256.             local f = Instance.new("Fire", ball)
  257.             f.Size = 3
  258.             f.Color = Color3.new(0, 0, 0)
  259.             f.SecondaryColor = Color3.new(0, 0, 255)
  260.             wait()
  261.             mode = 3
  262.            
  263.             for d = 1, 40 do
  264.                 f.Size = f.Size + 0.25
  265.                 fdist = fdist + 0.05
  266.                 dist = dist + 0.05
  267.                 updist = updist + 0.025
  268.                 ball.Size = ball.Size + Vector3.new(0.1, 0.1, 0.1)
  269.                 ball.CFrame = me.Character.Torso.CFrame * CFrame.Angles(0, math.rad(180), 0) * CFrame.new(0, updist, fdist)
  270.                 wait()
  271.             end
  272.            
  273.             local scf = me.Character.Torso.CFrame * CFrame.Angles(0, math.rad(180), 0)
  274.             me.Character.Animate.Disabled = false
  275.             LS.C0 = CFrame.new(-1, 0.5, 0) * CFrame.Angles(0, math.rad(-90), 0)
  276.             RS.C0 = CFrame.new(1, 0.5, 0) * CFrame.Angles(0, math.rad(90), 0)
  277.             for _, a in pairs(tool:GetChildren()) do
  278.                 a.Transparency = 0
  279.             end
  280.             fp.Transparency = 1
  281.             mode = 1
  282.             dist = defdist
  283.             updist = 0
  284.             fire.Enabled = true
  285.             for i = 1, 150 do
  286.                 ball.CFrame = scf * CFrame.new(0, 0, fdist+(i*2)) * CFrame.Angles(0, 0, math.rad(i*3))
  287.                 local b2 = ball:Clone()
  288.                 b2.Fire:Destroy()
  289.                 b2.Parent = me.Character
  290.                 b2.CFrame = ball.CFrame * CFrame.Angles(0, 0, math.rad(i*3))
  291.                 b2.Touched:connect(function(h)
  292.                     if not h:IsDescendantOf(me.Character) then
  293.                         if h:IsA("Part") and not h.Name:lower():find("base") then
  294.                             h:Destroy()
  295.                         end
  296.                     end
  297.                 end)
  298.                 coroutine.wrap(function()
  299.                     wait(1)
  300.                     for i = 1, 20 do
  301.                         b2.Transparency = b2.Transparency + 0.05
  302.                         wait()
  303.                     end
  304.                     b2:Destroy()
  305.                 end)()
  306.                 wait()
  307.             end
  308.            
  309.             ball:Destroy()
  310.             fdist = 2
  311.            
  312.         elseif key:lower() == "f" then
  313.             me.Character.Animate.Disabled = true
  314.             wait(1)
  315.             RS.C0 = RSAnim
  316.             LS.C0 = LSAnim
  317.             for i = 1, 11 do
  318.                 LS.C0 = CFrame.new(-0.75, 0.5, -0.5) * CFrame.Angles(math.rad(i*8), math.rad(-90), 0) * CFrame.Angles(math.rad(i*2), 0, 0)
  319.                 RS.C0 = CFrame.new(0.75, 0.5, -0.5) * CFrame.Angles(math.rad(i*8), math.rad(90), 0) * CFrame.Angles(math.rad(i*2), 0, 0)
  320.                 wait()
  321.             end
  322.            
  323.             local bp = Instance.new("BodyPosition", me.Character.Torso)
  324.             bp.maxForce = Vector3.new(0, 9999, 0)
  325.             coroutine.wrap(function()
  326.                 for rs = 1, 10 do
  327.                     bp.position = me.Character.Head.Position + Vector3.new(0, 4, 0)
  328.                     wait()
  329.                 end
  330.             end)()
  331.            
  332.             for an = 1, 30 do
  333.                 LS.C0 = CFrame.new(-0.75, 0.5, -0.5) * CFrame.Angles(math.rad(90+(an)), math.rad(-90), 0) * CFrame.Angles(math.rad(45), 0, 0)
  334.                 RS.C0 = CFrame.new(0.75, 0.5, -0.5) * CFrame.Angles(math.rad(90+(an)), math.rad(90), 0) * CFrame.Angles(math.rad(45), 0, 0)
  335.                 wait()
  336.             end
  337.             wait(0.5)
  338.             bp:Remove()
  339.             for an = 1, 7 do
  340.                 LS.C0 = CFrame.new(-0.75, 0.5, -0.5) * CFrame.Angles(math.rad(90-(an*9)), math.rad(-90), 0) * CFrame.Angles(math.rad(45), 0, 0)
  341.                 RS.C0 = CFrame.new(0.75, 0.5, -0.5) * CFrame.Angles(math.rad(90-(an*9)), math.rad(90), 0) * CFrame.Angles(math.rad(45), 0, 0)
  342.                 wait()
  343.             end
  344.             wait(0.25)
  345.             local ex = Instance.new("Part", me.Character)
  346.             ex.Size = Vector3.new(1, 1, 1)
  347.             ex.Transparency = 0.4
  348.             ex.BrickColor = BrickColor.new("Deep orange")
  349.            
  350.             local msh = Instance.new("SpecialMesh", ex)
  351.             msh.MeshType = "FileMesh"
  352.             msh.MeshId = "http://www.roblox.com/asset/?id=1323306"
  353.             msh.Scale = Vector3.new(0.5, 0.5, 0.5)
  354.            
  355.             ex.Position = handle.Position
  356.             ex.Anchored = true
  357.            
  358.             for i = 1, 20 do
  359.                 msh.Scale = msh.Scale + Vector3.new(3, 3, 3)
  360.                 for _, a in pairs(game.Players:GetChildren()) do
  361.                     if a.Name ~= me.Name and (a.Character.Torso.Position-ex.Position).magnitude <= i*2 then
  362.                         for _, b in pairs(a.Character:GetChildren()) do
  363.                             if b:IsA("Humanoid") then
  364.                                 b.Health = b.Health - 10
  365.                             end
  366.                         end
  367.                     end
  368.                 end
  369.                 wait()
  370.             end
  371.            
  372.             for i = 1, 12 do
  373.                 ex.Transparency = ex.Transparency + 0.05
  374.                 wait()
  375.             end
  376.             ex:Remove()
  377.             LS.C0 = CFrame.new(-1, 0.5, 0) * CFrame.Angles(0, math.rad(-90), 0)
  378.             RS.C0 = CFrame.new(1, 0.5, 0) * CFrame.Angles(0, math.rad(90), 0)
  379.             wait()
  380.             me.Character.Animate.Disabled = false
  381.            
  382.         elseif key:lower() == "l" then
  383.             me.Character.Animate.Disabled = true
  384.             wait(1)
  385.             RS.C0 = RSAnim
  386.             LS.C0 = LSAnim
  387.             for i = 1, 60 do
  388.                 LS.C0 = CFrame.new(-1, 0.5, 0) * CFrame.Angles(math.rad(90), math.rad(-90), 0) * CFrame.Angles(math.rad(-90), 0, -math.rad(i))
  389.                 RS.C0 = CFrame.new(1, 0.5, 0) * CFrame.Angles(math.rad(90), math.rad(90), 0)  * CFrame.Angles(math.rad(-90), 0, math.rad(i))
  390.                 wait()
  391.             end
  392.            
  393.             local beam = Instance.new("Part", me.Character)
  394.             beam.Size = Vector3.new(5, 300, 5)
  395.             beam.CanCollide = false
  396.             beam.CFrame = me.Character.Torso.CFrame * CFrame.new(0, (300/2)-2, 0)
  397.             beam.TopSurface = "Smooth"
  398.             beam.BottomSurface = "Smooth"
  399.             beam.BrickColor = BrickColor.new("New Yeller")
  400.             beam.Anchored = true
  401.             beam.Transparency = 0.3
  402.             wait(0.4)
  403.             for e = 1, 14 do
  404.                 beam.Transparency = beam.Transparency + 0.05
  405.                 wait()
  406.             end
  407.             beam:Remove()
  408.             local m = Instance.new("ForceField", me.Character)
  409.             for i = 1, 40 do
  410.                 d1 = math.random(-200, 200)
  411.                 d2 = math.random(-200, 200)
  412.                 local ltn = Instance.new("Part", game.Workspace)
  413.                 ltn.Size = Vector3.new(3, 300, 3)
  414.                 ltn.CanCollide = false
  415.                 ltn.CFrame = CFrame.new(d1, 0, d2) * CFrame.new(0, 300/2, 0)
  416.                 ltn.TopSurface = "Smooth"
  417.                 ltn.BottomSurface = "Smooth"
  418.                 ltn.BrickColor = BrickColor.new("Deep blue")
  419.                 ltn.Anchored = true
  420.                 ltn.Transparency = 0.3
  421.                 local ex = Instance.new("Explosion")
  422.                 ex.Position = Vector3.new(d1, 0.5, d2)
  423.                 ex.BlastRadius = 10
  424.                 wait()
  425.                 ex.Parent = game.Workspace
  426.                 game.Lighting.Ambient = Color3.new(1, 1, 1)
  427.                 wait(0.125)
  428.                 ltn:Destroy()
  429.                 game.Lighting.Ambient = Color3.new(0.5, 0.5, 0.5)
  430.             end
  431.             m:Remove()
  432.             LS.C0 = CFrame.new(-1, 0.5, 0) * CFrame.Angles(0, math.rad(-90), 0)
  433.             RS.C0 = CFrame.new(1, 0.5, 0) * CFrame.Angles(0, math.rad(90), 0)
  434.             wait()
  435.             me.Character.Animate.Disabled = false
  436.            
  437.         elseif key:lower() == "c" then
  438.             me.Character.Animate.Disabled = true
  439.             wait(1)
  440.             RS.C0 = RSAnim
  441.             LS.C0 = LSAnim
  442.             for _, a in pairs(tool:GetChildren()) do
  443.                 a.Transparency = 1
  444.             end
  445.             fire.Enabled = false
  446.            
  447.             local s = Instance.new("Part", me.Character)
  448.             s.Transparency = 0
  449.             s.Name = "StrikeSword"
  450.            
  451.             local w = Instance.new("Weld", s)
  452.             w.Part0 = me.Character["Right Arm"]
  453.             w.Part1 = s
  454.             w.C0 = CFrame.new(0, -1, -2) * CFrame.Angles(math.rad(180), 0, 0)
  455.            
  456.             local derpe = Instance.new("SpecialMesh", s)
  457.             derpe.MeshType = "FileMesh"
  458.             derpe.MeshId = "http://www.roblox.com/asset/?id=61357428"
  459.             derpe.TextureId = "http://www.roblox.com/asset/?id=61357495"
  460.             derpe.Scale = Vector3.new(2, 2, 2.5)
  461.             for i = 1, 35 do
  462.                 LS.C0 = CFrame.new(-1, 0.5, 0) * CFrame.Angles(math.rad(20+(i*3)), math.rad(-90), 0) * CFrame.Angles(math.rad(i+20), 0, 0)
  463.                 RS.C0 = CFrame.new(1, 0.5, 0) * CFrame.Angles(math.rad(20+(i*3)), math.rad(90), 0) * CFrame.Angles(math.rad(i+20), 0, 0)
  464.                 wait()
  465.             end
  466.            
  467.             wait(1)
  468.            
  469.             for i = 1, 30 do
  470.                 derpe.Scale = derpe.Scale + Vector3.new(0.2, 0.2, 0.2)
  471.                 w.C0 = CFrame.new(0, -1, -2-i/3) * CFrame.Angles(math.rad(180), 0, 0)
  472.                 wait()
  473.             end
  474.            
  475.             wait(0.125)
  476.            
  477.             for i = 1, 17 do
  478.                 LS.C0 = CFrame.new(-1, 0.5, 0) * CFrame.Angles(math.rad(110-(i*6)), math.rad(-90), 0)
  479.                 RS.C0 = CFrame.new(1, 0.5, 0) * CFrame.Angles(math.rad(110-(i*6)), math.rad(90), 0)
  480.                 wait()
  481.             end
  482.             wait(0.125)
  483.             local ex = Instance.new("Part", me.Character)
  484.             ex.Size = Vector3.new(1, 1, 1)
  485.             ex.Transparency = 0.4
  486.             ex.BrickColor = BrickColor.new("Deep orange")
  487.            
  488.             local msh = Instance.new("SpecialMesh", ex)
  489.             msh.MeshType = "FileMesh"
  490.             msh.MeshId = "http://www.roblox.com/asset/?id=1323306"
  491.             msh.Scale = Vector3.new(0.5, 0.5, 0.5)
  492.            
  493.             ex.Position = s.Position
  494.             ex.Anchored = true
  495.            
  496.             coroutine.wrap(function()
  497.                 s:Destroy()
  498.                 for _, a in pairs(tool:GetChildren()) do
  499.                     a.Transparency = 0
  500.                 end
  501.                 fp.Transparency = 1
  502.                 fire.Enabled = true
  503.                 me.Character.Animate.Disabled = false
  504.             end)()
  505.            
  506.             for i = 1, 20 do
  507.                 msh.Scale = msh.Scale + Vector3.new(3, 3, 3)
  508.                 for _, a in pairs(game.Players:GetChildren()) do
  509.                     if a.Name ~= me.Name and (a.Character.Torso.Position-ex.Position).magnitude <= i*2 then
  510.                         for _, b in pairs(a.Character:GetChildren()) do
  511.                             if b:IsA("Humanoid") then
  512.                                 b.Health = b.Health - 10
  513.                             end
  514.                         end
  515.                     end
  516.                 end
  517.                 wait()
  518.             end
  519.            
  520.             for i = 1, 12 do
  521.                 ex.Transparency = ex.Transparency + 0.05
  522.                 wait()
  523.             end
  524.         end
  525.     end)
  526.  
  527.     me.Character.Humanoid.Died:connect(function()
  528.         local ex = Instance.new("Explosion")
  529.         ex.Position = handle.Position
  530.         ex.BlastRadius = 100
  531.         ex.BlastPressure = 1e6
  532.         wait()
  533.         ex.Parent = game.Workspace
  534.     end)
  535. end)
  536.  
  537. tool.Unequipped:connect(function()
  538. end)
Add Comment
Please, Sign In to add comment