Advertisement
wulfbawg

[ROBLOX] Incomplete Sword thingy 3

Jun 14th, 2017
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 47.71 KB | None | 0 0
  1. -- yo this was made by Wulfchow (formerly wulfbug9)
  2. -- i made this in anywhere from 2013 to 2015
  3. -- enjoy this incomplete mess haha
  4.  
  5. CN, CA, V3, BC, C3 = CFrame.new, CFrame.Angles, Vector3.new, BrickColor.new, Color3.new
  6. Ins, Abs, Sin, Cos, Rad, Pi = Instance.new, math.abs, math.sin, math.cos, math.rad, math.pi
  7. Random = function(A)
  8.     return ( math.random() - .5) * 2 * (A or 1)
  9. end
  10. Part = function(Parent, CFrame, Size, Colour, Material, Transparency, Anchored, CanCollide, Type)
  11.     local P = Ins(Type or "Part")
  12.     P.FormFactor = "Custom"
  13.     P.Size = Size
  14.     P.Anchored = Anchored
  15.     P.Material = Material
  16.     P.BrickColor = BC(Colour)
  17.     P.Transparency = Transparency
  18.     P.CanCollide = CanCollide
  19.     P.TopSurface, P.BottomSurface, P.LeftSurface, P.RightSurface, P.FrontSurface, P.BackSurface = 10, 10, 10, 10, 10, 10
  20.     P.CFrame = CFrame
  21.     P.Parent = Parent
  22.     P.Locked = true
  23.     return P
  24. end
  25. Weld = function(P0, P1, C0, C1)
  26.     local W = Ins("Weld", P0)
  27.     W.Part0 = P0
  28.     W.Part1 = P1
  29.     W.C0 = C0 or CN()
  30.     W.C1 = C1 or CN()
  31.     return W
  32. end
  33. New = function(Object, Parent, Data)
  34.     local Object = Ins(Object)
  35.     for Index, Value in pairs(Data or {}) do
  36.         Object[Index] = Value
  37.     end
  38.     Object.Parent = Parent
  39.     return Object
  40. end
  41. GetComplementingColour = function(Colour3)
  42.     local R, G, B = Colour3.r, Colour3.g, Colour3.b
  43.     local NR, NG, NB = R * 255, G * 255, B * 255
  44.     local R2, G2, B2 = Abs(Random(255)), Abs(Random(255)), Abs(Random(255))
  45.     R2, G2, B2 = (R2 + NR) / 2, (G2 + NG) / 2, (B2 + NB) / 2
  46.     return C3(R2 / 255, G2 / 255, B2 / 255)
  47. end
  48. Midpoint = function(CF0, CF1)
  49.     local C0, C1 = {CF0.X, CF0.Y, CF0.Z, CF0:toEulerAnglesXYZ()}, {CF1.X, CF1.Y, CF1.Z, CF1:toEulerAnglesXYZ()}
  50.     for i, v in pairs(C0) do
  51.         C0[i] = (v + C1[i]) / 2
  52.     end
  53.     return CN(C0[1], C0[2], C0[3]) * CA(C0[4], C0[5], C0[6])
  54. end
  55. do -- > Triangle Trail.
  56.     local Trailing = false
  57.     local Last = {
  58.         [1] = nil,
  59.         [2] = nil,
  60.     }
  61.     local TConnect
  62.     local function Modify(Data)
  63.         for i, v in pairs(Data) do
  64.             if i ~= 1 then
  65.                 Data[1][i] = v
  66.             end
  67.         end
  68.         return Data[1]
  69.     end
  70.     local function CFrameFromTopBack(At, Top, Back)
  71.         local Right = Top:Cross(Back)
  72.         return CFrame.new(At.x, At.y, At.z,
  73.             Right.x, Top.x, Back.x,
  74.             Right.y, Top.y, Back.y,
  75.             Right.z, Top.z, Back.z)
  76.     end
  77.     function Triangle(Parent, A, B, C, Colour)
  78.         local P1 = Modify{Instance.new("WedgePart"), Anchored = true, FormFactor = "Custom", TopSurface = 0, BottomSurface = 0, BrickColor = BrickColor.new(Colour),
  79.             Transparency = .3, CanCollide = false,
  80.             BottomSurface = 10, TopSurface = 10, FrontSurface = 10, BackSurface = 10, LeftSurface = 10, RightSurface = 10}
  81.         local P2 = Modify{Instance.new("WedgePart"), Anchored = true, FormFactor = "Custom", TopSurface = 0, BottomSurface = 0, BrickColor = BrickColor.new(Colour),
  82.             Transparency = .3, CanCollide = false,
  83.             BottomSurface = 10, TopSurface = 10, FrontSurface = 10, BackSurface = 10, LeftSurface = 10, RightSurface = 10}
  84.         Modify{Instance.new("SpecialMesh",P1), MeshType = "Wedge", Scale = Vector3.new(0,1,1)}
  85.         Modify{Instance.new("SpecialMesh",P2), MeshType = "Wedge", Scale = Vector3.new(0,1,1)}
  86.         local AB, BC, CA = B-A, C-B, A-C
  87.         local ABM, BCM, CAM = AB.magnitude, BC.magnitude, CA.magnitude
  88.         local Edge1 = math.abs(0.5 + CA:Dot(AB)/(ABM*ABM))
  89.         local Edge2 = math.abs(0.5 + AB:Dot(BC)/(BCM*BCM))
  90.         local Edge3 = math.abs(0.5 + BC:Dot(CA)/(CAM*CAM))
  91.         if Edge1 < Edge2 then
  92.             if Edge1 < Edge3 then
  93.             else
  94.                 A, B, C = C, A, B
  95.                 AB, BC, CA = CA, AB, BC
  96.                 ABM = CAM
  97.             end
  98.         else
  99.             if Edge2 < Edge3 then
  100.                 A, B, C = B, C, A
  101.                 AB, BC, CA = BC, CA, AB
  102.                 ABM = BCM
  103.             else
  104.                 A, B, C = C, A, B
  105.                 AB, BC, CA = CA, AB, BC
  106.                 ABM = CAM
  107.             end
  108.         end
  109.         local Len1 = -CA:Dot(AB)/ABM
  110.         local Len2 = ABM - Len1
  111.         local Width = (CA + AB.unit*Len1).magnitude
  112.         local MainCF = CFrameFromTopBack(A, AB:Cross(BC).unit, -AB.unit)
  113.         P1.Name = "WulfEffect"
  114.         P1.Parent = Parent
  115.         P1.Size = Vector3.new(0.2, Width, Len1)
  116.         P1.CFrame = MainCF * CFrame.Angles(math.pi, 0, math.pi/2) * CFrame.new(0, Width/2, Len1/2)
  117.         P2.Name = "WulfEffect"
  118.         P2.Parent = Parent
  119.         P2.Size = Vector3.new(0.2, Width, Len2)
  120.         P2.CFrame = MainCF * CFrame.Angles(math.pi, math.pi, -math.pi/2) * CFrame.new(0, Width/2, -Len1 - Len2/2)
  121.         return P1, P2
  122.     end
  123.     function StartTrail(Part, Colour)
  124.         Colour = Colour or "White"
  125.         Trailing = true
  126.         TConnect = game:service("RunService").Heartbeat:connect(function()
  127.             local P0 = Part.CFrame * CFrame.new(0, Part.Size.Y/2, 0)
  128.             local P1 = Part.CFrame * CFrame.new(0, -Part.Size.Y/2, 0)
  129.             if Last[1] and Last[2] then
  130.                 local A, B = Triangle(workspace, P0.p, Last[1].p, Last[2].p, Colour)
  131.                 local C, D = Triangle(workspace, P0.p, P1.p, Last[2].p, Colour)
  132.                 Spawn(function()
  133.                     for i = .4, 1, .05 do
  134.                         wait()
  135.                         A.Transparency, B.Transparency, C.Transparency, D.Transparency = i, i, i, i
  136.                     end
  137.                     A:Destroy()
  138.                     B:Destroy()
  139.                     C:Destroy()
  140.                     D:Destroy()
  141.                 end)
  142.             end
  143.             Last[1] = P0
  144.             Last[2] = P1
  145.         end)
  146.     end
  147.     function StopTrail()
  148.         TConnect:disconnect()
  149.         Trailing = false
  150.         Last[1] = nil
  151.         Last[2] = nil
  152.     end
  153. end
  154. do -- Credit to stravant.
  155.     function QuaternionFromCFrame(cf)
  156.         local mx,  my,  mz,
  157.             m00, m01, m02,
  158.             m10, m11, m12,
  159.             m20, m21, m22 = cf:components()
  160.         local trace = m00 + m11 + m22
  161.         if trace > 0 then
  162.             local s = math.sqrt(1 + trace)
  163.             local recip = 0.5/s
  164.             return (m21-m12)*recip, (m02-m20)*recip, (m10-m01)*recip, s*0.5
  165.         else
  166.             local i = 0
  167.             if m11 > m00 then i = 1 end
  168.             if m22 > (i == 0 and m00 or m11) then i = 2 end
  169.             if i == 0 then
  170.                 local s = math.sqrt(m00-m11-m22+1)
  171.                 local recip = 0.5/s
  172.                 return 0.5*s, (m10+m01)*recip, (m20+m02)*recip, (m21-m12)*recip
  173.             elseif i == 1 then
  174.                 local s = math.sqrt(m11-m22-m00+1)
  175.                 local recip = 0.5/s
  176.                 return (m01+m10)*recip, 0.5*s, (m21+m12)*recip, (m02-m20)*recip
  177.             elseif i == 2 then
  178.                 local s = math.sqrt(m22-m00-m11+1)
  179.                 local recip = 0.5/s
  180.                 return (m02+m20)*recip, (m12+m21)*recip, 0.5*s, (m10-m01)*recip
  181.             end
  182.         end
  183.     end
  184.     function QuaternionToCFrame(px, py, pz, x, y, z, w)
  185.         local xs, ys, zs = x + x, y + y, z + z
  186.         local wx, wy, wz = w*xs, w*ys, w*zs
  187.         local xx = x*xs
  188.         local xy = x*ys
  189.         local xz = x*zs
  190.         local yy = y*ys
  191.         local yz = y*zs
  192.         local zz = z*zs
  193.         return CFrame.new(px,py,pz,
  194.             1-(yy+zz), xy - wz,   xz + wy,
  195.             xy + wz,   1-(xx+zz), yz - wx,
  196.             xz - wy,   yz + wx,   1-(xx+yy))
  197.     end
  198.     function QuaternionSlerp(a, b, t)
  199.         local cosTheta = a[1]*b[1] + a[2]*b[2] + a[3]*b[3] + a[4]*b[4]
  200.         local startInterp, finishInterp;
  201.         if cosTheta >= 0.0001 then
  202.             if (1 - cosTheta) > 0.0001 then
  203.                 local theta = math.acos(cosTheta)
  204.                 local invSinTheta = 1/math.sin(theta)
  205.                 startInterp = math.sin((1-t)*theta)*invSinTheta
  206.                 finishInterp = math.sin(t*theta)*invSinTheta
  207.             else
  208.                 startInterp = 1-t
  209.                 finishInterp = t
  210.             end
  211.         else
  212.             if (1+cosTheta) > 0.0001 then
  213.                 local theta = math.acos(-cosTheta)
  214.                 local invSinTheta = 1/math.sin(theta)
  215.                 startInterp = math.sin((t-1)*theta)*invSinTheta
  216.                 finishInterp = math.sin(t*theta)*invSinTheta
  217.             else
  218.                 startInterp = t-1
  219.                 finishInterp = t
  220.             end
  221.         end
  222.         return a[1]*startInterp + b[1]*finishInterp,
  223.             a[2]*startInterp + b[2]*finishInterp,
  224.             a[3]*startInterp + b[3]*finishInterp,
  225.             a[4]*startInterp + b[4]*finishInterp
  226.     end
  227. end
  228. Welds = {}
  229. function StopWeld(Weld)
  230.     if Welds[Weld] and Welds[Weld][1] == true then
  231.         Weld[Weld][2] = true
  232.     end
  233. end
  234. function TweenWeld(Weld, C, Start, Finish, Length, Sync)
  235.     if Welds[Weld] and Welds[Weld][1] == true then
  236.         return
  237.     elseif not Welds[Weld] then
  238.         Welds[Weld] = {false, false}
  239.     end
  240.     local function Tween()
  241.         if Welds[Weld][1] == true then return end
  242.         Welds[Weld][1] = true
  243.         local s = {QuaternionFromCFrame(Start)}
  244.         local f = {QuaternionFromCFrame(Finish)}
  245.         local sx, sy, sz = Start.x, Start.y, Start.z
  246.         local fx, fy, fz = Finish.x, Finish.y, Finish.z
  247.         for i = 1, Length do
  248.             if Welds[Weld][2] then break end
  249.             local sp = i / Length
  250.             local _sp = 1 - sp
  251.             Weld["C" .. C] = QuaternionToCFrame(_sp*sx + sp*fx, _sp*sy + sp*fy, _sp*sz + sp*fz,
  252.                 QuaternionSlerp(s, f, sp))
  253.             game:service("RunService").Stepped:wait()
  254.         end
  255.         Welds[Weld][2] = false
  256.         Welds[Weld][1] = false
  257.     end
  258.     if Sync then Spawn(Tween) else Tween() end
  259. end
  260.  
  261. -----------------------------------------------------------------------------------------------------
  262.  
  263. Player = game:service("Players").LocalPlayer
  264. Mouse = Player:GetMouse()
  265. Backpack = Player:WaitForChild("Backpack")
  266. Character = Player.Character
  267. Torso = Character:WaitForChild("Torso")
  268. HRP = Character:WaitForChild("HumanoidRootPart")
  269. RA = Character:WaitForChild("Right Arm")
  270. LA = Character:WaitForChild("Left Arm")
  271. RL =  Character:WaitForChild("Right Leg")
  272. LL =  Character:WaitForChild("Left Leg")
  273. Head = Character:WaitForChild("Head")
  274. ORS = Torso:WaitForChild("Right Shoulder")
  275. OLS = Torso:WaitForChild("Left Shoulder")
  276. Humanoid = Character:WaitForChild("Humanoid")
  277. Asset = "rbxassetid://"
  278. Meshes = {Cone = "1033714", Ring = "3270017", Blast = "20329976", Diamond = "9756362", Spike = "1033714", Skull = "4770583"}
  279. C0 = {
  280.     LS = CN(-1, 0.5, 0),
  281.     RS = CN(1, 0.5, 0),
  282.     LH = CN(-1, -1, 0),
  283.     RH = CN(1, -1, 0),
  284.     NK = CN(0, 1, 0),
  285.     TW = CN(0, 0, 0),
  286. }
  287. C1 = {
  288.     LS = CN(0.5, 0.5, 0),
  289.     RS = CN(-0.5, 0.5, 0),
  290.     LH = CN(-.5, 1, 0),
  291.     RH = CN(.5, 1, 0),
  292.     NK = CN(0, -.5, 0),
  293.     TW = CN(0, 0, 0),
  294. }
  295. OC0 = {
  296.     RS = CN(1, .5, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0),
  297.     LS = CN(-1, .5, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0),
  298.     RH = CN(1, -1, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0),
  299.     LH = CN(-1, -1, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0),
  300.     NK = CN(0, 1, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0),
  301.     TW = CN(0, 0, 0, -1, -0, -0, 0, 0, 1, 0, 1, -0)
  302. }
  303. OC1 = {
  304.     RS = CN(.5, .5, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0),
  305.     LS = CN(-.5, .5, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0),
  306.     RH = CN(-.5, .5, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0),
  307.     LH = CN(.5, .5, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0),
  308.     NK = CN(0, -.5, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1),
  309.     TW = CN(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1),
  310. }
  311. Attacking = false
  312. SpiritOn = false
  313. WolfOn = false
  314. SwordInactive = false
  315. local TW, NK, RS, LS
  316.  
  317. pcall(game.Destroy, Character:FindFirstChild("Sword"))
  318. Model = New("Model", Character, { Name = "Sword" })
  319. Handle = Part(Model, CN(), V3(.4, 3, .4), "Gun metallic", "Concrete", 0, false, false)
  320. New("CylinderMesh", Handle)
  321. HandleW = Weld(Torso, Handle, CN(1, -1, .5) * CA(0, 0, Pi/4))
  322. for i = 0, 3, .25 do
  323.     local P = Part(Model, CN(), V3(.5, .2, .5), "Red flip/flop", "Concrete", 0, false, false)
  324.     New("SpecialMesh", P, { MeshType = "Sphere" })
  325.     Weld(Handle, P, CN(0, -1.5, 0) * CN(0, i, 0) * CA(Pi/6, 0, 0))
  326. end
  327. for i = 0, 1, .25 do
  328.     local P = Part(Model, CN(), V3(.5, .5, .5), "Red flip/flop", "Concrete", 0, false, false)
  329.     Weld(Handle, P, CN(0, -1.5, 0) * CA(i, i, i))
  330. end
  331. P1 = Part(Model, CN(), V3(.6, .3, .6), "Red flip/flop", "Concrete", 0, false, false)
  332. New("SpecialMesh", P1, { MeshType = "Sphere" })
  333. Weld(Handle, P1, CN(0, 1.5, 0))
  334. P2 = Part(Model, CN(), V3(.75, .3, .75), "Red flip/flop", "Concrete", 0, false, false)
  335. New("SpecialMesh", P2, { MeshType = "Sphere" })
  336. Weld(P1, P2, CN(0, .125, 0))
  337. Div = Part(Model, CN(), V3(2, .5, .5), "Gun metallic", "Concrete", 0, false, false)
  338. Weld(Handle, Div, CN(0, 1.75 + .125, 0))
  339. P3 = Part(Model, CN(), V3(.5, .5, 0), "Gun metallic", "Concrete", 0, false, false, "WedgePart")
  340. Weld(Div, P3, CN(-1.1, 0, 0) * CA(Pi, Pi/2, 0))
  341. P4 = Part(Model, CN(), V3(.5, .5, 0), "Gun metallic", "Concrete", 0, false, false, "WedgePart")
  342. Weld(Div, P4, CN(1.1, 0, 0) * CA(Pi, -Pi/2, 0))
  343. P5 = Part(Model, CN(), V3(.5, 0, 0), "Gun metallic", "Concrete", 0, false, false, "WedgePart")
  344. Weld(Div, P5, CN(-.9, -.35, 0) * CA(Pi, Pi/2, 0))
  345. P6 = Part(Model, CN(), V3(.5, 0, 0), "Gun metallic", "Concrete", 0, false, false, "WedgePart")
  346. Weld(Div, P6, CN(.9, -.35, 0) * CA(Pi, -Pi/2, 0))
  347. BladeStart = Part(Model, CN(), V3(2.25, .75, .4), "Gun metallic", "Concrete", 0, false, false)
  348. Weld(Div, BladeStart, CN(0, .375 + .25, 0))
  349. Blade = Part(Model, CN(), V3(1.75, 8, .4), "Silver", "Concrete", 0, false, false)
  350. Weld(BladeStart, Blade, CN(0, 4.375, 0))
  351. Edge1 = Part(Model, CN(), V3(.3, 8, .3), "Silver", "Concrete", 0, false, false)
  352. New("BlockMesh", Edge1, { Scale = V3(.95, 1, .95) })
  353. Weld(Blade, Edge1, CN(1.75 / 2, 0, 0) * CA(0, Pi/4, 0))
  354. Edge2 = Part(Model, CN(), V3(.3, 8, .3), "Silver", "Concrete", 0, false, false)
  355. New("BlockMesh", Edge2, { Scale = V3(.95, 1, .95) })
  356. Weld(Blade, Edge2, CN(-1.75 / 2, 0, 0) * CA(0, Pi/4, 0))
  357. Top = Part(Model, CN(), V3(1.25, 1.25, .4), "Silver", "Concrete", 0, false, false)
  358. New("BlockMesh", Top, { Scale = V3(1, 1, .999) })
  359. Weld(Blade, Top, CN(0, 4, 0) * CA(0, 0, Pi/4))
  360. Edge3 = Part(Model, CN(), V3(.3, 1.25, .3), "Silver", "Concrete", 0, false, false)
  361. New("BlockMesh", Edge3, { Scale = V3(.95, 1, .95) })
  362. Weld(Top, Edge3, CN(1.25 / 2, 0, 0) * CA(0, Pi/4, 0))
  363. Edge4 = Part(Model, CN(), V3(.3, 1.25, .3), "Silver", "Concrete", 0, false, false)
  364. New("BlockMesh", Edge4, { Scale = V3(.95, 1, .95) })
  365. Weld(Top, Edge4, CA(0, 0, Pi/2) * CN(1.25 / 2, 0, 0) * CA(0, -Pi/4, 0))
  366. D1 = Part(Model, CN(), V3(.3, .3, .425), "Light blue", "Concrete", 0, false, false)
  367. Weld(Blade, D1, CN(0, -3, 0) * CA(0, 0, Pi/4))
  368. D2 = Part(Model, CN(), V3(.3, .625, .425), "Light blue", "Concrete", 0, false, false)
  369. Weld(Blade, D2, CN(.125, -2.5, 0) * CA(0, 0, Pi/4))
  370. D3 = Part(Model, CN(), V3(.3, .625, .425), "Light blue", "Concrete", 0, false, false)
  371. Weld(Blade, D3, CN(-.125, -2.5, 0) * CA(0, 0, -Pi/4))
  372. D4 = Part(Model, CN(), V3(.3, .625, .425), "Light blue", "Concrete", 0, false, false)
  373. Weld(Blade, D4, CN(.125, -1.5, 0) * CA(0, 0, -Pi/4))
  374. D5 = Part(Model, CN(), V3(.3, .625, .425), "Light blue", "Concrete", 0, false, false)
  375. Weld(Blade, D5, CN(-.125, -1.5, 0) * CA(0, 0, Pi/4))
  376. D6 = Part(Model, CN(), V3(.3, .3, .425), "Light blue", "Concrete", 0, false, false)
  377. Weld(Blade, D6, CN(0, -1, 0) * CA(0, 0, Pi/4))
  378.  
  379. TP1 = Part(Model, CN(), V3(0, 0, 0), "White", "Concrete", 1, false, false)
  380. Weld(Blade, TP1, CN(0, Blade.Size.Y / 2, 0))
  381.  
  382. C0.HW = CN(0, 0, -.5)
  383.  
  384. function CrownExplode(CF, Size, Colour)
  385.     local Part = Part(workspace, CF, V3(Size, Size, Size), Colour, "SmoothPlastic", 0.4, true, false)
  386.     Part.Name = "WulfEffect"
  387.     local Mesh = New("FileMesh", Part, { MeshId = Asset .. Meshes.Blast, Scale = V3(Size, Size, Size) })
  388.     New("PointLight", Part, { Color = BC(Colour).Color, Range = Size * 2 })
  389.     Spawn(function()
  390.         for i = .4, 1.05, .05 do
  391.             Part.Transparency = i
  392.             Mesh.Scale = Mesh.Scale + V3(1, 1, 1)
  393.             wait()
  394.         end
  395.         Part:Destroy()
  396.     end)
  397. end
  398. function CrownSpin(CF, Size, Colour)
  399.     local Part = Part(workspace, CF, V3(Size, Size, Size), Colour, "SmoothPlastic", 0.4, true, false)
  400.     Part.Name = "WulfEffect"
  401.     local Mesh = New("FileMesh", Part, { MeshId = Asset .. Meshes.Blast, Scale = V3(Size, Size, Size) })
  402.     New("PointLight", Part, { Color = BC(Colour).Color, Range = Size * 2 })
  403.     local Rot = 0
  404.     Spawn(function()
  405.         for i = .4, 1.05, .05 do
  406.             Part.Transparency = i
  407.             Part.CFrame = CF * CA(0, Rad(Rot), 0)
  408.             wait()
  409.             Rot = Rot + 2
  410.         end
  411.         Part:Destroy()
  412.     end)
  413. end
  414. function SphereExplode(CF, Size, Colour)
  415.     local Part = Part(workspace, CF, V3(Size, Size, Size), Colour, "SmoothPlastic", 0.4, true, false)
  416.     Part.Name = "WulfEffect"
  417.     local Mesh = New("SpecialMesh", Part, { MeshType = "Sphere" })
  418.     New("PointLight", Part, { Color = BC(Colour).Color, Range = Size * 2 })
  419.     Spawn(function()
  420.         for i = .4, 1.05, .05 do
  421.             Part.Transparency = i
  422.             Mesh.Scale = Mesh.Scale + V3(.5, .5, .5)
  423.             wait()
  424.         end
  425.         Part:Destroy()
  426.     end)
  427. end
  428. function BrickExplode(CF, Size, Colour)
  429.     local Part = Part(workspace, CF * CA(Random(Pi * 2), Random(Pi * 2), Random(Pi * 2)), V3(Size, Size, Size), Colour, "SmoothPlastic", 0.4, true, false)
  430.     Part.Name = "WulfEffect"
  431.     local Mesh = New("BlockMesh", Part)
  432.     New("PointLight", Part, { Color = BC(Colour).Color, Range = Size * 2 })
  433.     Spawn(function()
  434.         for i = .4, 1.05, .05 do
  435.             Part.Transparency = i
  436.             Mesh.Scale = Mesh.Scale + V3(.5, .5, .5)
  437.             wait()
  438.         end
  439.         Part:Destroy()
  440.     end)
  441. end
  442. function Glitter(CF, Colour, RelSize)
  443.     local RelSize = RelSize or .75
  444.     local SizeX, SizeY, SizeZ = Abs(Random(RelSize)), Abs(Random(RelSize)), Abs(Random(RelSize))
  445.     local Part = Part(workspace, CN(CF.X, CF.Y, CF.Z), V3(SizeX, SizeY, SizeZ), Colour, "SmoothPlastic", 0.4, true, false)
  446.     Part.Name = "WulfEffect"
  447.     local Mesh = New("BlockMesh", Part)
  448.     New("PointLight", Part, { Color = BC(Colour).Color, Range = ( (SizeX + SizeY + SizeZ) / 3 ) * 2 })
  449.     Spawn(function()
  450.         for i = .4, 1.05, .05 do
  451.             Part.Transparency = i
  452.             Mesh.Scale = Mesh.Scale + V3(.125, .125, .125)
  453.             wait()
  454.         end
  455.         Part:Destroy()
  456.     end)
  457. end
  458. function DiamondExplode(CF, Size, Colour)
  459.     local Part = Part(workspace, CF * CA(Random(Pi*2), Random(Pi*2), Random(Pi*2)), V3(Size, Size, Size), Colour, "SmoothPlastic", 0.4, true, false)
  460.     Part.Name = "WulfEffect"
  461.     local Mesh = New("FileMesh", Part, { MeshId = Asset .. Meshes.Diamond })
  462.     New("PointLight", Part, { Color = BC(Colour).Color, Range = Size * 2 })
  463.     Spawn(function()
  464.         for i = .4, 1.05, .05 do
  465.             Part.Transparency = i
  466.             Mesh.Scale = Mesh.Scale + V3(5, 5, 5)
  467.             wait()
  468.         end
  469.         Part:Destroy()
  470.     end)
  471. end
  472. function SpikeUp(CF, Size, Colour)
  473.     local Part = Part(workspace, CF * CN(0, -(Size * 2) / 2, 0), V3(Size / 2, Size * 4, Size / 2), Colour, "SmoothPlastic", 0.4, true, false)
  474.     Part.Name = "WulfEffect"
  475.     local Mesh = New("FileMesh", Part, { MeshId = Asset .. Meshes.Spike, Scale = Part.Size / 2 })
  476.     New("PointLight", Part, { Color = BC(Colour).Color, Range = Size * 2 })
  477.     Spawn(function()
  478.         for i = 1, Size - 1, 1 do
  479.             Part.CFrame = CF * CN(0, i, 0)
  480.             wait()
  481.         end
  482.         wait(math.random(5, 8))
  483.         for i = .4, 1.05, .05 do
  484.             Part.Transparency = i
  485.             wait()
  486.         end
  487.         Part:Destroy()
  488.     end)
  489. end
  490. function BrickTo(CF, To, Size, Colour)
  491.     local Part = Part(workspace, CF, V3(Size, Size, Size), Colour, "SmoothPlastic", 0.4, true, false)
  492.     Part.Name = "WulfEffect"
  493.     local Mesh = New("SpecialMesh", Part, { MeshType = "Brick" })
  494.     New("PointLight", Part, { Color = BC(Colour).Color, Range = Size * 2 })
  495.     Spawn(function()
  496.         for i = .4, 1.05, .05 do
  497.             Part.Transparency = i
  498.             Mesh.Scale = Mesh.Scale + V3(.125, .125, .125)
  499.             Part.CFrame = CF + (Part.Position - To.p) * .9
  500.             wait()
  501.         end
  502.         Part:Destroy()
  503.     end)
  504. end
  505. function DamageNearby(CF, Damage, Distance)
  506.     local Humanoids = { }
  507.     for i, v in pairs(workspace:children()) do
  508.         if v:IsA("Model") and v~=Character and v:FindFirstChild("Torso") and v:FindFirstChild("Humanoid") and
  509.             (v:FindFirstChild("Torso").CFrame.p - CF.p).magnitude < Distance then
  510.             table.insert(Humanoids, v:FindFirstChild("Humanoid"))
  511.         end
  512.     end
  513.     for i, v in pairs(Humanoids) do
  514.         v.Health = v.Health - Damage
  515.     end
  516. end
  517. function GetIgnoreList()
  518.     local Return = { }
  519.     for i, v in pairs(workspace:children()) do
  520.         if v.Name == "WulfEffect" then
  521.             table.insert(Return, v)
  522.         end
  523.     end
  524.     return Return
  525. end
  526.  
  527. function ReturnToDefault(Speed)
  528.     Speed = Speed or 10
  529.     TweenWeld(HandleW, 0, HandleW.C0, C0.HW, Speed, true)
  530.     TweenWeld(TW, 0, TW.C0, C0.TW, Speed, true)
  531.     TweenWeld(NK, 0, NK.C0, C0.NK, Speed, true)
  532.     TweenWeld(RS, 0, RS.C0, C0.RS * CN(-.125, 0 , 0) * CA(Pi/1.625, 0, Pi/8), Speed, true)
  533.     TweenWeld(LS, 0, LS.C0, C0.LS * CN(.125, 0 , 0) * CA(0, 0, -Pi/16), Speed, false)
  534. end
  535. function Spirit()
  536.     Attacking = true
  537.     HandleW.Parent = nil
  538.     local Follow = true
  539.     local CF0 = CN(Torso.CFrame.X, Torso.CFrame.Y, Torso.CFrame.Z)
  540.     local CF = CF0 * CN(0, -20, 0)
  541.     HBP = New("BodyPosition", Handle, { maxForce = V3(math.huge, math.huge, math.huge), position = (CF0 * CN(0, 5, 0)).p })
  542.     HBG = New("BodyGyro", Handle, { maxTorque = V3(math.huge, math.huge, math.huge), cframe = CF0 })
  543.     TweenWeld(RS, 0, RS.C0, C0.RS * CA(Pi/1.25, 0, Pi/10), 5, true)
  544.     TweenWeld(LS, 0, LS.C0, C0.LS * CA(Pi/1.25, 0, -Pi/10), 5, false)
  545.     local Body = Part(Model, CF, V3(3, 3, 2), "Really black", "SmoothPlastic", 0.4, false, false)
  546.     local BP = New("BodyPosition", Body, { maxForce = V3(math.huge, math.huge, math.huge) })
  547.     local BG = New("BodyGyro", Body, { maxTorque = V3(math.huge, math.huge, math.huge) })
  548.     local BS1 = Part(Model, CF, V3(2, 3, 1), "Really black", "SmoothPlastic", 0.4, false, false, "WedgePart")
  549.     Weld(Body, BS1, CN(-2, 0, 0) * CA(Pi, Pi/2, 0))
  550.     local BS2 = Part(Model, CF, V3(2, 3, 1), "Really black", "SmoothPlastic", 0.4, false, false, "WedgePart")
  551.     Weld(Body, BS2, CN(2, 0, 0) * CA(Pi, -Pi/2, 0))
  552.     local Head = Part(Model, CF, V3(2, 2, 2), "Really black", "SmoothPlastic", 0.4, false, false, "WedgePart")
  553.     New("Fire", Head, { Color = BC("Really black").Color, SecondaryColor = BC("Really black").Color, Size = 3 })
  554.     New("SpecialMesh", Head, { MeshType = "FileMesh", MeshId = Asset .. Meshes.Skull, Scale = V3(2, 2, 2) / V3(.375, .375, .375) })
  555.     local Neck = Weld(Body, Head, CN(0, 1.25, 0), CN(0, -1.25, 0))
  556.     local RightA = Part(Model, CF, V3(2, 3, 2), "Really black", "SmoothPlastic", 0.4, false, false)
  557.     local LeftA = Part(Model, CF, V3(2, 3, 2), "Really black", "SmoothPlastic", 0.4, false, false)
  558.     local RAW = Weld(Body, RightA, CN(-1.25, 1.5, 0), CN(1.25, 1.5, 0))
  559.     local LAW = Weld(Body, LeftA, CN(1.25, 1.5, 0), CN(-1.25, 1.5, 0))
  560.     SpiritOn = true
  561.     Spawn(function()
  562.         for i = 0, 10 do
  563.             CrownExplode(Torso.CFrame * CN(0, -3, 0), 10, "Really black")
  564.             DiamondExplode(Torso.CFrame * CN(0, -3, 0), 20, "Really black")
  565.             local Size = math.random(5, 10)
  566.             SpikeUp(Torso.CFrame * CA(Random(Pi/8), 0, Random(Pi/8)) * CN(Random(10), -Size, Random(10)), Size, "Really black")
  567.             wait()
  568.         end
  569.     end)
  570.     Spawn(function()
  571.         local Number = 0
  572.         while SpiritOn and wait() do
  573.             if Follow then
  574.                 BP.position = (Torso.CFrame * CFrame.new(0, 5, 5)).p
  575.                 BG.cframe = CN(Body.CFrame.p, Mouse.Hit.p)
  576.             end
  577.             Number = Number + 1
  578.             if Number % 100 == 0 then
  579.                 SphereExplode(Body.CFrame, 5, "Really black")
  580.             end
  581.             if Number % 5 == 0 then
  582.                 Glitter(Body.CFrame * CN(Random(5), Random(5), Random(5)), "Really black")
  583.             end
  584.         end
  585.         BG:Destroy()
  586.         BP:Destroy()
  587.         DiamondExplode(Body.CFrame, 5, "Really black")
  588.     end)
  589.     TweenWeld(RAW, 0, RAW.C0, CN(-1.25, 1.5, 0) * CN(0, -.5, 0) * CA(Pi/1.25, 0, -Pi/10), 5, true)
  590.     TweenWeld(LAW, 0, LAW.C0, CN(1.25, 1.5, 0) * CN(0, -.5, 0) * CA(Pi/1.25, 0, Pi/10), 5, false)
  591.     TweenWeld(RS, 0, RS.C0, C0.RS * CN(-.125, 0 , 0) * CA(0, 0, Pi/16), 5, true)
  592.     TweenWeld(LS, 0, LS.C0, C0.LS * CN(.125, 0 , 0) * CA(0, 0, -Pi/16), 5, false)
  593.     TweenWeld(RAW, 0, RAW.C0, CN(-1.25, 1.5, 0) * CN(0, -.5, 0) * CA(Pi/4, 0, -Pi/10), 5, true)
  594.     TweenWeld(LAW, 0, LAW.C0, CN(1.25, 1.5, 0) * CN(0, -.5, 0) * CA(Pi/4, 0, Pi/10), 5, true)
  595.     HBP.position = RightA.CFrame.p
  596.     HBG.cframe = RightA.CFrame
  597.     Delay(.5, function()
  598.         HBP:Destroy()
  599.         HandleW.Parent = Model
  600.         HandleW.Part0 = RightA
  601.         HandleW.Part1 = Handle
  602.         HandleW.C0 = CN(0, 0, -1)
  603.         Attacking = false
  604.     end)
  605.     _SpiritEvent = assert(LoadLibrary("RbxUtility")).CreateSignal()
  606.     _SpiritEvent:connect(function(Attack_Type, ...)
  607.         local AttackData = { ... }
  608.         Attacking = true
  609.         if Attack_Type == "Slam" and Mouse.Target then
  610.             local Hit = Mouse.Hit
  611.             Hit = CN(Hit.X, Hit.Y, Hit.Z)
  612.             Follow = false
  613.             BP.position = CN(Hit.X, Hit.Y + 100, Hit.Z).p
  614.             BG.cframe = CN(Body.CFrame.p, Hit.p)
  615.             TweenWeld(RAW, 0, RAW.C0, CN(-1.25, 1.5, 0) * CN(0, -.5, 0) * CA(Pi/1.25, 0, Pi/5), 5, true)
  616.             TweenWeld(HandleW, 0, HandleW.C0, C0.HW * CN(0, -2, 0) * CA(Pi/2, -Pi/5, 0), 5, true)
  617.             TweenWeld(LAW, 0, LAW.C0, CN(1.25, 1.5, 0) * CN(0, -.5, 0) * CA(Pi/1.25, 0, -Pi/5), 5, false)
  618.             BP.position = Hit.p
  619.             Delay(.25, function()
  620.                 DamageNearby(Hit, 20, 20)
  621.                 for i = 1, 10 do
  622.                     wait()
  623.                     local Size = math.random(5, 10)
  624.                     CrownExplode(Hit, Size, "Really black")
  625.                     SpikeUp(Hit * CA(Random(Pi/8), 0, Random(Pi/8)) * CN(Random(20), -Size, Random(20)), Size, "Really black")
  626.                 end
  627.             end)
  628.             wait(.5)
  629.             TweenWeld(RAW, 0, RAW.C0, CN(-1.25, 1.5, 0) * CN(0, -.5, 0) * CA(Pi/4, 0, -Pi/10), 5, true)
  630.             TweenWeld(HandleW, 0, HandleW.C0, C0.HW, 5, true)
  631.             TweenWeld(LAW, 0, LAW.C0, CN(1.25, 1.5, 0) * CN(0, -.5, 0) * CA(Pi/4, 0, Pi/10), 5, false)
  632.             wait(.25)
  633.             Follow = true
  634.         elseif Attack_Type == "Slash" then
  635.    
  636.         elseif Attack_Type == "Throw" and Mouse.Target then
  637.             local Hit = Mouse.Hit
  638.             TweenWeld(RAW, 0, RAW.C0, CN(-1.25, 1.5, 0) * CN(0, -.5, 0) * CA(Pi/1.5, 0, -Pi/10), 5, true)
  639.             TweenWeld(HandleW, 0, HandleW.C0, C0.HW * CA(Pi, 0, 0), 5, true)
  640.             TweenWeld(LAW, 0, LAW.C0, CN(1.25, 1.5, 0) * CN(0, -.5, 0) * CA(-Pi/4, 0, Pi/10), 5, false)
  641.             local HBP = New("BodyPosition", Blade, { maxForce = V3(1, 1, 1) * 10^6, P = 10^4, position = Hit.p })
  642.             local HBG = New("BodyGyro", Blade, { maxTorque = V3(1, 1, 1) * 10^6, P = 10^4, cframe = CN(Blade.CFrame.p, Hit.p) * CN(0, 0, 5) })
  643.             TweenWeld(RAW, 0, RAW.C0, CN(-1.25, 1.5, 0) * CN(0, -.5, 0) * CA(Pi/4, 0, -Pi/10), 5, true)
  644.             TweenWeld(HandleW, 0, HandleW.C0, C0.HW, 5, true)
  645.             TweenWeld(LAW, 0, LAW.C0, CN(1.25, 1.5, 0) * CN(0, -.5, 0) * CA(Pi/4, 0, Pi/10), 5, false)
  646.             HandleW.Parent = nil
  647.             repeat wait()
  648.                 local Mag = (Hit.p - Blade.CFrame.p).magnitude
  649.             until Mag < 5
  650.             wait(math.random(1, 3))
  651.             HBP:Destroy()
  652.             HBG:Destroy()
  653.             HandleW.Parent = Model
  654.             HandleW.Part0 = RightA
  655.             HandleW.Part1 = Handle
  656.             HandleW.C0 = CN(0, 0, -1)
  657.         end
  658.         Attacking = false
  659.     end)
  660. end
  661. function Unspirit()
  662.     Attacking = true
  663.     HBG:Destroy()
  664.     HBP:Destroy()
  665.     HandleW.Part0 = RA
  666.     HandleW.C0 = CN(0, 0, -.5)
  667.     TweenWeld(RS, 0, RS.C0, C0.RS * CN(-.125, 0 , 0) * CA(Pi/1.625, 0, Pi/8), 5, true)
  668.     TweenWeld(LS, 0, LS.C0, C0.LS * CN(.125, 0 , 0) * CA(0, 0, -Pi/16), 5, false)
  669.     SpiritOn = false
  670.     Attacking = false
  671.     _SpiritEvent:disconnect()
  672.     _SpiritEvent = nil
  673. end
  674. function Wolf()
  675.     -- OLD AS SHT FUNCTION
  676.     local function cslerp(start,destination,increment)
  677.         local function s(a,b,c)return (1-c)*a+(c*b)end
  678.         local c1 = {start.X,start.Y,start.Z,start:toEulerAnglesXYZ()}
  679.         local c2 = {destination.X,destination.Y,destination.Z,destination:toEulerAnglesXYZ()}
  680.         for i,v in pairs(c1)do c1[i] = s(v,c2[i],increment)end
  681.         return CFrame.new(c1[1],c1[2],c1[3])*CFrame.Angles(c1[4],c1[5],c1[6])
  682.     end
  683.     --
  684.    
  685.     Attacking = true
  686.     WolfOn = true
  687.     Model2 = New("Model", Model, { Name = "Wolf" })
  688.     local Mode = "Idle"
  689.     local CF0 = Torso.CFrame
  690.     local CF = CF0 * CN(0, 2.5, 10)
  691.     local LeftBLeg
  692.     local RightBLeg
  693.     local LeftFLeg
  694.     local RightFLeg
  695.     local Stand = Part(Model2, CF, V3(8, .25, 5), "Grey", "SmoothPlastic", 1, false, true)
  696.     Stand.Name = "Stand"
  697.     local FakeH = Part(Model2, CF, V3(1, 1, 1), "Grey", "SmoothPlastic", 1, false, false)
  698.     FakeH.Name = "Head"
  699.     local FakeT = Part(Model2, CF, V3(1, 1, 1), "Grey", "SmoothPlastic", 1, false, false)
  700.     FakeT.Name = "Torso"
  701.     local FakeHRP = Part(Model2, CF, V3(1, 1, 1), "Grey", "SmoothPlastic", 1, false, false)
  702.     FakeHRP.Name = "HumanoidRootPart"
  703.     Weld(Stand, FakeHRP, CN(0, 5, 0))
  704.     Weld(FakeHRP, FakeT).Name = "RootJoint"
  705.     Weld(FakeT, FakeH).Name = "Neck"
  706.     local Body = Part(Model2, CF, V3(6, 2.5, 3.5), "Grey", "SmoothPlastic", 0, false, false)
  707.     local BWeld = Weld(Stand, Body, CN(0, 2.5, 0) * CA(0, Pi/2, 0), CN(0, -2.5, 0))
  708.     --local Seat = Part(Model2, CF, V3(1, 0, 1), "Grey", "SmoothPlastic", 1, false, false, "Seat")
  709.     --Weld(Body, Seat, CN(0, 1.25, 0) * CA(0, -Pi/2, 0))
  710.     local BodyTop = Part(Model2, CF, V3(3, 3, 4), "Grey", "SmoothPlastic", 0, false, false)
  711.     local BTWeld = Weld(Body, BodyTop, CN(1, 0, 0), CN(-1, 0, 0))
  712.     local Neck = Part(Model2, CF, V3(3, 2, 2.5), "Grey", "SmoothPlastic", 0, false, false)
  713.     local NeckW = Weld(BodyTop, Neck, CA(0, 0, Pi/8) * CN(.75, 0, 0), CN(-.75, 0, 0))
  714.     local Head = Part(Model2, CF, V3(2.25, 2, 2.5), "Grey", "SmoothPlastic", 0, false, false)
  715.     local HeadW = Weld(Neck, Head, CA(0, 0, -Pi/8) * CN(1, .25, 0), CN(-1, -.25, 0))
  716.     local Snout = Part(Model2, CF, V3(2, 1.25, 1.25), "Grey", "SmoothPlastic", 0, false, false)
  717.     local SnoutW = Weld(Head, Snout, CN(.75, -.175, 0), CN(-.75, .175, 0))
  718.     local Ear1 = Part(Model2, CF, V3(.75, 1.5, .5), "Grey", "SmoothPlastic", 0, false, false, "WedgePart")
  719.     Weld(Head, Ear1, CN(0, 1.75, .5))
  720.     local Ear2 = Part(Model2, CF, V3(.75, 1.5, .5), "Grey", "SmoothPlastic", 0, false, false, "WedgePart")
  721.     Weld(Head, Ear2, CN(0, 1.75, -.5) * CA(0, Pi, 0))
  722.     local Ear3 = Part(Model2, CF, V3(.75, 1.5, .5), "Grey", "SmoothPlastic", 0, false, false, "WedgePart")
  723.     Weld(Ear1, Ear3, CN(0, 0, .5) * CA(0, Pi, 0))
  724.     local Ear3 = Part(Model2, CF, V3(.75, 1.5, .5), "Grey", "SmoothPlastic", 0, false, false, "WedgePart")
  725.     Weld(Ear2, Ear3, CN(0, 0, .5) * CA(0, Pi, 0))
  726.     local Tail = Part(Model2, CF, V3(5, 2, 2), "Grey", "SmoothPlastic", 0, false, false)
  727.     local TailW = Weld(Body, Tail, CA(0, 0, Pi/8) * CN(-2.5, .5, 0), CN(2.5, -.5, 0))
  728.     HandleW.Part0 = Snout
  729.     HandleW.C0 = CA(Pi/2, 0, 0)
  730.  
  731.     -- > Left Leg
  732.     local B1LegP1 = Part(Model2, CF, V3(2, 2.5, 1), "Grey", "SmoothPlastic", 0, false, false)
  733.     local B1LegP1W = Weld(Body, B1LegP1, CN(-1, -.25, -1), CN(1, .25, 1))
  734.     local B1LegP2 = Part(Model2, CF, V3(1.5, 2, 1), "Grey", "SmoothPlastic", 0, false, false)
  735.     local B1LegP2W = Weld(B1LegP1, B1LegP2, CA(0, 0, -Pi/6) * CN(0, -.75, 0), CN(0, .75, 0))
  736.     local B1LegP3 = Part(Model2, CF, V3(1, 2.5, 1), "Grey", "SmoothPlastic", 0, false, false)
  737.     local B1LegP3W = Weld(B1LegP2, B1LegP3, CA(0, 0, Pi/7) * CN(0, -1, 0), CN(0, 1, 0))
  738.     local B1Paw = Part(Model2, CF, V3(1.5, .75, 1), "Grey", "SmoothPlastic", 0, false, false)
  739.     local B1PawW = Weld(B1LegP3, B1Paw, CA(0, 0, Pi/18) * CN(0, -.75, 0), CN(0, .75, 0))
  740.     LeftBLeg = {
  741.         Paw = B1PawW,
  742.         P1 = B1LegP1W,
  743.         P2 = B1LegP2W,
  744.         P3 = B1LegP3W
  745.     }
  746.    
  747.     -- > Right Leg
  748.     local B1LegP1 = Part(Model2, CF, V3(2, 2.5, 1), "Grey", "SmoothPlastic", 0, false, false)
  749.     local B1LegP1W = Weld(Body, B1LegP1, CN(-1, -.25, 1), CN(1, .25, -1))
  750.     local B1LegP2 = Part(Model2, CF, V3(1.5, 2, 1), "Grey", "SmoothPlastic", 0, false, false)
  751.     local B1LegP2W = Weld(B1LegP1, B1LegP2, CA(0, 0, -Pi/6) * CN(0, -.75, 0), CN(0, .75, 0))
  752.     local B1LegP3 = Part(Model2, CF, V3(1, 2.5, 1), "Grey", "SmoothPlastic", 0, false, false)
  753.     local B1LegP3W = Weld(B1LegP2, B1LegP3, CA(0, 0, Pi/7) * CN(0, -1, 0), CN(0, 1, 0))
  754.     local B1Paw = Part(Model2, CF, V3(1.5, .75, 1), "Grey", "SmoothPlastic", 0, false, false)
  755.     local B1PawW = Weld(B1LegP3, B1Paw, CA(0, 0, Pi/18) * CN(0, -.75, 0), CN(0, .75, 0))
  756.     RightBLeg = {
  757.         Paw = B1PawW,
  758.         P1 = B1LegP1W,
  759.         P2 = B1LegP2W,
  760.         P3 = B1LegP3W
  761.     }
  762.    
  763.     -- > Left Leg Front
  764.     local B1LegP1 = Part(Model2, CF, V3(1.5, 3, 1), "Grey", "SmoothPlastic", 0, false, false)
  765.     local B1LegP1W = Weld(Body, B1LegP1, CN(1, -.5, -1), CN(-1, .5, 1))
  766.     local B1LegP2 = Part(Model2, CF, V3(1.25, 3, 1), "Grey", "SmoothPlastic", 0, false, false)
  767.     local B1LegP2W = Weld(B1LegP1, B1LegP2, CN(0, -1.25, 0), CN(0, 1.25, 0))
  768.     local B1Paw = Part(Model2, CF, V3(1.5, .75, 1), "Grey", "SmoothPlastic", 0, false, false)
  769.     local B1PawW = Weld(B1LegP2, B1Paw, CN(.25, -.75, 0), CN(-.25, .75, 0))
  770.     LeftFLeg = {
  771.         Paw = B1PawW,
  772.         P1 = B1LegP1W,
  773.         P2 = B1LegP2W,
  774.     }
  775.    
  776.     -- > Right Leg Front
  777.     local B1LegP1 = Part(Model2, CF, V3(1.5, 3, 1), "Grey", "SmoothPlastic", 0, false, false)
  778.     local B1LegP1W = Weld(Body, B1LegP1, CN(1, -.5, 1), CN(-1, .5, -1))
  779.     local B1LegP2 = Part(Model2, CF, V3(1.25, 3, 1), "Grey", "SmoothPlastic", 0, false, false)
  780.     local B1LegP2W = Weld(B1LegP1, B1LegP2, CN(0, -1.25, 0), CN(0, 1.25, 0))
  781.     local B1Paw = Part(Model2, CF, V3(1.5, .75, 1), "Grey", "SmoothPlastic", 0, false, false)
  782.     local B1PawW = Weld(B1LegP2, B1Paw, CN(.25, -.75, 0), CN(-.25, .75, 0))
  783.     RightFLeg = {
  784.         Paw = B1PawW,
  785.         P1 = B1LegP1W,
  786.         P2 = B1LegP2W,
  787.     }
  788.    
  789.     -- > Humanoid
  790.     local Lupin = New("Humanoid", Model2, { Name = "Lupin", MaxHealth = 1/0 })
  791.    
  792.     -- > Effects
  793.     Spawn(function()
  794.         for i = 1, 5 do
  795.             wait()
  796.             SphereExplode(Body.CFrame * CN(0, -3, 0), math.random(2, 6), "White")
  797.             CrownSpin(Body.CFrame * CN(0, -3, 0), math.random(5, 15), "White")
  798.             for _ = 1, 2 do
  799.                 BrickTo(Body.CFrame * CA(Random(1), Random(1), Random(1)), Body.CFrame * CN(Random(5), Random(5), Random(5)), math.random(2, 7), "White")
  800.             end
  801.         end
  802.     end)
  803.    
  804.     -- > Animations < --
  805.     local Loop
  806.     local Count = 0
  807.     local CountTime = 50
  808.     local Speed = .175
  809.     local LookAround = tick()
  810.     local Looks = 0
  811.     local IsLooking = false
  812.     local Slash1 = false
  813.     local Follow = true
  814.     local Target = nil
  815.     local Human = nil
  816.     local LastSlash = tick()
  817.    
  818.     SlashOne = function()
  819.         Slash1 = true
  820.         Attacking = true
  821.        
  822.         TweenWeld(BWeld, 0, BWeld.C0, CN(0, 2.5, 0) * CA(0, Pi/2, 0) * CN(0, 7.5, 0), 4, true)
  823.         TweenWeld(NeckW, 0, NeckW.C0, CA(0, 0, Pi/8) * CN(.75, 0, 0) * CA(0, -Pi/4, Pi/24), 4, true)
  824.         TweenWeld(HandleW, 0, HandleW.C0, CA(Pi/4, 0, 0), 5, false)
  825.        
  826.         StartTrail(Blade, "Light red")
  827.         Slash1 = false
  828.         TweenWeld(BWeld, 0, BWeld.C0, CN(0, 2.5, 0) * CA(0, Pi/2, 0), 4, true)
  829.         TweenWeld(NeckW, 0, NeckW.C0, CA(0, 0, Pi/8) * CN(.75, 0, 0) * CA(0, Pi/4, -Pi/24), 4, true)
  830.         TweenWeld(HandleW, 0, HandleW.C0, CA(Pi/1.25, 0, -Pi/3), 5, false)
  831.         DamageNearby(Handle.CFrame, 25, 10)
  832.         StopTrail()
  833.        
  834.         TweenWeld(NeckW, 0, NeckW.C0, CA(0, 0, Pi/8) * CN(.75, 0, 0), 4, true)
  835.         TweenWeld(HandleW, 0, HandleW.C0, CA(Pi/2, 0, 0), 5, false)
  836.        
  837.         Attacking = false
  838.     end
  839.     ChangeFollow = function(TargetRequest, HumanRequest)
  840.         if not TargetRequest then
  841.             Follow = true
  842.             Target = nil
  843.             HumanRequest = nil
  844.         elseif TargetRequest and TargetRequest:IsA("Model") then
  845.             Target = TargetRequest
  846.             Human = HumanRequest
  847.             Follow = false
  848.         end
  849.     end
  850.     IsFollowing = function()
  851.         return Follow
  852.     end
  853.     Loop = game:service("RunService").Stepped:connect(function()
  854.         local RootMag = V3(FakeHRP.Velocity.X, 0, FakeHRP.Velocity.Z).magnitude
  855.         if RootMag > 2 then
  856.             if Follow then
  857.                 Mode = "Walking"
  858.                 Lupin.WalkSpeed = Humanoid.WalkSpeed
  859.             else
  860.                 Mode = "Running"
  861.                 Lupin.WalkSpeed = 75
  862.             end
  863.         elseif RootMag < 2 then
  864.             Mode = "Idle"
  865.         end
  866.         if Slash1 then Mode = "Jump" end
  867.         local CF = Torso.CFrame * CN(0, 0, 10)
  868.         if Follow then
  869.             Lupin:MoveTo(CF.p, workspace.Terrain)
  870.         else
  871.             if not Target or Human.Health == 0 then
  872.                 Follow = true
  873.                 Target = nil
  874.                 Human = nil
  875.             else
  876.                 local TargCF = Target:GetModelCFrame()
  877.                 local CF = CFrame.new(TargCF * CN(0, 0, 10).p, TargCF.p)
  878.                 Lupin:MoveTo(CF.p, workspace.Terrain)
  879.                 local Mag = (CF.p - Vector3.new(Stand.CFrame.X, CF.Y, Stand.CFrame.Z)).magnitude
  880.                 if Mag < 7.5 and not Attacking and (tick()-LastSlash) > 3 then
  881.                     game:service("Debris"):AddItem(New("BodyGyro", Stand, { maxTorque = V3(1, 1, 1) * 10^6, P = 10^4, cframe = CF }), 1)
  882.                     LastSlash = tick()
  883.                     Spawn(function() SlashOne() end)
  884.                 end
  885.             end
  886.         end
  887.         Count = (Count%CountTime)+Speed
  888.         local Sine = math.sin(Count)
  889.         if Mode == "Walking" then
  890.             CountTime = 50
  891.             Speed = .175
  892.            
  893.             RightFLeg.P1.C0 = cslerp(RightFLeg.P1.C0, CN(1, -.5, 1) * CA(0, 0, -Sine*.35), Speed)
  894.             RightFLeg.P2.C0 = cslerp(RightFLeg.P2.C0, CN(0, -1.25, 0) * CA(0, 0, -Sine*.25), Speed)
  895.             RightFLeg.Paw.C0 = cslerp(RightFLeg.Paw.C0, CN(.25, -.75, 0) * CA(0, 0, Sine*.5), Speed)
  896.            
  897.             LeftFLeg.P1.C0 = cslerp(LeftFLeg.P1.C0, CN(1, -.5, -1) * CA(0, 0, Sine*.35), Speed)
  898.             LeftFLeg.P2.C0 = cslerp(LeftFLeg.P2.C0, CN(0, -1.25, 0) * CA(0, 0, Sine*.25), Speed)
  899.             LeftFLeg.Paw.C0 = cslerp(LeftFLeg.Paw.C0, CN(.25, -.75, 0) * CA(0, 0, -Sine*.5), Speed)
  900.            
  901.             RightBLeg.P1.C0 = cslerp(RightBLeg.P1.C0, CN(-1, -.25, 1) * CA(0, 0, Sine*.15), Speed)
  902.             RightBLeg.P2.C0 = cslerp(RightBLeg.P2.C0, CA(0, 0, -Pi/6) * CN(0, -.75, 0) * CA(0, 0, Sine*.15), Speed)
  903.             RightBLeg.P3.C0 = cslerp(RightBLeg.P3.C0, CA(0, 0, Pi/7) * CN(0, -1, 0) * CA(0, 0, Sine*.15), Speed)
  904.             RightBLeg.Paw.C0 = cslerp(RightBLeg.Paw.C0, CA(0, 0, Pi/18) * CN(0, -.75, 0) * CA(0, 0, -Sine*.15), Speed)
  905.            
  906.             LeftBLeg.P1.C0 = cslerp(LeftBLeg.P1.C0, CN(-1, -.25, -1) * CA(0, 0, -Sine*.15), Speed)
  907.             LeftBLeg.P2.C0 = cslerp(LeftBLeg.P2.C0, CA(0, 0, -Pi/6) * CN(0, -.75, 0) * CA(0, 0, -Sine*.15), Speed)
  908.             LeftBLeg.P3.C0 = cslerp(LeftBLeg.P3.C0, CA(0, 0, Pi/7) * CN(0, -1, 0) * CA(0, 0, -Sine*.15), Speed)
  909.             LeftBLeg.Paw.C0 = cslerp(LeftBLeg.Paw.C0, CA(0, 0, Pi/18) * CN(0, -.75, 0) * CA(0, 0, Sine*.15), Speed)
  910.            
  911.             TailW.C0 = cslerp(TailW.C0, CA(0, 0, Pi/8) * CN(-2.5, .5, 0) * CA(0, Sine*.25, 0), Speed)
  912.             BTWeld.C0 = cslerp(BTWeld.C0, CN(1, 0, 0) * CA(0, Sine*.125, 0), Speed)
  913.  
  914.             if not Slash1 then NeckW.C0 = cslerp(NeckW.C0, CA(0, 0, Pi/8) * CN(.75, 0, 0), Speed) end
  915.         elseif Mode == "Running" then
  916.             CountTime = 50
  917.             Speed = .4
  918.            
  919.             RightFLeg.P1.C0 = cslerp(RightFLeg.P1.C0, CN(1, -.5, 1) * CA(0, 0, -Sine*.35), Speed)
  920.             RightFLeg.P2.C0 = cslerp(RightFLeg.P2.C0, CN(0, -1.25, 0) * CA(0, 0, -Sine*.25), Speed)
  921.             RightFLeg.Paw.C0 = cslerp(RightFLeg.Paw.C0, CN(.25, -.75, 0) * CA(0, 0, -Sine*.5), Speed)
  922.            
  923.             LeftFLeg.P1.C0 = cslerp(LeftFLeg.P1.C0, CN(1, -.5, -1) * CA(0, 0, -Sine*.35), Speed)
  924.             LeftFLeg.P2.C0 = cslerp(LeftFLeg.P2.C0, CN(0, -1.25, 0) * CA(0, 0, -Sine*.25), Speed)
  925.             LeftFLeg.Paw.C0 = cslerp(LeftFLeg.Paw.C0, CN(.25, -.75, 0) * CA(0, 0, -Sine*.5), Speed)
  926.            
  927.             RightBLeg.P1.C0 = cslerp(RightBLeg.P1.C0, CN(-1, -.25, 1) * CA(0, 0, Sine*.25), Speed)
  928.             RightBLeg.P2.C0 = cslerp(RightBLeg.P2.C0, CA(0, 0, -Pi/6) * CN(0, -.75, 0) * CA(0, 0, Sine*.25), Speed)
  929.             RightBLeg.P3.C0 = cslerp(RightBLeg.P3.C0, CA(0, 0, Pi/7) * CN(0, -1, 0) * CA(0, 0, Sine*.25), Speed)
  930.             RightBLeg.Paw.C0 = cslerp(RightBLeg.Paw.C0, CA(0, 0, Pi/18) * CN(0, -.75, 0) * CA(0, 0, Sine*.25), Speed)
  931.            
  932.             LeftBLeg.P1.C0 = cslerp(LeftBLeg.P1.C0, CN(-1, -.25, -1) * CA(0, 0, Sine*.25), Speed)
  933.             LeftBLeg.P2.C0 = cslerp(LeftBLeg.P2.C0, CA(0, 0, -Pi/6) * CN(0, -.75, 0) * CA(0, 0, Sine*.25), Speed)
  934.             LeftBLeg.P3.C0 = cslerp(LeftBLeg.P3.C0, CA(0, 0, Pi/7) * CN(0, -1, 0) * CA(0, 0, Sine*.25), Speed)
  935.             LeftBLeg.Paw.C0 = cslerp(LeftBLeg.Paw.C0, CA(0, 0, Pi/18) * CN(0, -.75, 0) * CA(0, 0, Sine*.25), Speed)
  936.            
  937.             TailW.C0 = cslerp(TailW.C0, CA(0, 0, Pi/8) * CN(-2.5, .5, 0) * CA(0, Sine*.125, 0), Speed)
  938.             BTWeld.C0 = cslerp(BTWeld.C0, CN(1, 0, 0) * CA(0, Sine*.075, 0), Speed)
  939.  
  940.             if not Slash1 then NeckW.C0 = cslerp(NeckW.C0, CA(0, 0, Pi/8) * CN(.75, 0, 0), Speed) end
  941.         elseif Mode == "Idle" then
  942.             CountTime = 75
  943.             Speed = .175
  944.        
  945.             RightFLeg.P1.C0 = cslerp(RightFLeg.P1.C0, CN(1, -.5, 1), Speed)
  946.             RightFLeg.P2.C0 = cslerp(RightFLeg.P2.C0, CN(0, -1.25, 0), Speed)
  947.             RightFLeg.Paw.C0 = cslerp(RightFLeg.Paw.C0, CN(.25, -.75, 0), Speed)
  948.            
  949.             LeftFLeg.P1.C0 = cslerp(LeftFLeg.P1.C0, CN(1, -.5, -1), Speed)
  950.             LeftFLeg.P2.C0 = cslerp(LeftFLeg.P2.C0, CN(0, -1.25, 0), Speed)
  951.             LeftFLeg.Paw.C0 = cslerp(LeftFLeg.Paw.C0, CN(.25, -.75, 0), Speed)
  952.            
  953.             RightBLeg.P1.C0 = cslerp(RightBLeg.P1.C0, CN(-1, -.25, 1), Speed)
  954.             RightBLeg.P2.C0 = cslerp(RightBLeg.P2.C0, CA(0, 0, -Pi/6) * CN(0, -.75, 0), Speed)
  955.             RightBLeg.P3.C0 = cslerp(RightBLeg.P3.C0, CA(0, 0, Pi/7) * CN(0, -1, 0), Speed)
  956.             RightBLeg.Paw.C0 = cslerp(RightBLeg.Paw.C0, CA(0, 0, Pi/18) * CN(0, -.75, 0), Speed)
  957.            
  958.             LeftBLeg.P1.C0 = cslerp(LeftBLeg.P1.C0, CN(-1, -.25, -1), Speed)
  959.             LeftBLeg.P2.C0 = cslerp(LeftBLeg.P2.C0, CA(0, 0, -Pi/6) * CN(0, -.75, 0), Speed)
  960.             LeftBLeg.P3.C0 = cslerp(LeftBLeg.P3.C0, CA(0, 0, Pi/7) * CN(0, -1, 0), Speed)
  961.             LeftBLeg.Paw.C0 = cslerp(LeftBLeg.Paw.C0, CA(0, 0, Pi/18) * CN(0, -.75, 0), Speed)
  962.            
  963.             TailW.C0 = cslerp(TailW.C0, CA(0, 0, Pi/8) * CN(-2.5, .5, 0), Speed)
  964.             BTWeld.C0 = cslerp(BTWeld.C0, CN(1, 0, 0), Speed)
  965.            
  966.             if (tick()-LookAround) > 7.5 and not IsLooking then
  967.                 IsLooking = true
  968.                 Looks = Looks + 1
  969.             elseif (tick()-LookAround) > 10 then
  970.                 IsLooking = false
  971.                 LookAround = tick()
  972.             end
  973.             if not Slash1 then NeckW.C0 = cslerp(NeckW.C0, CA(0, 0, Pi/8) * CN(.75, 0, 0) * CA(0, IsLooking and (Looks % 2 == 0 and -.375 or .375) or 0, 0), Speed) end
  974.         elseif Mode == "Jump" then
  975.             CountTime = 50
  976.             Speed = .75
  977.        
  978.             RightFLeg.P1.C0 = cslerp(RightFLeg.P1.C0, CN(1, -.5, 1) * CA(0, 0, Pi/5), Speed)
  979.             RightFLeg.P2.C0 = cslerp(RightFLeg.P2.C0, CN(0, -1.25, 0), Speed)
  980.             RightFLeg.Paw.C0 = cslerp(RightFLeg.Paw.C0, CN(.25, -.75, 0), Speed)
  981.            
  982.             LeftFLeg.P1.C0 = cslerp(LeftFLeg.P1.C0, CN(1, -.5, -1) * CA(0, 0, Pi/5), Speed)
  983.             LeftFLeg.P2.C0 = cslerp(LeftFLeg.P2.C0, CN(0, -1.25, 0), Speed)
  984.             LeftFLeg.Paw.C0 = cslerp(LeftFLeg.Paw.C0, CN(.25, -.75, 0), Speed)
  985.            
  986.             RightBLeg.P1.C0 = cslerp(RightBLeg.P1.C0, CN(-1, -.25, 1) * CA(0, 0, -Pi/5), Speed)
  987.             RightBLeg.P2.C0 = cslerp(RightBLeg.P2.C0, CA(0, 0, -Pi/6) * CN(0, -.75, 0), Speed)
  988.             RightBLeg.P3.C0 = cslerp(RightBLeg.P3.C0, CA(0, 0, Pi/7) * CN(0, -1, 0), Speed)
  989.             RightBLeg.Paw.C0 = cslerp(RightBLeg.Paw.C0, CA(0, 0, Pi/18) * CN(0, -.75, 0), Speed)
  990.            
  991.             LeftBLeg.P1.C0 = cslerp(LeftBLeg.P1.C0, CN(-1, -.25, -1) * CA(0, 0, -Pi/5), Speed)
  992.             LeftBLeg.P2.C0 = cslerp(LeftBLeg.P2.C0, CA(0, 0, -Pi/6) * CN(0, -.75, 0), Speed)
  993.             LeftBLeg.P3.C0 = cslerp(LeftBLeg.P3.C0, CA(0, 0, Pi/7) * CN(0, -1, 0), Speed)
  994.             LeftBLeg.Paw.C0 = cslerp(LeftBLeg.Paw.C0, CA(0, 0, Pi/18) * CN(0, -.75, 0), Speed)
  995.            
  996.             TailW.C0 = cslerp(TailW.C0, CA(0, 0, Pi/8) * CN(-2.5, .5, 0), Speed)
  997.             BTWeld.C0 = cslerp(BTWeld.C0, CN(1, 0, 0), Speed)
  998.         end
  999.     end)
  1000.    
  1001.     Spawn(function()
  1002.         repeat wait() until not WolfOn
  1003.         DiamondExplode(Body.CFrame * CA(Random(1), Random(1), Random(1)), 5, "White")
  1004.     end)
  1005.    
  1006.     TweenWeld(RS, 0, RS.C0, C0.RS * CN(-.125, 0 , 0) * CA(0, 0, Pi/16), 5, true)
  1007.     TweenWeld(LS, 0, LS.C0, C0.LS * CN(.125, 0 , 0) * CA(0, 0, -Pi/16), 5, false)
  1008.     wait()
  1009.     Attacking = false
  1010. end
  1011. function Unwolf()
  1012.     Attacking = true
  1013.     HandleW.Part0 = RA
  1014.     HandleW.C0 = CN(0, 0, -.5)
  1015.     TweenWeld(RS, 0, RS.C0, C0.RS * CN(-.125, 0 , 0) * CA(Pi/1.625, 0, Pi/8), 5, true)
  1016.     TweenWeld(LS, 0, LS.C0, C0.LS * CN(.125, 0 , 0) * CA(0, 0, -Pi/16), 5, false)
  1017.     Model2:FindFirstChild("Stand"):Destroy()
  1018.     WolfOn = false
  1019.     Attacking = false
  1020. end
  1021. function Slash1()
  1022.     Attacking = true
  1023.     TweenWeld(TW, 0, TW.C0, C0.TW * CA(0, -Pi/5, 0), 7, true)
  1024.     TweenWeld(NK, 0, NK.C0, C0.NK * CA(0, Pi/5, 0), 7, true)
  1025.     TweenWeld(RS, 0, RS.C0, C0.RS * CA(Pi/1.75, 0, Pi/10), 7, true)
  1026.     TweenWeld(LS, 0, LS.C0, C0.LS * CN(.75, 0, 0) * CA(Pi/2, 0, Pi/3), 7, false)
  1027.     StartTrail(Blade, "Light red")
  1028.     wait()
  1029.     TweenWeld(HandleW, 0, HandleW.C0, C0.HW * CN(0, -.75, 0) * CA(0, 0, -Pi), 4, true)
  1030.     TweenWeld(TW, 0, TW.C0, C0.TW * CA(0, Pi/3, 0), 4, true)
  1031.     TweenWeld(NK, 0, NK.C0, C0.NK * CA(0, -Pi/3, 0), 4, true)
  1032.     TweenWeld(RS, 0, RS.C0, C0.RS * CA(Pi/2.25, 0, 0), 4, true)
  1033.     TweenWeld(LS, 0, LS.C0, C0.LS * CA(Pi/2.75, 0, Pi/4), 4, false)
  1034.     DamageNearby(Handle.CFrame, 10, 10)
  1035.     StopTrail()
  1036.     wait()
  1037.     ReturnToDefault(7)
  1038.     wait()
  1039.     Attacking = false
  1040. end
  1041. function DRAGAWN()
  1042.     Attacking = true
  1043.     HandleW.Parent = nil
  1044.     local DragonMesh = Asset .. "58430372"
  1045.     local CF0 = CN(Torso.CFrame.X, Torso.CFrame.Y, Torso.CFrame.Z)
  1046.     local HBP = New("BodyPosition", Handle, { maxForce = V3(math.huge, math.huge, math.huge), position = (CF0 * CN(0, 10, 0)).p })
  1047.     local HBG = New("BodyGyro", Handle, { P = 10^4, maxTorque = V3(1, 1, 1) * 10 ^ 6, cframe = CF0 })
  1048.     local HRPBG = New("BodyGyro", HRP, { P = 10^4, maxTorque = V3(1, 1, 1) * 10 ^ 6, cframe = HRP.CFrame })
  1049.     TweenWeld(RS, 0, RS.C0, C0.RS * CN(.375, 0, -.5) * CA(Pi/2, 0, Pi/2), 5, true)
  1050.     TweenWeld(NK, 0, NK.C0, C0.NK * CA(0, -Pi/2, 0), 5, true)
  1051.     TweenWeld(LS, 0, LS.C0, C0.LS * CN(0, 0, 0) * CA(0, 0, -Pi/16), 5, false)
  1052.     local Going = true
  1053.     local Hit = nil
  1054.     Spawn(function()
  1055.         while wait() and Going do
  1056.             Hit = Mouse.Hit
  1057.             local CF0 = CN(Torso.CFrame.X, Torso.CFrame.Y, Torso.CFrame.Z)
  1058.             local POS = (CF0 * CN(0, 10, 0)).p
  1059.             HBG.cframe = CN(Handle.CFrame.p, Hit.p) * CA(-Pi/2, 0, 0)
  1060.             HBP.position = POS
  1061.             HRPBG.cframe = CN(HRP.CFrame.p, V3(Hit.X, HRP.CFrame.Y, Hit.Z)) * CA(0, Pi/2, 0)
  1062.             Glitter(Blade.CFrame * CN(Random(10), Random(10), Random(10)), "Phosph. White", .25)
  1063.         end
  1064.     end)
  1065.     Mouse.Button1Down:wait()
  1066.     Going = false
  1067.     HRPBG.cframe = CN(HRP.CFrame.p, V3(Hit.X, HRP.CFrame.Y, Hit.Z))
  1068.     TweenWeld(RS, 0, RS.C0, C0.RS * CN(0, .5, 0) * CA(Pi/1.25, 0, Pi/8), 5, true)
  1069.     TweenWeld(NK, 0, NK.C0, C0.NK, 5, true)
  1070.     TweenWeld(LS, 0, LS.C0, C0.LS * CN(0, .5, 0) * CA(Pi/1.25, 0, -Pi/8), 5, false)
  1071.     local DragonHead = Part(workspace, Blade.CFrame * CA(Pi/2, 0, 0), V3(5, 20, 10), "Bright violet", "SmoothPlastic", 1, true, false)
  1072.     local DHCF = DragonHead.CFrame * CN(0, 0, -10) * CA(-Pi/2, 0, 0)
  1073.     DragonHead.CFrame = DragonHead.CFrame * CN(0, 2.5, 0)
  1074.     local Mag = (Hit.p - DHCF * CN(0, 5, 0).p).magnitude
  1075.     local BP1 = Part(workspace, CN(DHCF.p, Hit.p) * CN(0, 0, -Mag/2) * CA(0, Pi/2, 0), V3(Mag, 7.5, 7.5), "Bright violet", "SmoothPlastic", 1, true, false)
  1076.     local BP2 = Part(workspace, CN(DHCF.p, Hit.p) * CN(0, 0, -Mag/2) * CA(0, Pi/2, 0), V3(Mag, 5, 5), "Phosph. White", "SmoothPlastic", 1, true, false)
  1077.     New("SpecialMesh", BP1, { MeshType = "Cylinder" })
  1078.     New("SpecialMesh", BP2, { MeshType = "Cylinder" })
  1079.     New("FileMesh", DragonHead, { Scale = V3(7.5, 7.5, 7.5), MeshId = DragonMesh })
  1080.     local Amount = math.random(10, 20)
  1081.     Spawn(function()
  1082.         for i = 1, .3, -.15 do
  1083.             wait()
  1084.             BP1.Transparency = i
  1085.             BP2.Transparency = i
  1086.             DragonHead.Transparency = i
  1087.         end
  1088.         BP1.Transparency = .3
  1089.         BP2.Transparency = .3
  1090.         DragonHead.Transparency = .3
  1091.     end)
  1092.     Delay(Amount*wait(.1), function()
  1093.         for i = 0.3, 1.05, .05 do
  1094.             DragonHead.Transparency = i
  1095.             BP1.Transparency = i
  1096.             BP2.Transparency = i
  1097.             wait()
  1098.         end
  1099.         DragonHead:Destroy()
  1100.         BP1:Destroy()
  1101.         BP2:Destroy()
  1102.     end)
  1103.     for i = 1, Amount do
  1104.         local Size = math.random(10, 20)
  1105.         DiamondExplode(Torso.CFrame * CN(Random(10), -Size, Random(10)), Size, "Bright violet")
  1106.         SpikeUp(Torso.CFrame * CA(Random(Pi/8), 0, Random(Pi/8)) * CN(Random(20), -Size, Random(20)), Size, "Bright violet")
  1107.         SphereExplode(Hit, 5, "Bright violet")
  1108.         DiamondExplode(Hit, 1, "Phosph. White")
  1109.         Delay(Random(.1), function() CrownSpin(DHCF, 10, "Bright violet") end)
  1110.         DamageNearby(Hit, 7.5, 7.5)
  1111.         wait(.1)
  1112.     end
  1113.     Shooting = false
  1114.     wait()
  1115.     HBG:Destroy()
  1116.     HBP:Destroy()
  1117.     HRPBG:Destroy()
  1118.     HandleW.Parent = Model
  1119.     HandleW.Part0 = RA
  1120.     HandleW.C0 = CN(0, 0, -.5)
  1121.     ReturnToDefault(10)
  1122.     wait()
  1123.     Attacking = false
  1124. end
  1125.  
  1126. -----------------------------------------------------------------------------------------------------
  1127.  
  1128. TW = HRP:WaitForChild("RootJoint")
  1129. NK = Weld(Torso, Head, C0.NK, C1.NK)
  1130. Equip = function(Mouse)
  1131.     if not SpiritOn and not WolfOn and not Attacking and not SwordInactive then
  1132.         HandleW.Part0 = RA
  1133.         HandleW.C0 = CN(0, 0, -.5)
  1134.         OLS.Parent = nil
  1135.         ORS.Parent = nil
  1136.         TW.C0 = CN()
  1137.         TW.C1 = CN()
  1138.         RS = Weld(Torso, RA, C0.RS * CN(-.125, 0 , 0) * CA(Pi/1.625, 0, Pi/8), C1.RS)
  1139.         LS = Weld(Torso, LA, C0.LS * CN(.125, 0 , 0) * CA(0, 0, -Pi/16), C1.LS)
  1140.     end
  1141.     Mouse.Button1Down:connect(function()
  1142.         if Attacking then return end
  1143.         if not SpiritOn and not WolfOn then Slash1() end
  1144.         if WolfOn and IsFollowing() then
  1145.             pcall(SlashOne)
  1146.         end
  1147.     end)
  1148.     Mouse.KeyDown:connect(function(Key)
  1149.         Key:lower()
  1150.         if Attacking then return end
  1151.         if not SwordInactive then
  1152.             if Key == "f" and not SpiritOn and not WolfOn then
  1153.                 Spirit()
  1154.             elseif Key == "f" and SpiritOn and not WolfOn then
  1155.                 Unspirit()
  1156.             elseif Key == "q" and SpiritOn and not WolfOn then
  1157.                 _SpiritEvent:fire("Slam")
  1158.             elseif Key == "e" and SpiritOn and not WolfOn then
  1159.                 _SpiritEvent:fire("Throw")
  1160.             elseif Key == "q" and not SpiritOn and not WolfOn then
  1161.                 DRAGAWN()
  1162.             elseif Key == "e" and not SpiritOn and not WolfOn then
  1163.                 Wolf()
  1164.             elseif Key == "e" and not SpiritOn and WolfOn then
  1165.                 Unwolf()
  1166.             elseif Key == "r" and not SpiritOn and WolfOn then
  1167.                 local Target = Mouse.Target
  1168.                 if Target.Parent:FindFirstChild("Torso") then
  1169.                     local Hum
  1170.                     for i, v in pairs(Target.Parent:children()) do
  1171.                         if v:IsA("Humanoid") then
  1172.                             Hum = v
  1173.                             break
  1174.                         end
  1175.                     end
  1176.                     if Hum then
  1177.                         ChangeFollow(Target.Parent, Hum)
  1178.                     end
  1179.                 else
  1180.                     ChangeFollow()
  1181.                 end
  1182.             end
  1183.         else
  1184.            
  1185.         end
  1186.     end)
  1187. end
  1188. Unequip = function()
  1189.     if SpiritOn or WolfOn or SwordInactive then return end
  1190.     if Attacking then
  1191.         repeat wait() until not Attacking
  1192.     end
  1193.     RS:Destroy()
  1194.     LS:Destroy()
  1195.     OLS.Parent = Torso
  1196.     OLS.Part0, OLS.Part1 = Torso, LA
  1197.     ORS.Parent = Torso
  1198.     ORS.Part0, ORS.Part1 = Torso, RA
  1199.     TW.C0 = C0.TW
  1200.     NK.C0 = C0.NK
  1201.     HandleW.Part0 = Torso
  1202.     HandleW.C0 = CN(1, -1, .5) * CA(0, 0, Pi/4)
  1203. end
  1204. pcall(game.Destroy, Backpack:FindFirstChild("Sword"))
  1205. Tool = New("HopperBin", Backpack, { Name = "Sword" })
  1206. Tool.Selected:connect(Equip)
  1207. Tool.Deselected:connect(Unequip)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement