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