View difference between Paste ID: fKkhjLYA and dYyAKJ5V
SHOW: | | - or go back to the newest paste.
1-
1+
--- shortcuts
2
v3 = Vector3.new
3
cn = CFrame.new
4
ca2 = CFrame.Angles
5
mf = math.floor
6
mran = math.random rn=mran
7
mrad = math.rad rd=mran
8
mdeg = math.deg
9
ca = function(x,y,z) return ca2(mrad(x),mrad(y),mrad(z)) end 
10
mran2 = function(a,b) return mran(a*1000,b*1000)/1000 end 
11
ud=UDim2.new
12
bn = BrickColor.new
13
c3 = Color3.new
14
-----
15
-- Player = game:service'Players'.thehenkka
16
Player = game:service'Players'.LocalPlayer
17
Char = Player.Character
18
Torso = Char.Torso
19
Head = Char.Head
20
Humanoid = Char.Humanoid
21
Root=Char.HumanoidRootPart.RootJoint
22
23
LA=Char['Left Arm']
24
RA=Char['Right Arm']
25
LL=Char['Left Leg']
26
RL=Char['Right Leg']
27
LAM=Torso['Left Shoulder']
28
RAM=Torso['Right Shoulder']
29
LLM=Torso['Left Hip']
30
RLM=Torso['Right Hip']
31
Neck=Torso.Neck
32
Neck.C0=cn(0,1.5,0)
33
Neck.C1=cn(0,0,0)
34
35
name='Hook and Cleaver'
36
Range = 100
37
pcall(function() Player.Backpack[name]:Remove() end)
38
pcall(function() Char[name]:Remove() end)
39
pcall(function() Char.Block:Remove() end)
40
pcall(function() Root.Parent.BodyGyro:Destroy() end)
41
42
as,so={},{'metal','Block','Slash','Slash2','Hit','Kick'}
43
as.corner='11294911'
44
as.cone='1033714'
45
as.ring="3270017"
46
as.Chakram='47260990'
47
as.ring2='18430887'
48
as.blast='20329976'
49
as.missile='10207677'
50
as.fire='2693346'
51
as.boom='3264793'
52
as.slash='10209645'
53
as.abscond='2767090'
54
as.firelaser='13775494'
55
as.diamond='9756362'
56
as.metal='rbxasset://sounds\\unsheath.wav'
57
as.Block = 'rbxasset://sounds\\metal.ogg'
58
as.Slash = '10209645'
59
as.Slash2 = '46760716'
60
as.Hit='10209583'
61
as.Kick='46153268'
62
as.cast='2101137'
63
64
65
for i,v in pairs(as) do 
66
	if type(tonumber(v:sub(1,3)))=="number" then
67
		as[i]="http://www.roblox.com/asset/?id="..v
68
	end
69
end
70
71
72
iNew=function(tab)
73
	local v=Instance.new(tab[1])
74
	for Ind,Val in pairs(tab) do
75
		if Ind~=1 and Ind~=2 then 
76
			v[Ind] = Val
77
		end
78
	end
79
	v.Parent=tab[2]==0 and LastMade or tab[2]
80
	LastMade=v
81
	return v
82
end
83
84
iPart=function(tab)
85
	local v=Instance.new(tab.type or 'Part')
86
	if tab.type~='CornerWedgePart' then v.formFactor='Custom' end
87
	v.CanCollide=false
88
	v.TopSurface=0 v.BottomSurface=0
89
	v.Size=v3(tab[2],tab[3],tab[4])
90
	if tab.co then v.BrickColor=bn(tab.co) end
91
	if tab.tr then v.Transparency=tab.tr end
92
	if tab.rf then v.Reflectance=tab.rf end
93
	if tab.cf then v.CFrame=tab.cf end
94
	if tab.an then v.Anchored=tab.an end
95
	v.Parent=tab[1]
96
	LastMade=v
97
	return v
98
end
99
100
pcall(function() Torso.LAW:Remove() Torso.RAW:Remove() Torso.LLW:Remove() Torso.RLW:Remove() end)
101
LAW=iNew{'Weld',Torso,Name='LAW',Part0=Torso,C0=cn(-1.5,0.5,0),C1=cn(0,0.5,0)}
102
RAW=iNew{'Weld',Torso,Name='RAW',Part0=Torso,C0=cn( 1.5,0.5,0),C1=cn(0,0.5,0)}
103
LLW=iNew{'Weld',Torso,Name='LLW',Part0=Torso,C0=cn(-0.5, -1,0),C1=cn(0,  1,0)}
104
RLW=iNew{'Weld',Torso,Name='RLW',Part0=Torso,C0=cn( 0.5, -1,0),C1=cn(0,  1,0)}
105
106
function Arms(on)
107
	LAM.Parent=Torso LAM.Part0=Torso
108
	RAM.Parent=Torso RAM.Part0=Torso
109
	LAM.Part1=on and nil or LA
110
	RAM.Part1=on and nil or RA
111
	LAW.Part1=on and LA  or nil
112
	RAW.Part1=on and RA  or nil
113
end
114
115
function Legs(on)
116
	LLM.Part1=on and nil or LL
117
	RLM.Part1=on and nil or RL
118
	LLW.Part1=on and LL  or nil
119
	RLW.Part1=on and RL  or nil
120
end
121
122
123
function GetWeld(weld) 
124
    if not weld:findFirstChild("Angle") then 
125
        local a = Instance.new("Vector3Value", weld) 
126
        a.Name = "Angle"
127
        local x,y,z=weld.C0:toEulerAnglesXYZ()
128
        a.Value=v3(mdeg(x),mdeg(y),mdeg(z)) 
129
    end 
130
    return weld.C0.p,weld.Angle.Value
131
end 
132
function ClearWeld(weld)
133
	if weld:findFirstChild'Angle' then 
134
		weld.Angle:Remove() 
135
	end 
136
end
137
function SetWeld(weld,CC,i, loops, origpos,origangle, nextpos,nextangle,smooth) 
138
    local CO='C'..CC
139
    smooth = smooth or 1 
140
    if not weld:findFirstChild("Angle") then 
141
        local a = Instance.new("Vector3Value", weld) 
142
        a.Name = "Angle"
143
        local x,y,z=weld.C0:toEulerAnglesXYZ()
144
        a.Value=v3(mdeg(x),mdeg(y),mdeg(z)) 
145
    end 
146
 
147
    local perc 
148
    if smooth == 1 then 
149
        perc = math.sin((math.pi/2)/loops*i) 
150
    else 
151
        perc = i/loops 
152
    end 
153
 
154
    local tox,toy,toz = 0,0,0 
155
    if origangle.x > nextangle.x then 
156
        tox = -math.abs(origangle.x - nextangle.x) *perc 
157
    else 
158
        tox = math.abs(origangle.x - nextangle.x) *perc 
159
    end 
160
    if origangle.y > nextangle.y then 
161
        toy = -math.abs(origangle.y - nextangle.y) *perc 
162
    else 
163
        toy = math.abs(origangle.y - nextangle.y) *perc 
164
    end 
165
    if origangle.z > nextangle.z then 
166
        toz = -math.abs(origangle.z - nextangle.z) *perc 
167
    else 
168
        toz = math.abs(origangle.z - nextangle.z) *perc 
169
    end 
170
 
171
    local tox2,toy2,toz2 = 0,0,0 
172
    if origpos.x > nextpos.x then 
173
        tox2 = -math.abs(origpos.x - nextpos.x) *perc 
174
    else 
175
        tox2 = math.abs(origpos.x - nextpos.x) *perc 
176
    end 
177
    if origpos.y > nextpos.y then 
178
        toy2 = -math.abs(origpos.y - nextpos.y) *perc 
179
    else 
180
        toy2 = math.abs(origpos.y - nextpos.y) *perc 
181
    end 
182
    if origpos.z > nextpos.z then 
183
        toz2 = -math.abs(origpos.z - nextpos.z) *perc 
184
    else 
185
        toz2 = math.abs(origpos.z - nextpos.z) *perc 
186
    end 
187
         weld.Angle.Value = Vector3.new(origangle.x + tox,origangle.y + toy,origangle.z + toz)
188
    weld[CO] = CFrame.new(origpos.x + tox2,origpos.y + toy2,origpos.z + toz2)*ca(origangle.x + tox,origangle.y + toy,origangle.z + toz) 
189
end 
190
191
LoopFunctions={}
192
function DoLoop(times,func)
193
	LoopFunctions[#LoopFunctions+1]={times,0,func}
194
end
195
196
Combo = 0
197
HookHit = false
198
Dmg=false
199
Dmg2=false
200
Dmgv={17,23}
201
HitDebounce={}
202
203
Damage=function(Hum,Mult,Sound)
204
	if not Hum.Parent:findFirstChild'Torso' then return end 
205
	local HName=Hum.Parent.Name
206
	if HitDebounce[HName] and HitDebounce[HName]>tick() then return end 
207
	HitDebounce[HName]=tick()+0.5
208
	local Mult=Mult or 1
209
	local Dealt=mran(Dmgv[1],Dmgv[2])*Mult
210
	local col=''
211
	if Hum.Parent:findFirstChild'Block' and Hum.Parent.Block.Value>0 then 
212
		Hum.Parent.Block.Value=Hum.Parent.Block.Value-1
213
		col='Bright blue'
214
	else
215
		Hum.Health=Hum.Health-Dealt
216
		col='Bright red'
217
	end
218
	if Sound then 
219
		so[col=='Bright blue' and 'Block' or 'Hit']:Play() 
220
	end
221
	local DoH=iNew{'Model',Pack,Name=col=='Bright blue' and 'Block' or Dealt}
222
	iNew{'Humanoid',DoH,MaxHealth=0,Health=0,Name=''}
223
	local Doh=iPart{DoH,1,0.2,1,co=col,an=true} 
224
	Doh.Name='Head' 
225
	iNew{'BlockMesh',Doh}
226
	local dofs=Hum.Parent.Torso.CFrame*cn(mran2(-1.5,1.5),2.5,mran2(-1,1)) 
227
	Doh.CFrame=dofs
228
	DoLoop(40,function(i) 
229
		Doh.CFrame=dofs*cn(0,i*2,0) Doh.Transparency=i-0.5 
230
		if i==1 then 
231
			DoH:Remove() 
232
		end 
233
	end)
234
end
235
236
Trails={}
237
TrailPack={}
238
Traili={}
239
function Trail(obj,ofs,col)
240
	Trails[obj]=true
241
	Traili[#Traili+1]={obj,ofs,col,obj.CFrame*ofs}
242
end
243
244
245
Gyro=iNew{"BodyGyro",Root.Parent,D=50,P=1500}
246
247
c={'Dark stone grey','Reddish brown','Light stone grey'}
248
Tool=iNew{'HopperBin',Player.Backpack,Name=name}
249
Pack=iNew{'Model',Char,Name=name}
250
251
-- hook
252
Hook = iPart{Pack,0.25,1,0.25,co=c[1]}
253
wHook= iNew{"Weld",Pack,Part0=RL,Part1=Hook,C0=cn(0.625,1,0)*ca(210,0,0)} iNew{"CylinderMesh",Hook}
254
255
hpb = iPart{Pack,0.2,0.2,0.2,co=c[1]}
256
iNew{"Weld",Pack,Part0=Hook,Part1=hpb,C0=cn(0,-0.55,0)} 
257
iNew{"CylinderMesh",hpb,Scale=v3(0.5,0.5,0.5)}
258
259
hpr = iPart{Pack,1,1,1,co=c[1]}
260
iNew{"Weld",Pack,Part0=hpb,Part1=hpr,C0=cn(0,-0.25,0)*ca(0,90,0)}
261
iNew{"SpecialMesh",hpr,MeshId=as.ring,Scale=v3(0.4,0.4,0.6)}
262
263
hpr = iPart{Pack,0,0,0,tr=1}
264
iNew{"Weld",Pack,Part0=hpb,Part1=hpr,C0=cn(0,-0.45,0)}
265
266
hb = iPart{Pack,0.25,0.25,0.25,co=c[1]}
267
iNew{"Weld",Pack,Part0=Hook,Part1=hb,C0=cn(0,0.5,0)} iNew{"SpecialMesh",hb,MeshType="Sphere"}
268
269
h1 = iPart{Pack,0.25,0.5,0.25,co=c[1]}
270
iNew{"Weld",Pack,Part0=hb,Part1=h1,C0=ca(60,0,0)*cn(0,0.25,0)} iNew{"CylinderMesh",h1}
271
272
h1b = iPart{Pack,0.25,0.25,0.25,co=c[1]} h1b.Name="Ball1"
273
iNew{"Weld",Pack,Part0=h1,Part1=h1b,C0=cn(0,0.25,0)} iNew{"SpecialMesh",h1b,MeshType="Sphere"}
274
275
for i=1,4 do
276
	hpart = iPart{Pack,0.25,0.5,0.25,co=c[1]} iNew{"CylinderMesh",hpart}
277
	iNew{"Weld",Pack,Part0=Pack["Ball"..i],Part1=hpart,C0=ca(-45,0,0)*cn(0,0.25,0)}
278
	hball = iPart{Pack,0.25,0.25,0.25,co=c[1]} hball.Name="Ball"..(i+1) iNew{"SpecialMesh",hball,MeshType="Sphere"}
279
	if hball.Name ~= "Ball5" then
280
		iNew{"Weld",Pack,Part0=hpart,Part1=hball,C0=cn(0,0.25,0)}
281
	else
282
		iNew{"Weld",Pack,Part0=hpart,Part1=hball,C0=cn(0,0.25,0)*ca(-45,0,0)}
283
	end
284
end
285
286
spi = iPart{Pack,0.25,0.5,0.25,co=c[1]}
287
iNew{"Weld",Pack,Part0=Pack["Ball5"],Part1=spi,C0=cn(0,0.3,0)} iNew{"SpecialMesh",spi,MeshId=as.cone,Scale=v3(0.125,0.7,0.125)}
288
289
HookHitBox = iPart{Pack,0.4,1.25,1.25,tr=1}
290
iNew{"Weld",Pack,Part0=Hook,Part1=HookHitBox,C0=cn(0,1.2,0)}
291
292
-- cleaver
293
Cleaver = iPart{Pack,0.25,1,0.25,co=c[2]} 
294
wCleaver = iNew{"Weld",Pack,Part0=LL,Part1=Cleaver,C0=cn(-0.625,1,0)*ca(210,0,0)} Cleaver.Material="Wood"
295
296
hpb = iPart{Pack,0.2,0.2,0.2,co=c[1]}
297
iNew{"Weld",Pack,Part0=Cleaver,Part1=hpb,C0=cn(0,-0.55,0)}
298
iNew{"CylinderMesh",hpb,Scale=v3(0.5,0.5,0.5)}
299
300
cpr=iPart{Pack,0.3,0.3,0.3,co=c[1]}
301
iNew{"Weld",Pack,Part0=hpb,Part1=cpr,C0=cn(0,-0.25,0)}
302
iNew{"SpecialMesh",cpr,MeshId=as.ring,Scale=v3(0.4,0.4,0.6)}
303
304
hs1=iPart{Pack,1,1,1,co=c[3]}
305
iNew{"Weld",Pack,Part0=Cleaver,Part1=hs1,C0=cn(0,-0.4,0)*ca(0,0,90)}
306
iNew{"CylinderMesh",hs1,Scale=v3(0.1,0.3,0.1)}
307
308
hs2=iPart{Pack,1,1,1,co=c[3]}
309
iNew{"Weld",Pack,Part0=Cleaver,Part1=hs2,C0=cn(0,0.4,0)*ca(0,0,90)}
310
iNew{"CylinderMesh",hs2,Scale=v3(0.1,0.3,0.1)}
311
312
bl=iPart{Pack,1,1.5,0.6,co=c[1]}
313
iNew{"Weld",Pack,Part0=Cleaver,Part1=bl,C0=cn(0,1.15,-0.3+0.135)}
314
iNew{"BlockMesh",bl,Scale=v3(0.12,1,1)}
315
316
for i=-1,1,2 do
317
	bw=iPart{Pack,1.5,0.2,1,co=c[3]}
318
	iNew{"Weld",Pack,Part0=bl,Part1=bw,C0=cn(0.03*i,0,-0.4)*ca(0,-90*i,90*i)}
319
	iNew{"SpecialMesh",bw,MeshType="Wedge",Scale=v3(1,1,0.06)}
320
end
321
322
for i=0,360,360/8 do
323
	prop = iPart{Pack,1,1,1,co=c[1]}
324
	iNew{"Weld",Pack,Part0=bl,Part1=prop,C0=cn(0,0.6,0.375)*ca(i,0,0)*cn(0,0,0.1)}
325
	iNew{"BlockMesh",prop,Scale=v3(0.12,0.12,0.075)}
326
end
327
328
prop = iPart{Pack,1,1,0.25,co=c[1]}
329
iNew{"Weld",Pack,Part0=bl,Part1=prop,C0=cn(0,0.72,0.425)}
330
iNew{"BlockMesh",prop,Scale=v3(0.12,0.06,1)}
331
332
prop = iPart{Pack,1,0.25,1,co=c[1]}
333
iNew{"Weld",Pack,Part0=bl,Part1=prop,C0=cn(0,0.6,0.52)}
334
iNew{"BlockMesh",prop,Scale=v3(0.12,1,0.06)}
335
336
prop = iPart{Pack,1,0.2,0.75,co=c[1]}
337
iNew{"Weld",Pack,Part0=bl,Part1=prop,C0=cn(0,0.125,0.45)*ca(90,180,0)}
338
iNew{"SpecialMesh",prop,Scale=v3(0.12,1,1),MeshType="Wedge"}
339
340
propl = iPart{Pack,1,1,0.75,co=c[1]}
341
iNew{"Weld",Pack,Part0=bl,Part1=propl,C0=cn(0,0.125,0.325)*ca(90,180,0)}
342
iNew{"BlockMesh",propl,Scale=v3(0.12,0.05,1)}
343
344
prop = iPart{Pack,1,1,0.5,co=c[1]}
345
iNew{"Weld",Pack,Part0=propl,Part1=prop,C0=cn(0,0,-1.25/2)}
346
iNew{"SpecialMesh",prop,Scale=v3(0.12,0.05,1),MeshType="Wedge"}
347
348
CleaverHitBox = iPart{Pack,0.4,1.6,1.25,tr=1}
349
iNew{"Weld",Pack,Part0=Cleaver,Part1=CleaverHitBox,C0=cn(0,1.15,-0.2)}
350
351
for i,v in pairs(Pack:GetChildren()) do if v:IsA("BasePart") then v.CanCollide=false v.Name="Ignore" end end
352
353
hTW=nil
354
HookHitBox.Touched:connect(function(hit)
355
	if Anim == "Throwing Hook" and not HookHit then
356
		if hit.Parent~=Char and hit.Parent:FindFirstChild("Humanoid") then
357
			HookHit = true
358
			local hHum = hit.Parent:FindFirstChild("Humanoid")
359
			hHum.PlatformStand=true
360
			DoLoop(20,function(i)
361
				wait()
362
				if i==1 then
363
					hHum.PlatformStand=false
364
				end
365
			end)
366
			Spawn(function()
367
				while HookHit do
368
					hit.Parent.Torso.CFrame = HookHitBox.CFrame*ca(0,0,90)*ca(0,90,0)
369
					wait()
370
				end
371
			end)
372
		end
373
	end
374
	if not Dmg then return end 
375
	if hit.Parent==Char then return end 
376
	if hit.Parent:findFirstChild'Humanoid' then 
377
		local h=hit.Parent.Humanoid
378
		Damage(h,1,true)
379
	end
380
end)
381
382
CleaverHitBox.Touched:connect(function(hit)
383
	if not Dmg2 then return end 
384
	if hit.Parent==Char then return end 
385
	if hit.Parent:findFirstChild'Humanoid' then 
386
		local h=hit.Parent.Humanoid
387
		Damage(h,1,true)
388
	end
389
end)
390
391
for i,v in pairs(Torso:children()) do 
392
	if v:IsA'Sound' then 
393
		v:Remove() 
394
	end
395
end
396
for i,n in pairs(so) do 
397
	local v=iNew{'Sound',Torso,Volume=1,Pitch=1,Looped=false,Name=v,SoundId=as[n]}
398
	so[n]=v
399
end
400
401
function RePose()
402
	local a,b=GetWeld(LAW)
403
	local c,d=GetWeld(RAW)
404
	local e,f=GetWeld(wHook)
405
	local g,h=GetWeld(wCleaver)
406
	local i,j=GetWeld(Root)
407
	local k,l=GetWeld(Neck)
408
	oPoseLA=a oPoseLA2=b 
409
	oPoseRA=c oPoseRA2=d
410
	oPoseHook=e oPoseHook2=f
411
	oPoseCleaver=g oPoseCleaver2=h
412
	oPoseRT=i oPoseRT2=j 
413
	oPoseNE=k oPoseNE2=l
414
end
415
416
function ReturnPose()
417
	local wLA,wLA2=GetWeld(LAW)
418
	local wRA,wRA2=GetWeld(RAW)
419
	local wRT,wRT2=GetWeld(Root)
420
	local AA,AA2=GetWeld(wHook)
421
	local BB,BB2=GetWeld(wCleaver) 
422
	local wNE,wNE2=GetWeld(Neck) 
423
	for i=1,ASpeed do 
424
		SetWeld(LAW,0,i,ASpeed,wLA,wLA2,PoseLA,PoseLA2,1) 
425
		SetWeld(RAW,0,i,ASpeed,wRA,wRA2,PoseRA,PoseRA2,1) 
426
		SetWeld(wHook,0,i,ASpeed,AA,AA2,PoseHook,PoseHook2,1) 
427
		SetWeld(wCleaver,0,i,ASpeed,BB,BB2,PoseCleaver,PoseCleaver2,1) 
428
		SetWeld(Root,0,i,ASpeed,wRT,wRT2,PoseRT,PoseRT2,1) 
429
		SetWeld(Neck,0,i,ASpeed,wNE,wNE2,PoseNE,PoseNE2,1) 
430
		wait()
431
	end
432
end
433
function TorsoROT(i,rot,spid)
434
	SetWeld(Root,0,i,spid,oPoseRT,oPoseRT2,PoseRT,v3(0,rot,0),1) 
435
	SetWeld(Neck,0,i,spid,oPoseNE,oPoseNE2,PoseNE,v3(0,-rot,0),1) 
436
end
437
438
Block=iNew{'NumberValue',Char,Name='Block',Value=0}
439
440
441
key={}
442
Tool.Selected:connect(function(mouse)
443
print'Selected'
444
Mouse=mouse
445
	if Anim=='None' then 
446
		Anim='Equipping'
447
        Arms(0)
448
		for i=1,ASpeed do 
449
			SetWeld(LAW,0,i,ASpeed,OrigLA,OrigLA2,OrigLA,v3(-25,0,5),1) 
450
			SetWeld(RAW,0,i,ASpeed,OrigRA,OrigRA2,OrigRA,v3(-25,0,-5),1) 
451
			wait()
452
		end
453
		local ofs = RA.CFrame:toObjectSpace(Hook.CFrame)
454
		wHook.Part0=RA wHook.C0=ofs ClearWeld(wHook)
455
		local AA,AA2=GetWeld(wHook)
456
		local ofs = LA.CFrame:toObjectSpace(Cleaver.CFrame)
457
		wCleaver.Part0=LA wCleaver.C0=ofs ClearWeld(wCleaver)
458
		local BB,BB2=GetWeld(wCleaver)
459
		for i=1,ASpeed do 
460
			SetWeld(wHook,0,i,ASpeed,AA,AA2,PoseHook,PoseHook2,1) 
461
			SetWeld(wCleaver,0,i,ASpeed,BB,BB2,PoseCleaver,PoseCleaver2,1) 
462
			wait() 
463
		end
464
        ReturnPose()
465
        Anim='Equipped'
466
	end
467
468
	Mouse.KeyDown:connect(function(k)
469
		key[k]=true
470
		if k=="q" and Anim == "Equipped" and Combo == 0 then
471
			Anim = "Cleaver Slash"
472
			RePose()
473
			for i=1,ASpeed do 
474
				SetWeld(LAW,0,i,ASpeed,PoseLA,PoseLA2,PoseLA,v3(200,0,-35),1)
475
				SetWeld(Neck,0,i,ASpeed,oPoseNE,oPoseNE2,PoseNE,v3(15,15,0),1)
476
				wait()
477
			end
478
			Trail(Cleaver,cn(0,1.75,-0.75),'White')
479
			Dmg2=true
480
			for i=1,ASpeed/2 do 
481
				SetWeld(LAW,0,i,ASpeed/2,PoseLA,v3(200,0,-35),PoseLA,v3(20,0,20),1) 
482
				SetWeld(Neck,0,i,ASpeed/2,oPoseNE,v3(15,15,0),PoseNE,v3(-5,-5,0),1)
483
				wait()
484
			end
485
			Trails[Cleaver]=false
486
			Dmg2=false
487
			ReturnPose()
488
			Anim="Equipped"
489
		elseif k=="e" and Anim=="Equipped" and Combo == 0 then
490
			Anim = "Hook Slash"
491
			RePose()
492
			for i=1,ASpeed do 
493
				SetWeld(RAW,0,i,ASpeed,PoseRA,PoseRA2,PoseRA,v3(200,0,35),1) 
494
				SetWeld(Neck,0,i,ASpeed,oPoseNE,oPoseNE2,PoseNE,v3(15,-15,0),1)
495
				wait()
496
			end
497
			Trail(Hook,cn(0,1,-0.75),'White')
498
			Dmg=true
499
			for i=1,ASpeed/2 do 
500
				SetWeld(RAW,0,i,ASpeed/2,PoseRA,v3(200,0,35),PoseRA,v3(20,0,-20),1) 
501
				SetWeld(Neck,0,i,ASpeed/2,oPoseNE,v3(15,-15,0),PoseNE,v3(-5,5,0),1)
502
				wait()
503
			end
504
			Trails[Hook]=false
505
			Dmg=false
506
			ReturnPose()
507
			Anim="Equipped"
508
		elseif k=="r" and Anim=="Equipped" then
509
			Anim = "Combo"
510
			local function Break() Combo=-0.5 ReturnPose() Anim="Equipped" Combo=0 end
511
			if Combo==0 then
512
					Combo=0.5
513
					Anim="Slash 1"
514
					RePose()
515
					for i=1,ASpeed do
516
						SetWeld(LAW,0,i,ASpeed,PoseLA,PoseRA2,v3(-1.2,0.5,0),v3(180,0,-10),1) 
517
						SetWeld(RAW,0,i,ASpeed,PoseRA,PoseRA2,v3(1.2,0.5,0),v3(180,0,10),1) 
518
						SetWeld(Neck,0,i,ASpeed,oPoseNE,oPoseNE2,PoseNE,v3(40,0,0),1)
519
						wait()
520
					end
521
					Anim="Equipped"
522
					Combo=1
523
				DoLoop(5,function(i)
524
					if i==1 and Combo==1 then
525
						Break()
526
					end
527
					wait()
528
				end)
529
			elseif Combo==1 then
530
					Combo=1.5
531
					anim="Slash 1"
532
					Dmg=true Dmg2=true
533
					so['Slash']:Play()
534
					Trail(Hook,cn(0,1,-0.75),'White')
535
					Trail(Cleaver,cn(0,1.75,-0.75),'White')
536
					RePose()
537
					local wLA,wLA2=GetWeld(LAW)
538
					local wRA,wRA2=GetWeld(RAW)
539
					local wNE,wNE2=GetWeld(Neck)
540
					for i=1,ASpeed/2 do
541
						SetWeld(LAW,0,i,ASpeed/2,wLA,wLA2,PoseLA,v3(-15,0,0),1) 
542
						SetWeld(RAW,0,i,ASpeed/2,wRA,wRA2,PoseRA,v3(-15,0,0),1) 
543
						SetWeld(Neck,0,i,ASpeed/2,wNE,wNE2,PoseNE,v3(-20,0,0),1)
544
						wait()
545
					end
546
					Dmg=false Dmg2=false
547
					Trails[Hook]=false Trails[Cleaver]=false
548
					Anim="Equipped"
549
					Combo=2
550
				DoLoop(5,function(i)
551
					if i==1 and Combo==2 then
552
						Break()
553
					end
554
					wait()
555
				end)
556
			elseif Combo==2 then
557
					Combo=2.5
558
					Anim="Slash 2"
559
					local wLA,wLA2=GetWeld(LAW)
560
					local wRA,wRA2=GetWeld(RAW)
561
					local wNE,wNE2=GetWeld(Neck)
562
					for i=1,ASpeed do
563
						SetWeld(LAW,0,i,ASpeed,wLA,wRA2,v3(-1.2,0.5,0),v3(110,0,30),1) 
564
						SetWeld(RAW,0,i,ASpeed,wRA,wRA2,v3(1.2,0.5,0),v3(110,0,-30),1) 
565
						SetWeld(Neck,0,i,ASpeed,wNE,wNE2,PoseNE,v3(40,0,0),1)
566
						wait()
567
					end
568
					Anim="Equipped"
569
					Combo=3
570
				DoLoop(5,function(i)
571
					if i==1 and Combo==3 then
572
						Break()
573
					end
574
					wait()
575
				end)
576
			elseif Combo==3 then
577
					Combo=3.5
578
					Anim="Slash 2"
579
					Dmg=true Dmg2=true
580
					so['Slash']:Play()
581
					Trail(Hook,cn(0,1,-0.75),'White')
582
					Trail(Cleaver,cn(0,1.75,-0.75),'White')
583
					local wLA,wLA2=GetWeld(LAW)
584
					local wRA,wRA2=GetWeld(RAW)
585
					local wNE,wNE2=GetWeld(Neck)
586
					for i=1,ASpeed/2 do
587
						SetWeld(LAW,0,i,ASpeed/2,wLA,wLA2,PoseLA,v3(-40,0,-30),1) 
588
						SetWeld(RAW,0,i,ASpeed/2,wRA,wRA2,PoseRA,v3(-40,0,30),1) 
589
						SetWeld(Neck,0,i,ASpeed/2,wNE,wNE2,PoseNE,v3(-20,0,0),1)
590
						wait()
591
					end
592
					Dmg=false Dmg2=false
593
					Trails[Hook]=false Trails[Cleaver]=false
594
					Anim="Equipped"
595
					Combo=4
596
				DoLoop(5,function(i)
597
					if i==1 and Combo==4 then
598
						Break()
599
					end
600
					wait()
601
				end)
602
			end
603
		end
604
	end)--keys
605
	
606
	Mouse.KeyUp:connect(function(k)
607
		key[k]=false
608
	end)
609
	
610
	Mouse.Button1Down:connect(function()
611
		if Anim == "Equipped" and Combo == 0 then
612
			local Dist = nil
613
			Anim = "Getting Ready"
614
			Humanoid.WalkSpeed = 4
615
			RePose()
616
			for i=1,ASpeed do 
617
				TorsoROT(i,80,ASpeed)
618
				SetWeld(RAW,0,i,ASpeed,PoseRA,PoseRA2,PoseRA,v3(0,190,-90),1) 
619
				SetWeld(wHook,0,i,ASpeed,PoseHook,PoseHook2,v3(0,-2,0),v3(-180,0,0),1)
620
				wait()
621
			end
622
			Anim = "Throwing Hook"
623
			Rope=iPart{Pack,0.2,1,0.2,co="Reddish brown",an=true}
624
			iNew{"CylinderMesh",Rope}
625
			Dmg=true
626
			for i=1,ASpeed*3 do
627
				if HookHit then break end
628
				SetWeld(wHook,0,i,ASpeed*3,v3(0,-2,0),v3(-180,0,0),v3(0,-2-(Range),0),v3(-180,0,0),1)
629
				wait()
630
			end
631
			Dist = wHook.C0.Y
632
			Anim = "Retrieving Hook"
633
			Humanoid.WalkSpeed=16
634
			Dmg=false
635
			for i=1,ASpeed*(-Dist/20) do
636
				SetWeld(Root,0,i,ASpeed*(-Dist/20),oPoseRT,v3(0,80,0),PoseRT,v3(0,-60,0),1) 
637
				SetWeld(Neck,0,i,ASpeed*(-Dist/20),oPoseNE,v3(0,-80,0),PoseNE,v3(0,60,0),1) 
638
				SetWeld(RAW,0,i,ASpeed*(-Dist/20),PoseRA,v3(0,190,-90),PoseRA,v3(0,190+150,-90),1) 
639
				SetWeld(wHook,0,i,ASpeed*(-Dist/20),v3(0,Dist,0),v3(-180,0,0),v3(0,-2,0),v3(-180,0,0),1)
640
				wait()
641
			end
642
			pcall(function() hTW:Destroy() end)
643
			HookHit=false
644
			ReturnPose()
645
			Anim = "Equipped"
646
		end
647
	end)
648
end) -- select
649
650
Tool.Deselected:connect(function(mouse)
651
	print'Deselected'
652
	Mouse=nil
653
	if Anim=='Equipped' and Combo == 0 then 
654
		Anim='Unequipping'
655
        RePose()
656
		for i=1,ASpeed do 
657
			SetWeld(LAW,0,i,ASpeed,PoseLA,PoseLA2,OrigLA,v3(-25,0,5),1) 
658
			SetWeld(RAW,0,i,ASpeed,PoseRA,PoseRA2,OrigRA,v3(-25,0,-5),1) 
659
			wait()
660
		end
661
		local ofs = RL.CFrame:toObjectSpace(Hook.CFrame)
662
        wHook.Part0=RL wHook.C0=ofs ClearWeld(wHook)
663
        local AA,AA2=GetWeld(wHook)
664
        local ofs = LL.CFrame:toObjectSpace(Cleaver.CFrame)
665
        wCleaver.Part0=LL wCleaver.C0=ofs ClearWeld(wCleaver)
666
        local BB,BB2=GetWeld(wCleaver) 
667
		for i=1,ASpeed do 
668
			SetWeld(wHook,0,i,ASpeed,AA,AA2,v3(0.625,1,0),v3(210,0,0),1) 
669
			SetWeld(wCleaver,0,i,ASpeed,BB,BB2,v3(-0.625,1,0),v3(210,0,0),1) 
670
			wait() 
671
		end
672
		for i=1,ASpeed do 
673
			SetWeld(LAW,0,i,ASpeed,PoseLA,v3(-25,0,5),OrigLA,OrigLA2,1) 
674
			SetWeld(RAW,0,i,ASpeed,PoseRA,v3(-25,0,-5),OrigRA,OrigRA2,1) 
675
			wait()
676
		end
677
        Arms()
678
        Anim='None'
679
	end
680
end) --deselect
681
682
683
print(#Pack:children())
684
Root.C0=cn(0,0,0)*ca(0,0,0)
685
Root.C1=cn(0,0,0)*ca(0,0,0)
686
Arms()
687
Legs()
688
689
WalkAnim=0
690
Walking=false
691
Humanoid.Running:connect(function(Walk)
692
	Walking=Walk>0 and true or false
693
end)
694
695
Anim='None'
696
ASpeed=10
697
OrigLA=v3(-1.5,0.5,0) OrigLA2=v3(0,0,0)
698
OrigRA=v3( 1.5,0.5,0) OrigRA2=v3(0,0,0)
699
--Pose
700
PoseLA=v3(-1.5,0.5,0) PoseLA2=v3(0,0,-10)
701
PoseRA=v3( 1.5,0.5,0) PoseRA2=v3(0,0,10)
702
PoseHook=v3(0,-1,0) PoseHook2=v3(-90,0,0)
703
PoseCleaver=v3(0,-1,0) PoseCleaver2=v3(-90,0,0)
704
PoseRT=v3(0,0,0) PoseRT2=v3(0,0,0)
705
PoseNE=v3(0,1.5,0) PoseNE2=v3(0,0,0)
706
707
while Pack.Parent do
708
	-- Rope
709
	if Anim == "Throwing Hook" or Anim == "Retrieving Hook" then
710
		Mag=(RA.Position-hpr.Position).magnitude
711
		Rope.Size=v3(0.2,Mag,0.2)
712
		Rope.CFrame=RA.CFrame*cn(0,-Mag/2,0)
713
	else
714
		pcall(function()
715
			Rope:Destroy()
716
		end)
717
	end
718
	
719
	--Trailing Package
720
	for i,v in pairs(Traili) do 
721
		if Trails[v[1]] then
722
			local obj,ofs,col,lastofs=v[1],v[2],v[3],v[4]
723
			local length=(obj.CFrame*ofs.p-lastofs.p).magnitude
724
			local ob=iPart{Pack,0.4,length,0.4,co=col,tr=0.5,an=true,cf=CFrame.new(obj.CFrame*ofs.p,lastofs.p)}
725
			iNew{'CylinderMesh',ob}
726
			Traili[i][4]=ob.CFrame
727
			ob.CFrame=ob.CFrame*cn(0,0,-length/2)*ca(90,0,0)
728
			TrailPack[#TrailPack+1]={ob,1,-0.1}
729
		else
730
			Traili[i]=nil
731
		end
732
	end
733
	for i,v in pairs(TrailPack) do 
734
		v[2]=v[2]+v[3]
735
		if v[2]<=0 then 
736
			v[1]:Remove()
737
			TrailPack[i]=nil 
738
		else
739
			v[1].Transparency=0.5+(0.45-0.45*v[2])
740
			v[1].Mesh.Scale=v3(v[2],1,v[2])
741
		end
742
	end	
743
	--DoLoop Package
744
	for i,v in pairs(LoopFunctions) do 
745
		v[2]=v[2]+1
746
		v[3](v[2]/v[1])
747
		if v[1]<=v[2] then 
748
			LoopFunctions[i]=nil 
749
		end 
750
	end
751
	--[[
752
	HookHitBox.CFrame=Hook.CFrame*cn(0,1.2,0)
753
	HookHitBox.Velocity=v3(0,0,0) HookHitBox.RotVelocity=v3(0,0,0)
754
	CleaverHitBox.CFrame=Cleaver.CFrame*cn(0,1.15,-0.2)
755
	CleaverHitBox.Velocity=v3(0,0,0) CleaverHitBox.RotVelocity=v3(0,0,0)
756
	]]
757
	-- Gyro
758
	if Anim~="None" then
759
		Gyro.maxTorque=v3(1,1,1)/0
760
		Gyro.cframe = cn(Root.Parent.Position,v3(workspace.CurrentCamera.CoordinateFrame.p.x,Root.Parent.Position.y,workspace.CurrentCamera.CoordinateFrame.p.z))*ca(0,180,0)
761
	else 
762
		Gyro.maxTorque = v3(0,0,0) 
763
	end 
764
	wait()
765
end