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 |