-
Notifications
You must be signed in to change notification settings - Fork 24
Expand file tree
/
Copy pathattackontitan
More file actions
597 lines (569 loc) · 22.4 KB
/
attackontitan
File metadata and controls
597 lines (569 loc) · 22.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
--3D Manuever Gear Script --
-- Based off of Attack on titan c; --
-- Made by kash5 [NOT THE SCRIPT] --
-- Local Script --
debounce = false
v3 = Vector3.new
cn = CFrame.new
ca2 = CFrame.Angles
mf = math.floor
mran = math.random
mrad = math.rad
mdeg = math.deg
ca = function(x,y,z) return ca2(mrad(x),mrad(y),mrad(z)) end
v32=function(x,y,z) return v3(mdeg(x),mdeg(y),mdeg(z)) end
mran2 = function(a,b) return mran(a*1000,b*1000)/1000 end
ud=UDim2.new
bn = BrickColor.new
c3 = Color3.new
nov3=v3(0,0,0)
maxv3=v3(1,1,1)/0
-----
Player = game:service'Players'.LocalPlayer
Char = Player.Character
Torso = Char.Torso
Head = Char.Head
Humanoid = Char.Humanoid
Root=Char.HumanoidRootPart.RootJoint
LA=Char['Left Arm']
RA=Char['Right Arm']
LL=Char['Left Leg']
RL=Char['Right Leg']
LAM=Torso:findFirstChild'Left Shoulder' or _G.LAM
RAM=Torso:findFirstChild'Right Shoulder' or _G.RAM
LLM=Torso:findFirstChild'Left Hip' or _G.LLM
RLM=Torso:findFirstChild'Right Hip' or _G.RLM
Neck=Torso.Neck
Neck.C0=cn(0,1.5,0)
Neck.C1=cn(0,0,0)
_G.LAM=LAM _G.RAM=RAM _G.LLM=LLM _G.RLM=RLM
as,so={},{'metal','Block','Slash','Slash2','Hit','Kick'}
as.corner='11294911'
as.cone='1033714'
as.ring="3270017"
as.Chakram='47260990'
as.ring2='18430887'
as.blast='20329976'
as.missile='10207677'
as.fire='2693346'
as.boom='3264793'
as.slash='143858925'
as.abscond='2767090'
as.firelaser='13775494'
as.diamond='9756362'
as.metal='rbxasset://sounds\\unsheath.wav'
as.Block = 'rbxasset://sounds\\metal.ogg'
as.Slash = '10209645'
as.Slash2 = '46760716'
as.Hit='10209583'
as.Kick='46153268'
as.cast='2101137'
for i,v in pairs(as) do
if type(tonumber(v:sub(1,3)))=="number" then
as[i]="http://www.roblox.com/asset/?id="..v
end
end
game:service"ControllerService":ClearAllChildren()
Controls=Instance.new("HumanoidController",game:service"ControllerService")
LastMade=nil
iNew=function(tab)
local v=Instance.new(tab[1])
for Ind,Val in pairs(tab) do
if Ind~=1 and Ind~=2 then
v[Ind] = Val
end
end
v.Parent=tab[2]==0 and LastMade or tab[2]
LastMade=v
return v
end
iPart=function(tab)
local v=Instance.new(tab.type or 'Part')
if tab.type~='CornerWedgePart' then v.formFactor='Custom' end
v.TopSurface=0 v.BottomSurface=0
if tab.sc then
v.Size=v3(tab[2]*tab.sc,tab[3]*tab.sc,tab[4]*tab.sc)
else
v.Size=v3(tab[2],tab[3],tab[4])
end
if tab.co then v.BrickColor=bn(tab.co) end
if tab.tr then v.Transparency=tab.tr end
if tab.rf then v.Reflectance=tab.rf end
v.CanCollide=false --if tab.can then v.CanCollide=tab.can end
if tab.cf then v.CFrame=tab.cf end
if tab.an then v.Anchored=tab.an end
if tab.na then v.Name=tab.na end
if tab.ma then v.Material=tab.ma end
v.Parent=tab[1]
v:BreakJoints()
LastMade=v
return v
end
ray = function(Pos, Dir,tab,length) -- ray cast
return workspace:FindPartOnRay(Ray.new(Pos, Dir.unit *(length or 999)),tab)
end
function getoutline(x,z,i)
return math.sqrt(x^2+z^2)+(i or 0.05),mdeg(math.atan2(x,z))
end
function v3a(cf)
local x,y,z=cf:toEulerAnglesXYZ()
return v3(mdeg(x),mdeg(y),mdeg(z))
end
function TweenV3(i, loops,origpos,nextpos,smooth)
loops=math.floor(loops)
smooth = smooth or 1
local tox2,toy2,toz2 = 0,0,0
local perc =smooth==1 and math.sin((math.pi/2)/loops*i) or i/loops
tox2= origpos.x > nextpos.x and -math.abs(origpos.x - nextpos.x) *perc or math.abs(origpos.x - nextpos.x) *perc
toy2= origpos.y > nextpos.y and -math.abs(origpos.y - nextpos.y) *perc or math.abs(origpos.y - nextpos.y) *perc
toz2= origpos.z > nextpos.z and -math.abs(origpos.z - nextpos.z) *perc or math.abs(origpos.z - nextpos.z) *perc
return v3(origpos.x + tox2,origpos.y + toy2,origpos.z + toz2)
end
function TweenCF(i, loops,origpos,nextpos,smooth)
loops=math.floor(loops)
smooth = smooth or 1
local x0,y0,z0=origpos:toEulerAnglesXYZ()
local x1,y1,z1=nextpos:toEulerAnglesXYZ()
origangle=v32(x0,y0,z0)
nextangle=v32(x1,y1,z1)
local perc =smooth==1 and math.sin((math.pi/2)/loops*i) or i/loops
local tox,toy,toz = 0,0,0
tox = origangle.x > nextangle.x and -math.abs(origangle.x - nextangle.x) *perc or math.abs(origangle.x - nextangle.x) *perc
toy = origangle.y > nextangle.y and -math.abs(origangle.y - nextangle.y) *perc or math.abs(origangle.y - nextangle.y) *perc
toz = origangle.z > nextangle.z and -math.abs(origangle.z - nextangle.z) *perc or math.abs(origangle.z - nextangle.z) *perc
local tox2,toy2,toz2 = 0,0,0
tox2= origpos.x > nextpos.x and -math.abs(origpos.x - nextpos.x) *perc or math.abs(origpos.x - nextpos.x) *perc
toy2= origpos.y > nextpos.y and -math.abs(origpos.y - nextpos.y) *perc or math.abs(origpos.y - nextpos.y) *perc
toz2= origpos.z > nextpos.z and -math.abs(origpos.z - nextpos.z) *perc or math.abs(origpos.z - nextpos.z) *perc
return cn(origpos.x + tox2,origpos.y + toy2,origpos.z + toz2)*ca(origangle.x + tox,origangle.y + toy,origangle.z + toz)
end
WeldLib={}
function GetWeld(weld,CO)
if not WeldLib[weld] then
local x0,y0,z0=weld.C0:toEulerAnglesXYZ()
local x1,y1,z1=weld.C1:toEulerAnglesXYZ()
WeldLib[weld]={[0]=v3(mdeg(x0),mdeg(y0),mdeg(z0)),[1]=v3(mdeg(x1),mdeg(y1),mdeg(z1))}
end
return weld['C'..CO].p,WeldLib[weld][CO]
end
function ClearWeld(weld)
if WeldLib[weld] then WeldLib[weld]=nil end
end
function SetWeld(weld,CO,i, loops, origpos,origangle, nextpos,nextangle,smooth)
loops=math.floor(loops)
smooth = smooth or 1
if not WeldLib[weld] then
local x0,y0,z0=weld.C0:toEulerAnglesXYZ()
local x1,y1,z1=weld.C1:toEulerAnglesXYZ()
WeldLib[weld]={[0]=v3(mdeg(x0),mdeg(y0),mdeg(z0)),[1]=v3(mdeg(x1),mdeg(y1),mdeg(z1))}
end
local perc =smooth==1 and math.sin((math.pi/2)/loops*i) or i/loops
--print(weld.Part1)
local tox,toy,toz = 0,0,0
tox = origangle.x > nextangle.x and -math.abs(origangle.x - nextangle.x) *perc or math.abs(origangle.x - nextangle.x) *perc
toy = origangle.y > nextangle.y and -math.abs(origangle.y - nextangle.y) *perc or math.abs(origangle.y - nextangle.y) *perc
toz = origangle.z > nextangle.z and -math.abs(origangle.z - nextangle.z) *perc or math.abs(origangle.z - nextangle.z) *perc
local tox2,toy2,toz2 = 0,0,0
tox2= origpos.x > nextpos.x and -math.abs(origpos.x - nextpos.x) *perc or math.abs(origpos.x - nextpos.x) *perc
toy2= origpos.y > nextpos.y and -math.abs(origpos.y - nextpos.y) *perc or math.abs(origpos.y - nextpos.y) *perc
toz2= origpos.z > nextpos.z and -math.abs(origpos.z - nextpos.z) *perc or math.abs(origpos.z - nextpos.z) *perc
WeldLib[weld][CO] = v3(origangle.x + tox,origangle.y + toy,origangle.z + toz)
weld['C'..CO] = cn(origpos.x + tox2,origpos.y + toy2,origpos.z + toz2)*ca(origangle.x + tox,origangle.y + toy,origangle.z + toz)
end
function FindSurface(part, position)
local obj = part.CFrame:pointToObjectSpace(position)
local siz = part.Size/2
for i,v in pairs(Enum.NormalId:GetEnumItems()) do
local vec = Vector3.FromNormalId(v)
local wvec = part.CFrame:vectorToWorldSpace(vec)
local vz = (obj)/(siz*vec)
if (math.abs(vz.X-1) < 0.01 or math.abs(vz.Y-1) < 0.01 or math.abs(vz.Z-1) < 0.01) then
return wvec,vec
end
end
if part.className == "WedgePart" then
return part.CFrame:vectorToWorldSpace(Vector3.new(0,0.707,-0.707)), Vector3.new(0,0.707,-0.707)
end
end
LoopFunctions={}
function DoLoop(times,func)
LoopFunctions[#LoopFunctions+1]={times,0,func}
end
pcall(function() Torso.LAW:Remove() Torso.RAW:Remove() Torso.LLW:Remove() Torso.RLW:Remove() end)
LAW=iNew{'Weld',Torso,Name='LAW',Part0=Torso,C0=cn(-1.5,0.5,0),C1=cn(0,0.5,0)}
RAW=iNew{'Weld',Torso,Name='RAW',Part0=Torso,C0=cn( 1.5,0.5,0),C1=cn(0,0.5,0)}
LLW=iNew{'Weld',Torso,Name='LLW',Part0=Torso,C0=cn(-0.5, -1,0),C1=cn(0, 1,0)}
RLW=iNew{'Weld',Torso,Name='RLW',Part0=Torso,C0=cn( 0.5, -1,0),C1=cn(0, 1,0)}
function Arms(on)
LAM.Parent=Torso LAM.Part0=Torso
RAM.Parent=Torso RAM.Part0=Torso
LAM.Part1=on and nil or LA
RAM.Part1=on and nil or RA
LAW.Part1=on and LA or nil
RAW.Part1=on and RA or nil
end
function Legs(on)
LLM.Part1=on and nil or LL
RLM.Part1=on and nil or RL
LLW.Part1=on and LL or nil
RLW.Part1=on and RL or nil
end
_G.MGear=getfenv()
pcall(function() _G.MGearS.Disabled=true end)
_G.MGearS=script
pcall(function() Char.Gear:Remove() end)
Gear=iNew{'Model',Char,Name='Gear'}
Gt={[-1]={},[1]={}}
for x=-1,1,2 do
local base=iPart{Gear,0.6,3,0.8} iNew{'Weld',LastMade,Part0=x==-1 and LL or RL,Part1=LastMade,C0=cn(0.8*x,0.05,0.45)*ca(-80,0,6*x)}
local v=iPart{Gear,0.5,2.5,0.5,co='Light stone grey'} iNew{'Weld',v,Part0=base,Part1=v,C0=cn(0,-0.24,0.6)} iNew{'CylinderMesh',v}
local v=iPart{Gear,0.5,0.5,0.5,co='Light stone grey'} iNew{'Weld',v,Part0=base,Part1=v,C0=cn(0,1.01,0.6)} iNew{'SpecialMesh',v,MeshType='Sphere'}
for z=-1.2,0.81,1 do
local v=iPart{Gear,0.65,0.22,1.35,co='Dark stone grey'} iNew{'Weld',v,Part0=base,Part1=v,C0=cn(0,z,0.22)}
end
local v=iPart{Gear,0.25,0.5,0.25,co='Dark stone grey'} iNew{'Weld',v,Part0=base,Part1=v,C0=cn(0,1.25,0.6)*ca(0,0,90)} iNew{'CylinderMesh',v}
local v=iPart{Gear,0.3,0.3,0.3,co='Black'} iNew{'Weld',v,Part0=base,Part1=v,C0=cn(0,1.25,0.6)*ca(0,0,90)} iNew{'CylinderMesh',v}
local st,en=-0.3,0.3 local co=(st*-1+en)/4
for xx=st,en,co do --sheath holes
local v=iPart{Gear,0.2,0.2,0.7,co='Really black'} iNew{'Weld',v,Part0=base,Part1=v,C0=cn(xx+co/2,1.5,0)} iNew{'BlockMesh',v,Scale=v3(0.4,0.1,1)}
end
local v=iPart{Gear,0.75,0.2,0.75} iNew{'Weld',v,Part0=Torso,Part1=v,C0=cn(0.6*x,-0.65,1.1)*ca(45,0,-45*x)} iNew{'CylinderMesh',v}
local v=iPart{Gear,0.6,0.22,0.6,co='Dark stone grey'} iNew{'Weld',v,Part0=Torso,Part1=v,C0=cn(0.6*x,-0.65,1.1)*ca(45,0,-45*x)} iNew{'CylinderMesh',v}
local v2=iPart{Gear,0.2,0.2,0.2} iNew{'Weld',v2,Part0=v,Part1=v2,C0=cn(0,-0.35,0)*ca(180,0,0)} iNew{'SpecialMesh',v2,Scale=v3(0.3,0.65,0.3),MeshId=as.cone}
local v2=iPart{Gear,0.2,0.2,0.3} iNew{'Weld',v2,Part0=v,Part1=v2,C0=ca(0,200*x,0)*cn(0,0,-0.5)}
--sword handle
local h=iPart{Gear,0.3,1.05,0.3} local hw=iNew{'Weld',h,Part0=x==-1 and LA or RA,Part1=h,C0=cn(0,-1,0)*ca(-90,0,0)} iNew{'CylinderMesh',h}
Gt[x].h=hw
local v=iPart{Gear,0.32,0.2,0.32,co='Black'} iNew{'Weld',v,Part0=h,Part1=v,C0=cn(0,-0.35,0)} iNew{'CylinderMesh',v}
local v=iPart{Gear,0.2,0.5,0.25} iNew{'Weld',v,Part0=h,Part1=v,C0=cn(0,0.25,-0.15)}
local v=iPart{Gear,0.21,0.2,0.25,co='Black'} iNew{'Weld',v,Part0=h,Part1=v,C0=cn(0,0.25+0.12,-0.125)}
local v=iPart{Gear,0.21,0.2,0.25,co='Black'} iNew{'Weld',v,Part0=h,Part1=v,C0=cn(0,0.25-0.12,-0.125)}
local v=iPart{Gear,0.3,0.2,0.3} iNew{'Weld',v,Part0=h,Part1=v,C0=cn(0,0.6,0)}
local v=iPart{Gear,0.3,0.2,0.3,type='WedgePart'} iNew{'Weld',v,Part0=h,Part1=v,C0=cn(0,0.6,-0.3)}
local v=iPart{Gear,0.3,0.2,0.3,type='WedgePart'} iNew{'Weld',v,Part0=h,Part1=v,C0=cn(0,0.6, 0.3)*ca(180,0,0)}
local v=iPart{Gear,0.2,0.5,0.2} iNew{'Weld',v,Part0=h,Part1=v,C0=cn(0, 0.3,-0.4)*ca( 14,0,0)} iNew{'CylinderMesh',v,Scale=v3(0.6,1,0.6)}
local v=iPart{Gear,0.2,0.2,0.2} iNew{'Weld',v,Part0=h,Part1=v,C0=cn(0,-0.25,-0.35)*ca(-20+180,0,0)} iNew{'SpecialMesh',v,MeshId=as.cone,Scale=v3(0.06,1,0.06)}
--sword blade
local bladelength=4
local blade=iPart{Gear,0.2,bladelength,0.4} iNew{'Weld',v,Part0=h,Part1=blade,C0=cn(0,0.7+bladelength/2,0.05)} iNew{'BlockMesh',blade,Scale=v3(0.4,1,1)}
local tip=iPart{Gear,0.2,0.5,0.4,type='WedgePart'} iNew{'Weld',v,Part0=blade,Part1=tip,C0=cn(0,bladelength/2+0.25,0)*ca(0,180,0)} iNew{'SpecialMesh',tip,MeshType='Wedge',Scale=v3(0.4,1,1)}
for i=-1.6,1.4,0.6 do
local v=iPart{Gear,0.2,0,0.52,co='White'} iNew{'Weld',v,Part0=blade,Part1=v,C0=cn(0,i+0.1,0)*ca(40,0,0)} iNew{'BlockMesh',v,Scale=v3(0.42,0.3,1)}
end
blade.Touched:connect(function(hit)
if debounce == false then
debounce = true
isPlayer = hit.Parent:FindFirstChild("Humanoid")
if isPlayer then
isPlayer:TakeDamage(13333333333333337)
wait(0.5)
end
debounce = false
end
end)
end
--Middle
local v=iPart{Gear,0.2,0.2,0.2} iNew{'Weld',v,Part0=Torso,Part1=v,C0=cn(0,-1,1.1)*ca(90,0,0)} iNew{'SpecialMesh',v,Scale=v3(0.4,1.6,0.16),MeshId=as.cone}
Gas=iNew{'Smoke',v,Opacity=0.4,RiseVelocity=25,Size=3,Enabled=false}
local v=iPart{Gear,0.6,0.3,0.6} iNew{'Weld',v,Part0=Torso,Part1=v,C0=cn(0,-0.85,0.8)} iNew{'CylinderMesh',v}
local v=iPart{Gear,0.3,0.3,0.35,co='Dark stone grey',type='WedgePart'} iNew{'Weld',v,Part0=Torso,Part1=v,C0=cn(0,-0.9,1.2)*ca(0,180,0)}
local belt=iPart{Gear,2.01,0.3,1.01,co='Black'} iNew{'Weld',belt,Part0=Torso,Part1=belt,C0=cn(0,-0.7,0)}
for x=-1,1,2 do --continuesides
local of=iPart{Gear,0.3,1.2,0.3} iNew{'Weld',belt,Part0=belt,Part1=of,C0=cn(1.15*x,-0.1,0)*ca(-80,0,0)}
local v=iPart{Gear,0.3,1.2,0.3} iNew{'Weld',v,Part0=of,Part1=v,C0=cn(0,0,0.15)} iNew{'CylinderMesh',v}
local v=iPart{Gear,0.2,0.2,0.2,co='Really black'} iNew{'Weld',v,Part0=of,Part1=v,C0=cn(0,0.51,0.15)} iNew{'CylinderMesh',v}
Gt[x].grap=v
end
for i,v in pairs(Torso:children()) do
if v:IsA'Sound' then v:Remove() end
end
for i,n in pairs(so) do
if as[n] then
local v=iNew{'Sound',Torso,Volume=0.5,Pitch=1,Looped=false,Name=n,SoundId=as[n]}
so[n]=v
end
end
key={}
print(#Gear:children())
Root.C0=cn(0,0,0)*ca(0,0,0)
Root.C1=cn(0,0,0)*ca(0,0,0)
WalkAnim=0
Walking=false
WalkM=8
Humanoid.Running:connect(function(Walk)
Walking=Walk>20 and true or false
end)
--LL.Touched:connect(function() if Torso.Velocity.magnitude>30 then Torso.Velocity=nov3 end end)
--RL.Touched:connect(function() if Torso.Velocity.magnitude>30 then Torso.Velocity=nov3 end end)
_G.Torso=Torso
wait()
Arms(true)
Legs()
GetCurrent=function()
cLA,cLA2=GetWeld(LAW,0)
cRA,cRA2=GetWeld(RAW,0)
cLL,cLL2=GetWeld(LLW,0)
cRL,cRL2=GetWeld(RLW,0)
cRO,cRO2=GetWeld(Root,0)
cNE,cNE2=GetWeld(Neck,0)
end
ReturnAnim=function()
GetCurrent()
local ogt={[-1]={},[1]={}}
for x=-1,1,2 do ogt[x][1],ogt[x][2]=GetWeld(Gt[x].h,0) end
local walk=WalkAnim~=0
for x=1,ASpeed do
SetWeld(LAW,0,x,ASpeed,cLA,cLA2,OrigLA,walk and Walk1*WAPerc or OrigLA2,1)
SetWeld(RAW,0,x,ASpeed,cRA,cRA2,OrigRA,walk and Walk2*WAPerc or OrigRA2,1)
if Hooks[-1] or Hooks[1] then else
SetWeld(LLW,0,x,ASpeed,cLL,cLL2,OrigLL,OrigLL2,1)
SetWeld(RLW,0,x,ASpeed,cRL,cRL2,OrigRL,OrigRL2,1) end
SetWeld(Root,0,x,ASpeed,cRO,cRO2,OrigRO,walk and Walk3*WAPerc or OrigRO2,1)
SetWeld(Neck,0,x,ASpeed,cNE,cNE2,OrigNE,walk and Walk4*WAPerc or OrigNE2,1)
for h=-1,1,2 do SetWeld(Gt[h].h,0,x,ASpeed,ogt[h][1],ogt[h][2],v3(0,-1,0),v3(-90,0,0),1) end
wait()
end
end
SpecialAttack=function(TYPE)
if TYPE==1 then
GetCurrent()
if Controls.Parent then Humanoid.Jump=true end
local legwas=LLW.Part1==LL and true or false
Legs(true)
for x=1,ASpeed/2 do
SetWeld(LAW,0,x,ASpeed/2,cLA,cLA2,OrigLA+v3(0,0.8,-0.2),v3(190,0, 10,1),1)
SetWeld(RAW,0,x,ASpeed/2,cRA,cRA2,OrigRA+v3(0,0.8,-0.2),v3(190,0,-10,1),1)
for h=-1,1,2 do SetWeld(Gt[h].h,0,x,ASpeed/2,v3(0,-1,0),v3(-90,0,0),v3(0,-1.25,0),v3(-135,0,0),1) end
SetWeld(LLW,0,x,ASpeed/2,cLL,cLL2,OrigLL+v3(0,0.6,-0.7),v3(-30,0,-10,1),1)
SetWeld(RLW,0,x,ASpeed/2,cRL,cRL2,OrigRL+v3(0,0.6,-0.7),v3(-30,0,10,1),1)
SetWeld(Root,0,x,ASpeed/2,cRO,cRO2,OrigRO,v3(90,0,0,1),1)
wait()
end
local spin,ii=360,3
for i=0,spin,spin/12 do
ii=ii+1 if ii%4==0 then so.Slash:Play() end
Root.C0=ca(90-i,0,0)
wait()
end
ClearWeld(Root)
ReturnAnim() Legs(legwas)
elseif TYPE==2 then
end
end
pcall(function() Torso.BG:Remove() Torso.RP:Remove() end)
BG=iNew{'BodyGyro',Torso,Name='BG',maxTorque=nov3}
BP=iNew{'RocketPropulsion',Torso,Name='RP'}
local rocketprop=iPart{Gear,1,1,1,an=true,cf=cn(0,-100,0),tr=1}
rocketprop.CanCollide=false
BP.Target=rocketprop
BP.ThrustP=5
BP.MaxTorque=nov3 --v3(400000,400000,0)
BP.MaxThrust=4000
BP.MaxSpeed=30
--BP.CartoonFactor=1
BP.TurnP,BP.TurnD=0,0
BP.ThrustD=0.03 --BP.ThrustD*30
BP.ThrustP=BP.ThrustP/1.5
BP.TargetRadius=0
pcall(function() workspace.Camera.Inv:Remove() end)
Inv=iNew{'Model',workspace.Camera,Name='Inv'}
Hooks={}
HookP={[-1]={},[1]={}}
Hit=nil
Grapple={}
key={}
mouse=Player:GetMouse()
mouse.KeyDown:connect(function(k)
coroutine.resume(coroutine.create(function()
key[k]=true
local gp={['q']=-1,['e']=1}
if k=='2' then
elseif (k==' ') and Controls.Parent==nil then
if WallWalk then WallWalk=false return end
WallWalk=false
Controls.Parent=game:service'ControllerService'
Humanoid.Sit=false
Legs(false)
OrigRO=v3(0,0,0)
Root.C0=cn(OrigRO)
---
elseif k=='0' and Controls.Parent==nil and not Gas.Enabled and not WallWalking then
local bv=iNew{'BodyVelocity',Torso}
Gas.Enabled=true
repeat
local ss=(Hooks[1] or Hooks[-1]) and 5000 or 2000
bv.maxForce=v3(ss,2000,ss)
bv.velocity=Torso.CFrame.lookVector*125
wait()
until not key[k] or Controls.Parent
Gas.Enabled=false
bv:Remove()
elseif (k=='q' or k=='e') and not Grapple[k] then
so.Slash:Play()
Grapple[k]=true
local x=gp[k]
local ob1=Gt[x].grap
local speed=26
local hook=iPart{Gear,1,1,1,co='Black',an=true,cf=cn(ob1.Position,mouse.Hit.p)*ca(-90,0,0)} iNew{'SpecialMesh',hook,Scale=v3(0.4,2,0.4),MeshId=as.cone}
local rope=iPart{Gear,1,1,1,co='Black',an=true,cf=cf} local ropem=iNew{'CylinderMesh',rope}
hook.CanCollide=false
rope.CanCollide=false
local con=game:GetService'RunService'.RenderStepped:connect(function()
local mag=(ob1.Position-hook.Position).magnitude
ropem.Scale=v3(0.2,mag,0.2)
rope.CFrame=cn(ob1.Position,hook.Position)*cn(0,0,-mag/2)*ca(90,0,0)
if not rope or not rope.Parent then con:disconnect() end
end)
for i=1,200 do
if not key[k] then break end
local hit,pos=ray(hook.Position,hook.Position-hook.CFrame*cn(0,-speed,0).p,Char,speed+1)
if not hit then
hook.CFrame=hook.CFrame*cn(0,speed,0)*ca(-0.1,0,0)
else
hook.CFrame=hook.CFrame*cn(0,(hook.Position-pos).magnitude,0)
end
local mag=(ob1.Position-hook.Position).magnitude
if hit and hit.Transparency<1 and hit.CanCollide then
Hit=hit
HookP[x]={Hit,Hit.CFrame:toObjectSpace(hook.CFrame),pos}
so.Block:Play()
Hooks[x]=hook
Humanoid.Sit=true
Legs(true)
OrigRO=v3(0,1,0)
Root.C0=cn(OrigRO)
Controls.Parent=nil
break
end
wait()
end
---
if Hit then
--hook.Reflectance=0.1
end
repeat wait()
until not key[k] or Controls.Parent --relase
Hooks[x]=nil
hook:Remove()
rope:Remove()
Grapple[k]=false
elseif k=='f' and LegAnim=='None' and TorsoAnim=='None' and LegAnim=='None' then
ArmAnim,LegAnim,TorsoAnim='','',''
SpecialAttack(1)
ArmAnim,LegAnim,TorsoAnim='None','None','None'
elseif k=='p' then
local mpos=mouse.Hit.p
local wall=iPart{Char,1,1,1,an=true}
repeat
local mag=(mpos-mouse.Hit.p).magnitude
wall.Size=v3(not key.l and 4 or 0.5,200,mag)
wall.CFrame=cn(mpos,mouse.Hit.p)*cn(0,100,-mag/2)
wait() until not key.p
local cf=wall.CFrame wall.Parent=workspace wall.CFrame=cf wall.CanCollide=true
elseif k=='l' then
wotm8=wotm8 and wotm8+150 or 75
iPart{workspace,120,30,120,an=true,cf=cn(0,180,wotm8+100)*ca(0,mran(-40,40),0)}.CanCollide=true
iPart{workspace,146,4,120,an=true,cf=cn(0,1,wotm8+100)}.CanCollide=true
--elseif k=='w' and (not Hooks[-1] and not Hooks[1]) then
--Humanoid.PlatformStand=false
end
end)) end)
mouse.KeyUp:connect(function(k)
coroutine.resume(coroutine.create(function()
key[k]=false
end)) end)
mouse.Button1Down:connect(function()
Button1=true
if ArmAnim=='None' then
ArmAnim,TorsoAnim='Attack','Attack'
thesteerclick=thesteerclick==1 and -1 or 1
local y=thesteerclick
GetCurrent()
local ASpeed=ASpeed/1.5
for x=1,ASpeed do
SetWeld(LAW,0,x,ASpeed,cLA,cLA2,OrigLA,v3(0,-135*y,(-90-LookAngle/2)*y),1)
SetWeld(RAW,0,x,ASpeed,cRA,cRA2,OrigRA,v3(0,-135*y,(-90-LookAngle/2)*y),1)
SetWeld(Root,0,x,ASpeed,cRO,cRO2,OrigRO,v3(0,-90*y,0),1)
SetWeld(Neck,0,x,ASpeed,cNE,cNE2,OrigNE,v3(0,90*y/3,0),1)
for h=-1,1,2 do SetWeld(Gt[h].h,0,x,ASpeed,v3(0,-1,0),v3(-90,0,0),v3(0,-1.25,0),v3(-180,0,0),1) end
wait()
end
GetCurrent()
so.Slash:Play()
for x=1,ASpeed do
SetWeld(LAW,0,x,ASpeed,cLA,cLA2,OrigLA+v3(0,0,-0.8),v3(0,-30*y,(-90-LookAngle/2)*y),1)
SetWeld(RAW,0,x,ASpeed,cRA,cRA2,OrigRA+v3(0,0,-0.8),v3(0,-30*y,(-90-LookAngle/2)*y),1)
SetWeld(Root,0,x,ASpeed,cRO,cRO2,OrigRO,v3(0,80*y,0),1)
SetWeld(Neck,0,x,ASpeed,cNE,cNE2,OrigNE,v3(0,-80*y/3,0),1)
wait()
end
ReturnAnim()
ArmAnim,TorsoAnim='None','None'
end
end)
mouse.Button1Up:connect(function()
Button1=false
end)
LegAnim='None'
ArmAnim='None'
TorsoAnim='None'
WalkSpeed={1,1,1,1,1,1,1,1}
ASpeed=8
OrigLA=v3(-1.5,0.5,0) OrigLA2=v3(5,0,-30)
OrigRA=v3( 1.5,0.5,0) OrigRA2=v3(5,0,30)
OrigLL=v3(-0.5,-1,0) OrigLL2=v3(0,0,0)
OrigRL=v3( 0.5,-1,0) OrigRL2=v3(0,0,0)
OrigRO=v3(0,0,0) OrigRO2=v3(0,0,0)
OrigNE=v3(0,1.5,0) OrigNE2=v3(0,0,0)
-----
--c/local x,y,z=workspace.RobroxMasterDX.Torso["Left Hip"].C0:toEulerAnglesXYZ() print(math.deg(y))
rocketfired=false
local spi,spix,span=0,0.5,1
while Gear.Parent do
local headpos,mousepos=Head.Position,mouse.Hit.p
XAngle=math.floor(cn(headpos,mousepos).lookVector.y*180)
LookAngle=XAngle<-20 and -20 or (XAngle>45 and 45 or XAngle)
WalkAnim=WalkAnim+(ArmAnim=='None' and (Walking and 1 or -1) or 0)
if WalkAnim<0 then WalkAnim=0 elseif WalkAnim>WalkM then WalkAnim=WalkM end
WAPerc=WalkAnim/WalkM
spi=spi+spix
local adj=spi*8
if math.abs(spi)>=span then spix=spix*-1 end
Walk1,Walk2,Walk3,Walk4=v3(0,90,-90+25+adj),v3(0,-90,90-25-adj),v3(-18-adj,0,spi*1.5),v3(18+adj,0,-spi*1.5)
if ArmAnim=='None' then
SetWeld(LAW,0,WalkAnim,WalkM,OrigLA,OrigLA2,OrigLA,Walk1,1)
SetWeld(RAW,0,WalkAnim,WalkM,OrigRA,OrigRA2,OrigRA,Walk2,1)
end
if TorsoAnim=='None' then
SetWeld(Root,0,WalkAnim,WalkM,OrigRO,OrigRO2,OrigRO,Walk3,1)
SetWeld(Neck,0,WalkAnim,WalkM,OrigNE,OrigNE2,OrigNE,Walk4,1)
end
local ws=28 for i=1,#WalkSpeed do ws=ws*WalkSpeed[i] end Humanoid.WalkSpeed=ws
--DoLoop Package
for i,v in pairs(LoopFunctions) do
v[2]=v[2]+1
v[3](v[2]/v[1])
if v[1]<=v[2] then LoopFunctions[i]=nil end
end
for x=-1,1,2 do
if Hooks[x] then Hooks[x].CFrame=HookP[x][1].CFrame*HookP[x][2] end
end
if Hooks[-1] or Hooks[1] then
local hook=(Hooks[1] and Hooks[-1]) and 0 or Hooks[1] or Hooks[-1]
HookPos=hook==0 and Hooks[1].Position+(Hooks[-1].Position-Hooks[1].Position)/2 or hook.CFrame.p
BP.MaxTorque=v3(0,0,0) BP.MaxSpeed=200 BP.MaxThrust=10*10000
rocketprop.CFrame=cn(HookPos+v3(0,4,0))
if not rocketfired then BP:Fire() rocketfired=true end
else BP.MaxTorque=nov3
if rocketfired then BP:Abort() rocketfired=false end
end
if Humanoid.Sit and not WallWalking then
SetWeld(LLW,0,1,1,OrigLL,OrigLL2,OrigLL+v3(0,0.6,-0.7),v3(-30,0,-14,1),1)
SetWeld(RLW,0,1,1,OrigRL,OrigRL2,OrigRL+v3(0,0.6,-0.7),v3(-30,0, 14,1),1)
if not WallWalking then BG.cframe=cn(Torso.Position,mouse.Hit.p)*cn(0,0,-1) end --TweenCF(3,9,bg.CFrame,cn(Torso.Position,mouse.Hit.p))*cn(0,0,-1)
BG.maxTorque=maxv3 --workspace.Camera.CoordinateFrame*cn(0,0,-1000).p
else
if not WallWalking then BG.maxTorque=nov3 end
end
wait()
end --TweenV3(0.5,1,Hooks[1].Position,Hooks[-1].Position)