View difference between Paste ID: pUeDmiEd and 1p3pRfpW
SHOW: | | - or go back to the newest paste.
1
--Made By wistfulandrei--
2
3
4
5
local player = game:service("Players").LocalPlayer
6
local mouse = player:GetMouse()
7
local cam = workspace.CurrentCamera
8
local char = player.Character
9
local Torsoz = char:findFirstChild("Torso")
10
local RA = char:findFirstChild("Right Arm")
11
local LA = char:findFirstChild("Left Arm")
12
local RL = char:findFirstChild("Right Leg")
13
local LL = char:findFirstChild("Left Leg")
14
local H = char:findFirstChild("Head")
15
local Hu = char:findFirstChild("Humanoid")
16
local RS = Torsoz:findFirstChild("Right Shoulder")
17
local LS = Torsoz:findFirstChild("Left Shoulder")
18
local RH = Torsoz:findFirstChild("Right Hip")
19
local LH = Torsoz:findFirstChild("Left Hip")
20
local N = Torsoz:findFirstChild("Neck")
21
local NV = Vector3.new(0,0,0)
22
local FOV = 70
23
local Shift, Space, Sitting = false,false,false
24
local GravPoint = 0
25
local Diving = false
26
local DivingCooldown = 0
27
local DivingDir = NV
28
local DivingCF = CFrame.new(0,0,0)
29
local DivingBG, DivingBV
30
local HWallRunning = false
31
local HWRGravDrop = false
32
local HWRLastPart
33
local HWRCooldown = 0
34
local HWRDir
35
local VWallRunning = false
36
local VWRLastPart
37
local VWRCooldown = 0
38
local VWRLeft,VWRRight = false,false
39
local Sliding = false
40
local SlideCooldown = 0
41
local Standing = true
42
local Action = "Standing"
43
local animplus = true
44
local animspeed = 0
45
local animangle = 0.01
46
local Joint1, Joint2, Joint3, Joint4, Joint5
47
 
48
for i, v in pairs(char:children()) do
49
if (v.className == "LocalScript" and v.Name == "ParkourSkrip") or v.className == "NumberValue" or v.className == "BoolValue" or v.className == "Model" or v.Name == "Animate" then
50
v:remove()
51
end
52
end
53
 
54
local loadids = {112474909, 112474911, 112474909}
55
 
56-
local stamina = 99999
56+
local stamina = 2500
57-
local maxstamina = 999999
57+
local maxstamina = 2500
58-
local defsprint = 28
58+
local defsprint = 50
59
local sprint = defsprint  
60
 
61
local pause = Instance.new("BoolValue", char)
62
pause.Name = "Pause"
63
pause.Value = false
64
local flow = Instance.new("NumberValue", char)
65
flow.Name = "Flow"
66
flow.Value = 0
67
local flowcooldown = 0
68
 
69
local m = Instance.new("Model", char)
70
m.Name = "FlowChainPartz"
71
 
72
local P = Instance.new("Part")
73
P.Name = "TrailPart"
74
P.formFactor = "Custom"
75
P.Size = Vector3.new(0.2,0.2,0.2)
76
P.Locked = true
77
P.Anchored = true
78
P.CanCollide = false
79
P.TopSurface = 0
80
P.BottomSurface = 0
81
 
82
script.Name = "ParkourSkrip"
83
 
84
local hue = 0
85
 
86
function HSV(H,S,V)
87
H = H % 360
88
local C = V * S
89
local H2 = H/60
90
local X = C * (1 - math.abs((H2 %2) -1))
91
local color = Color3.new(0,0,0)
92
if H2 <= 0 then
93
color = Color3.new(C,0,0)
94
elseif 0 <= H2 and H2 <= 1 then
95
color = Color3.new(C,X,0)
96
elseif 1 <= H2 and H2 <= 2 then
97
color = Color3.new(X,C,0)
98
elseif 2 <= H2 and H2 <= 3 then
99
color = Color3.new(0,C,X)
100
elseif 3 <= H2 and H2 <= 4 then
101
color = Color3.new(0,X,C)
102
elseif 4 <= H2 and H2 <= 5 then
103
color = Color3.new(X,0,C)
104
elseif 5 <= H2 and H2 <= 6 then
105
color = Color3.new(C,0,X)
106
end
107
local m = V - C
108
return Color3.new(color.r + m, color.g + m, color.b + m)
109
end
110
 
111
function GetWeld(weld)
112
if weld:findFirstChild("XAngle") == nil then
113
local a = Instance.new("NumberValue", weld)
114
a.Name = "XAngle"
115
end
116
if weld:findFirstChild("YAngle") == nil then
117
local a = Instance.new("NumberValue", weld)
118
a.Name = "YAngle"
119
end
120
if weld:findFirstChild("ZAngle") == nil then
121
local a = Instance.new("NumberValue", weld)
122
a.Name = "ZAngle"
123
end
124
return weld.C0.p, Vector3.new(weld.XAngle.Value, weld.YAngle.Value, weld.ZAngle.Value)
125
end
126
 
127
function SetWeld(weld, i, loops, origpos,origangle, nextpos,nextangle)
128
if weld:findFirstChild("XAngle") == nil then
129
local a = Instance.new("NumberValue", weld)
130
a.Name = "XAngle"
131
end
132
if weld:findFirstChild("YAngle") == nil then
133
local a = Instance.new("NumberValue", weld)
134
a.Name = "YAngle"
135
end
136
if weld:findFirstChild("ZAngle") == nil then
137
local a = Instance.new("NumberValue", weld)
138
a.Name = "ZAngle"
139
end
140
 
141
local tox,toy,toz = 0,0,0
142
if origangle.x > nextangle.x then
143
tox = -math.abs(origangle.x - nextangle.x) /loops*i
144
else
145
tox = math.abs(origangle.x - nextangle.x) /loops*i
146
end
147
if origangle.y > nextangle.y then
148
toy = -math.abs(origangle.y - nextangle.y) /loops*i
149
else
150
toy = math.abs(origangle.y - nextangle.y) /loops*i
151
end
152
if origangle.z > nextangle.z then
153
toz = -math.abs(origangle.z - nextangle.z) /loops*i
154
else
155
toz = math.abs(origangle.z - nextangle.z) /loops*i
156
end
157
 
158
local tox2,toy2,toz2 = 0,0,0
159
if origpos.x > nextpos.x then
160
tox2 = -math.abs(origpos.x - nextpos.x) /loops*i
161
else
162
tox2 = math.abs(origpos.x - nextpos.x) /loops*i
163
end
164
if origpos.y > nextpos.y then
165
toy2 = -math.abs(origpos.y - nextpos.y) /loops*i
166
else
167
toy2 = math.abs(origpos.y - nextpos.y) /loops*i
168
end
169
if origpos.z > nextpos.z then
170
toz2 = -math.abs(origpos.z - nextpos.z) /loops*i
171
else
172
toz2 = math.abs(origpos.z - nextpos.z) /loops*i
173
end
174
 
175
weld.XAngle.Value = origangle.x + tox
176
weld.YAngle.Value = origangle.y + toy
177
weld.ZAngle.Value = origangle.z + toz
178
weld.C0 = CFrame.new(origpos.x + tox2,origpos.y + toy2,origpos.z + toz2) * CFrame.Angles(origangle.x + tox,origangle.y + toy,origangle.z + toz)
179
end
180
 
181
function LoadTextures()
182
local pls = game:service("ContentProvider")
183
for i, v in pairs(loadids) do
184
pls:Preload("http://www.roblox.com/asset/?id="..v)
185
wait(0.04)
186
end
187
end
188
LoadTextures()
189
 
190
function CreateGui()
191
for i, v in pairs(player.PlayerGui:children()) do
192
if v.className == "ScreenGui" and v.Name == "staminaGui" then
193
v:remove()
194
end
195
end
196
local g = Instance.new("ScreenGui", player.PlayerGui)
197
g.Name = "staminaGui"
198
 
199
local c = Instance.new("Frame", g)
200
c.Visible = false
201
c.Size = UDim2.new(0,86,0,320)
202
c.BackgroundTransparency = 1
203
c.Position = UDim2.new(1,-96,0.5,-160)
204
c.Name = "Container"
205
 
206
local t = Instance.new("TextLabel", c)
207
t.Size = UDim2.new(0,0,-0.1,0)
208
t.Position = UDim2.new(0.3,0,0.5,0)
209
t.TextXAlignment = "Right"
210
t.Font = "ArialBold"
211
t.TextTransparency = 0.1
212
t.TextColor3 = Color3.new(0,0.6,0.8)
213
t.TextStrokeColor3 = Color3.new(0,0.2,0.8)
214
t.TextStrokeTransparency = 0.3
215
t.FontSize = 6
216
t.BackgroundTransparency = 1
217
local t2 = t:Clone()
218
t2.Parent = c
219
t2.Size = UDim2.new(0,0,0.1,0)
220
local l = t:Clone()
221
l.Parent = c
222
l.Size = UDim2.new(0,0,0,0)
223
l.Text = "-----"
224
 
225
local f1 = Instance.new("Frame", c)
226
f1.Name = "Backing"
227
f1.ClipsDescendants = true
228
f1.Size = UDim2.new(1,0,0,0)
229
f1.BackgroundColor3 = Color3.new(0.8,0,0)
230
f1.BackgroundTransparency = 1
231
local f1img = Instance.new("ImageLabel", f1)
232
f1img.BackgroundTransparency = 1
233
f1img.Image = "http://www.roblox.com/asset/?id=112474909"
234
f1img.Size = UDim2.new(1,0,0,c.Size.Y.Offset)
235
 
236
local f2 = Instance.new("Frame", c)
237
f2.Name = "Overlay"
238
f2.ClipsDescendants = true
239
f2.Size = UDim2.new(1,0,1,0)
240
f2.BackgroundColor3 = Color3.new(0,0,0.8)
241
f2.BackgroundTransparency = 1
242
local f2img = Instance.new("ImageLabel", f2)
243
f2img.BackgroundTransparency = 1
244
f2img.Image = "http://www.roblox.com/asset/?id=112474911"
245
f2img.Size = UDim2.new(1,0,0,c.Size.Y.Offset)
246
 
247
function Calculate()
248
local ysize = c.Size.Y.Offset
249
local per = (stamina/maxstamina) * c.Size.Y.Offset
250
local rem = (-(stamina/maxstamina-1)) * c.Size.Y.Offset
251
f1.Size = UDim2.new(1,0,0,rem)
252
f2.Size = UDim2.new(1,0,0,per)
253
f2.Position = UDim2.new(0,0,0,rem)
254
f2img.Position = UDim2.new(0,0,0,-rem)
255
t.Text = math.floor(stamina)
256
t2.Text = maxstamina
257
end
258
Calculate()
259
 
260
wait(0.01)
261
c.Visible = true
262
end
263
CreateGui()
264
 
265
player.CharacterAdded:connect(function()
266
char = player.Character
267
Torsoz = char:findFirstChild("Torso")
268
RA = char:findFirstChild("Right Arm")
269
LA = char:findFirstChild("Left Arm")
270
RL = char:findFirstChild("Right Leg")
271
LL = char:findFirstChild("Left Leg")
272
H = char:findFirstChild("Head")
273
Hu = char:findFirstChild("Humanoid")
274
RS = Torsoz:findFirstChild("Right Shoulder")
275
LS = Torsoz:findFirstChild("Left Shoulder")
276
RH = Torsoz:findFirstChild("Right Hip")
277
LH = Torsoz:findFirstChild("Left Hip")
278
N = Torsoz:findFirstChild("Neck")
279
stamina = maxstamina
280
CreateGui()
281
end)
282
 
283
function RAY(pos, dir, startpos, endpos, distleft, collidedlist)
284
collidedlist = collidedlist or {char}
285
startpos = startpos or pos
286
distleft = distleft or dir.unit * dir.magnitude
287
endpos = endpos or pos + distleft
288
local ray = Ray.new(pos, distleft)
289
local hitz,enz = workspace:FindPartOnRayWithIgnoreList(ray, collidedlist)
290
--[[
291
local p = P:Clone()
292
p.Parent = char
293
p.Size = Vector3.new(0.4,0.4,0.4)
294
p.BrickColor = BrickColor.new("Lime green")
295
p.CanCollide = false
296
p.CFrame = CFrame.new(enz)
297
p.Transparency = 0.3
298
]]
299
if hitz ~= nil then
300
if hitz.CanCollide == false then
301
table.insert(collidedlist, hitz)
302
local newpos = enz
303
local newdistleft = distleft - (dir.unit * (pos - newpos).magnitude)
304
if newdistleft ~= NV then
305
return RAY(newpos-(dir*0.01), dir, startpos, endpos, newdistleft+(dir*0.01), collidedlist)
306
end
307
end
308
end
309
 
310
return hitz, enz, ray
311
end
312
 
313
function Sit()
314
Standing = false
315
local hitz,enz = RAY(Torsoz.Position, Vector3.new(0,-4.1,0))
316
local tordir = Vector3.new(Torsoz.CFrame.lookVector.x,0,Torsoz.CFrame.lookVector.z)
317
if (hitz ~= nil and hitz.CanCollide == true) then
318
local cf = CFrame.new(enz+Vector3.new(0,1.28,0), enz+Vector3.new(0,1.28,0)+tordir) * CFrame.Angles(math.pi/6,0,0)
319
local hitz2,enz2 = RAY(enz+Vector3.new(0,2.25,0), tordir*-2.2)
320
Hu.PlatformStand = true
321
Torsoz.CFrame = cf
322
local bp = Instance.new("BodyPosition", Torsoz)
323
bp.Name = "StaminaBodyObject"
324
bp.maxForce = Vector3.new(1/0,1/0,1/0)
325
bp.D = 100
326
bp.position = cf.p
327
local bg = Instance.new("BodyGyro", Torsoz)
328
bg.Name = "StaminaBodyObject"
329
bg.maxTorque = Vector3.new(1/0,1/0,1/0)
330
bg.cframe = cf
331
bg.D = 100
332
SetWeld(Joint1,1,1, NV,NV, Vector3.new(0.34,-1,0.2), Vector3.new((math.pi/2)-(math.pi/6),0,math.pi/8))
333
SetWeld(Joint2,1,1, NV,NV, Vector3.new(-0.34,-1,0.2), Vector3.new((math.pi/2)-(math.pi/6),0,-math.pi/8))
334
 
335
if hitz2 ~= nil and hitz2.CanCollide == true then
336
Joint3.C0 = CFrame.new(0.9,0.4,-0.45) * CFrame.Angles(0,math.pi/2.13,0) * CFrame.Angles(math.pi/2.3,0,0)
337
Joint4.C0 = CFrame.new(-0.9,0.4,-0.4) * CFrame.Angles(0,-math.pi/2.05,0) * CFrame.Angles(math.pi/2.3,0,0)
338
Joint5.C0 = CFrame.new(0,1,0) * CFrame.Angles(-math.pi/8.8,0,0)
339
else
340
SetWeld(Joint3,1,1, NV,NV, Vector3.new(1.4,0.4,0.1), Vector3.new(-(math.pi/6)-(math.pi/10),0,math.pi/9))
341
SetWeld(Joint4,1,1, NV,NV, Vector3.new(-1.4,0.4,0.1), Vector3.new(-(math.pi/6)-(math.pi/10),0,-math.pi/9))
342
SetWeld(Joint5,1,1, NV,NV, Vector3.new(0,1,0), Vector3.new(-math.pi/12,0,0))
343
end
344
 
345
Sitting = true
346
Action = "Sitting"
347
end
348
end
349
 
350
 
351
function Stand()
352
Hu.PlatformStand = false
353
if Sitting == true then
354
local tordir = Torsoz.Position + (Torsoz.CFrame.lookVector*10000)
355
local cf = CFrame.new(Torsoz.Position + Vector3.new(0,1.8,0), Vector3.new(tordir.x,Torsoz.Position.y,tordir.z))
356
Torsoz.CFrame = cf
357
end
358
for i, v in pairs(Torsoz:children()) do
359
if v.Name == "StaminaBodyObject" then
360
v:remove()
361
end
362
end
363
RH.Part0 = nil
364
LH.Part0 = nil
365
RS.Part0 = nil
366
LS.Part0 = nil
367
Joint1.Part0 = Torsoz
368
Joint1.Part1 = RL
369
Joint1.C0 = CFrame.new(0.5,-1,0)
370
Joint1.C1 = CFrame.new(0,1,0)
371
Joint2.Part0 = Torsoz
372
Joint2.Part1 = LL
373
Joint2.C0 = CFrame.new(-0.5,-1,0)
374
Joint2.C1 = CFrame.new(0,1,0)
375
Joint3.Part0 = Torsoz
376
Joint3.Part1 = RA
377
Joint3.C0 = CFrame.new(1.5,0.5,0)
378
Joint3.C1 = CFrame.new(0,0.5,0)
379
Joint4.Part0 = Torsoz
380
Joint4.Part1 = LA
381
Joint4.C0 = CFrame.new(-1.5,0.5,0)
382
Joint4.C1 = CFrame.new(0,0.5,0)
383
Joint5.Part0 = Torsoz
384
Joint5.Part1 = H
385
Joint5.C0 = CFrame.new(0,1,0)
386
Joint5.C1 = CFrame.new(0,-0.5,0)
387
Sitting = false
388
Diving = false
389
Standing = true
390
Action = "Standing"
391
end
392
 
393
--------------------------------------- Dive ----------------------------------
394
 
395
function Dive()
396
stamina = stamina - 10
397
flow.Value = flow.Value + 10
398
if flow.Value > 100 then
399
flow.Value = 100
400
end
401
Standing = false
402
local dir = Vector3.new(Torsoz.CFrame.lookVector.x,0,Torsoz.CFrame.lookVector.z)
403
GravPoint = 18
404
DivingDir = dir
405
local cf = CFrame.new(Torsoz.Position, dir+Vector3.new(0,Torsoz.Position.y,0))
406
DivingCF = cf
407
DivingDir = dir
408
Hu.PlatformStand = true
409
local bv = Instance.new("BodyVelocity", Torsoz)
410
bv.Name = "StaminaBodyObject"
411
bv.maxForce = Vector3.new(1/0,1/0,1/0)
412
bv.velocity = Vector3.new(DivingDir.x*24,GravPoint,DivingDir.z*24)
413
DivingBV = bv
414
local bg = Instance.new("BodyGyro", Torsoz)
415
bg.Name = "StaminaBodyObject"
416
bg.maxTorque = Vector3.new(1/0,1/0,1/0)
417
bg.cframe = CFrame.new(Torsoz.Position, Torsoz.Position+bv.velocity) * CFrame.Angles(-math.pi/2,0,0)
418
bg.D = 100
419
DivingBG = bg
420
 
421
local joint = Joint3
422
joint.C1 = CFrame.new(0,0.5,0)
423
local joint2 = Joint4
424
joint2.C1 = CFrame.new(0,0.5,0)
425
local joint3 = Joint1
426
joint3.C1 = CFrame.new(0,1,0)
427
local joint4 = Joint2
428
joint4.C1 = CFrame.new(0,1,0)
429
 
430
local joint5 = Joint5
431
 
432
Diving = true
433
Action = "Diving"
434
 
435
for i = 1, 8 do
436
SetWeld(joint,i,8, Vector3.new(1.5,0.5,0), NV, Vector3.new(1.45,0.5,0.1), Vector3.new(-0.2,-math.pi/9,math.pi/13))
437
SetWeld(joint2,i,8, Vector3.new(-1.5,0.5,0), NV, Vector3.new(-1.45,0.5,0.1), Vector3.new(-0.2,math.pi/9,-math.pi/13))
438
SetWeld(joint3,i,8, Vector3.new(0.5,-1,0), NV, Vector3.new(0.5,-1,0.03), Vector3.new(-0.2,-math.pi/10,math.pi/14))
439
SetWeld(joint4,i,8, Vector3.new(-0.5,-1,0), NV, Vector3.new(-0.5,-1,0.03), Vector3.new(-0.2,math.pi/10,-math.pi/14))
440
SetWeld(joint5,i,8, Vector3.new(0,1,0), NV, Vector3.new(0,1,0), Vector3.new(0.45,0,0))
441
wait(0.025)
442
end
443
 
444
local counter = 0
445
while Diving == true do
446
counter = counter + 1
447
bg.Parent = Torsoz
448
local hitz, enz = RAY(Torsoz.Position, bv.velocity.unit*4.6)
449
if hitz ~= nil and hitz.CanCollide == true then
450
local hitz2, enz2 = RAY(Torsoz.Position, Vector3.new(0,-4,0))
451
if hitz2 ~= nil then
452
Diving = "Rolling"
453
Action = "DiveRolling"
454
else
455
Torsoz.CFrame = Torsoz.CFrame * CFrame.new(0,-0.3,0)
456
Torsoz.Velocity = NV
457
flow.Value = 0
458
break
459
end
460
end
461
if counter > 190 then
462
break
463
end
464
wait(0.02)
465
end
466
 
467
bv.velocity = (dir*20) + Vector3.new(0,-0.5,0)
468
 
469
local bgcf = bg.cframe
470
local haslanded = false
471
local count = 0
472
 
473
while haslanded == false do
474
bg.cframe = bgcf * CFrame.Angles(-0.3*count,0,0)
475
local hitz, enz = RAY(Torsoz.Position, ((Torsoz.CFrame*CFrame.new(0,-1,0)).p - Torsoz.CFrame.p).unit*1.6)
476
if hitz ~= nil and hitz.CanCollide == true then
477
haslanded = true
478
end
479
local hitz2, enz2 = RAY(Torsoz.Position, Vector3.new(0,-3.8,0))
480
if hitz2 == nil then
481
Torsoz.Velocity = NV
482
break
483
elseif haslanded == true then
484
local bp = Instance.new("BodyPosition", Torsoz)
485
bp.Name = "StaminaJumpFix"
486
bp.maxForce = Vector3.new(0,1/0,0)
487
bp.P = 7000
488
bp.position = enz2 + Vector3.new(0,2.8,0)
489
game:service("Debris"):AddItem(bp, 0.3)
490
else
491
bv.velocity = (dir*20) + Vector3.new(0,-(Torsoz.Position - enz2).magnitude*3,0)
492
 
493
end
494
count = count + 1
495
if count <= 6 then
496
local i = count
497
local j1,j1a = GetWeld(joint)
498
local j2,j2a = GetWeld(joint2)
499
local j3,j3a = GetWeld(joint3)
500
local j4,j4a = GetWeld(joint4)
501
local j5,j5a = GetWeld(joint5)
502
SetWeld(joint,i,6, j1,j1a, Vector3.new(1.35,0.5,-0.2), Vector3.new(math.pi/2.6,0,-math.pi/5.8))
503
SetWeld(joint2,i,6, j2,j2a, Vector3.new(-1.35,0.5,-0.2), Vector3.new(math.pi/2.6,0,math.pi/5.8))
504
SetWeld(joint3,i,6, j3,j3a, Vector3.new(0.51,0.4,-0.6), Vector3.new(-0.1,0,0.05))
505
SetWeld(joint4,i,6, j4,j4a, Vector3.new(-0.51,0.4,-0.6), Vector3.new(-0.1,0,-0.05))
506
SetWeld(joint5,i,6, j5,j5a, Vector3.new(0,1,0), Vector3.new(-0.4,0,0))
507
elseif count >= 50 then
508
break
509
end
510
wait(0.02)
511
end
512
 
513
Torsoz.Velocity = NV
514
 
515
Stand()
516
DivingCooldown = 9
517
end
518
 
519
function FindSurface(part, position)
520
local obj = part.CFrame:pointToObjectSpace(position)
521
local siz = part.Size/2
522
for i,v in pairs(Enum.NormalId:GetEnumItems()) do
523
local vec = Vector3.FromNormalId(v)
524
local wvec = part.CFrame:vectorToWorldSpace(vec)
525
local vz = (obj)/(siz*vec)
526
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
527
return wvec,vec
528
end
529
end
530
if part.className == "WedgePart" then
531
return part.CFrame:vectorToWorldSpace(Vector3.new(0,0.707,-0.707)), Vector3.new(0,0.707,-0.707)
532
end
533
end
534
 
535
function HWallRun(part, pos, side)
536
if (part.className == "Part" and part.Shape == Enum.PartType.Block) or part.className ~= "Part" then
537
flow.Value = flow.Value + 9
538
Standing = false
539
HWallRunning = true
540
Action = "HWallRunning"
541
GravPoint = 10
542
HWRLastPart = part
543
local dir, dirc = FindSurface(part, pos)
544
towall = -dir
545
dir = (CFrame.new(NV, dir) * CFrame.Angles(0,side,0)).lookVector
546
 
547
local bv = Instance.new("BodyVelocity", Torsoz)
548
bv.Name = "StaminaBodyObject"
549
bv.maxForce = Vector3.new(1/0,1/0,1/0)
550
bv.P = 9000
551
bv.velocity = (dir*(sprint-0.5)) + Vector3.new(0,GravPoint,0)
552
local bg = Instance.new("BodyGyro", Torsoz)
553
bg.Name = "StaminaBodyObject"
554
bg.maxTorque = Vector3.new(1/0,1/0,1/0)
555
bg.cframe = CFrame.new(Torsoz.Position+(towall*-2), Torsoz.Position) * CFrame.Angles(0,-side,-side/4.2)
556
bg.D = 100
557
 
558
local sid = Instance.new("Snap")
559
 
560
local joint1 = Joint3
561
if side == -math.pi/2 then
562
SetWeld(joint1,1,1, NV,NV, Vector3.new(1.5,0.5,0), Vector3.new(math.pi/1.3,0.1,math.pi/2.5))
563
else
564
sid = joint1
565
SetWeld(joint1,1,1, NV,NV, Vector3.new(1.4,0.6,0), Vector3.new(-math.pi/12,0,math.pi/7))
566
end
567
local j1c0 = joint1.C0
568
 
569
local joint2 = Joint4
570
if side == math.pi/2 then
571
SetWeld(joint2,1,1, NV,NV, Vector3.new(-1.5,0.5,0), Vector3.new(math.pi/1.3,-0.1,-math.pi/2.5))
572
else
573
sid = joint2
574
SetWeld(joint2,1,1, NV,NV, Vector3.new(-1.4,0.6,0), Vector3.new(-math.pi/12,0,-math.pi/7))
575
end
576
local j2c0 = joint2.C0
577
 
578
local joint3 = Joint1
579
joint3.C1 = CFrame.new(0,1,0)
580
if side == -math.pi/2 then
581
SetWeld(joint3,1,1, NV,NV, Vector3.new(0.5,-0.38,-0.3), Vector3.new(0,math.pi/2,0.14))
582
else
583
SetWeld(joint3,1,1, NV,NV, Vector3.new(0.5,-0.8,-0.2), Vector3.new(0,math.pi/2,0.2))
584
end
585
 
586
local joint4 = Joint2
587
joint4.C1 = CFrame.new(0,1,0)
588
if side == -math.pi/2 then
589
SetWeld(joint4,1,1, NV,NV, Vector3.new(-0.5,-0.8,-0.2), Vector3.new(0,0,0.2))
590
else
591
SetWeld(joint4,1,1, NV,NV, Vector3.new(-0.5,-0.38,-0.3), Vector3.new(0,0,0.14))
592
end
593
 
594
local joint5 = Joint5
595
SetWeld(joint5,1,1,NV,NV,Vector3.new(0,0.9,0),Vector3.new(0,0,side/7))
596
 
597
Torsoz.CFrame = CFrame.new(pos+(towall*-2), pos) * CFrame.Angles(0,-side,-side/2.2)
598
bg.cframe = CFrame.new(pos+(towall*-2), pos) * CFrame.Angles(0,-side,-side/2.2)
599
 
600
local aniangle = 0
601
local aniplus = true
602
local aniangle2 = 0
603
local aniplus2 = true
604
 
605
local prevpart = part
606
HWRLastPart = part
607
while HWallRunning == true do
608
 
609
if aniangle > math.pi then
610
aniplus = false
611
elseif aniangle < -math.pi then
612
aniplus = true  
613
end
614
if aniplus == true then
615
aniangle = aniangle + 0.95
616
elseif aniplus == false then
617
aniangle = aniangle - 0.95
618
end
619
 
620
if aniangle2 > math.pi then
621
aniplus2 = false
622
elseif aniangle2 < -math.pi then
623
aniplus2 = true  
624
end
625
if aniplus2 == true then
626
aniangle2 = aniangle2 + 0.23
627
elseif aniplus2 == false then
628
aniangle2 = aniangle2 - 0.23
629
end
630
 
631
Hu.PlatformStand = true
632
local hitz, enz = RAY(Torsoz.Position, Vector3.new(0,-3,0))
633
local hitz2, enz2 = RAY(Torsoz.Position, towall*3.4)
634
 
635
--- if player ends wall run on ground
636
if hitz ~= nil and hitz.CanCollide == true then
637
bg.cframe = CFrame.new(enz2+(towall*-2), enz2) * CFrame.Angles(0,-side,0)
638
local offset = (bg.cframe.p.y+enz2.y) - bg.cframe.p.y
639
Torsoz.CFrame = CFrame.new(Vector3.new(bg.cframe.p.x,offset,bg.cframe.p.z), enz2) * CFrame.Angles(0,-side,0)
640
Torsoz.Velocity = NV
641
break
642
end
643
 
644
---- if new wall found --------
645
if hitz2 ~= nil and hitz2.CanCollide == true then
646
if hitz2 ~= prevpart then
647
local direct = CFrame.new(Torsoz.Position, Torsoz.Position+dir) * CFrame.Angles(0,side,0)
648
local hitz3, enz3 = RAY(Torsoz.Position, (direct * CFrame.Angles(0,-side/2.3,0)).lookVector*4)
649
if hitz3 ~= nil then
650
Torsoz.CFrame = CFrame.new(enz2+(towall*-2), enz2) * CFrame.Angles(0,-side*1.1,-side/2.2)
651
bg.cframe = CFrame.new(enz2+(towall*-2), enz2) * CFrame.Angles(0,-side*1.1,-side/2.2)
652
dir, dirc = FindSurface(hitz2, enz2)
653
towall = -dir
654
dir = (CFrame.new(NV, dir) * CFrame.Angles(0,side,0)).lookVector
655
prevpart = hitz2
656
HWRLastPart = hitz2
657
else
658
---- if player fails to find new wall to run on
659
Torsoz.CFrame = CFrame.new(Torsoz.Position, Torsoz.Position+dir)
660
bg.cframe = CFrame.new(Torsoz.Position, Torsoz.Position+dir)
661
Torsoz.Velocity = NV
662
HWRCooldown = 8
663
break
664
end
665
end
666
--- continue to wall run
667
Torsoz.CFrame = CFrame.new(enz2+(towall*-2), enz2) * CFrame.Angles(0,-side,-side/2.2)
668
bg.cframe = CFrame.new(enz2+(towall*-2), enz2) * CFrame.Angles(0,-side,-side/2.2)
669
else
670
---- if player ends wall run at end of wall
671
Torsoz.CFrame = CFrame.new(Torsoz.Position, Torsoz.Position+dir)
672
bg.cframe = CFrame.new(Torsoz.Position, Torsoz.Position+dir)
673
Torsoz.Velocity = NV
674
HWRCooldown = 8
675
break
676
end
677
 
678
local hitz3, enz3 = RAY(Torsoz.Position, Torsoz.CFrame.lookVector*2)
679
if hitz3 ~= nil and hitz3.CanCollide == true then
680
Torsoz.CFrame = CFrame.new(Torsoz.Position, Torsoz.Position+dir)
681
bg.cframe = CFrame.new(Torsoz.Position, Torsoz.Position+dir)
682
Torsoz.Velocity = NV
683
HWRCooldown = 8
684
break
685
end
686
 
687
bv.Parent = Torsoz
688
bv.velocity = (dir*(sprint-0.5)) + Vector3.new(0,GravPoint,0)
689
bg.cframe = bg.cframe * CFrame.Angles(aniangle/80,aniangle/80,0)
690
Torsoz.CFrame = Torsoz.CFrame * CFrame.Angles(aniangle/80,aniangle/80,0)
691
local j3,j3a = GetWeld(joint3)
692
local j4,j4a = GetWeld(joint4)
693
SetWeld(joint3,1,1, j3,j3a, j3,Vector3.new(-0.2+(aniangle/4),0,0))
694
SetWeld(joint4,1,1, j4,j4a, j4,Vector3.new(-0.2+(-aniangle/4),0,0))
695
if side == math.pi/2 then
696
local j1,j1a = GetWeld(joint1)
697
SetWeld(joint1,1,1, j1,j1a, j1, Vector3.new(0,0,0.8+(aniangle2/14)))
698
else
699
local j2,j2a = GetWeld(joint2)
700
SetWeld(joint2,1,1, j2,j2a, j2, Vector3.new(0,0,-0.8-(aniangle2/14)))
701
end
702
 
703
wait(0.025)
704
if GravPoint < -100 then
705
bg.cframe = CFrame.new(enz2+(towall*-2), enz2) * CFrame.Angles(0,-side,0)
706
local offset = math.abs((bg.cframe.p.y+enz2.y) - bg.cframe.p.y)
707
Torsoz.CFrame = CFrame.new(Vector3.new(bg.cframe.p.x,offset,bg.cframe.p.z), enz2) * CFrame.Angles(0,-side,0)
708
break
709
end
710
 
711
end
712
 
713
if HWallRunning == "Jumping" then
714
HWRCooldown = 6
715
joint1.C1 = CFrame.new(0,0.5,0)
716
 
717
joint2.C1 = CFrame.new(0,0.5,0)
718
if side == -math.pi/2 then
719
joint2.C0 = CFrame.new(-1.35,0.5,0) * CFrame.Angles(0,side/2.4,-math.pi/3)
720
else
721
joint2.C0 = CFrame.new(-1.35,0.5,0) * CFrame.Angles(0,side/2.4,-math.pi/4)
722
end
723
 
724
joint3.C1 = CFrame.new(0,1,0)
725
if side == -math.pi/2 then
726
joint3.C0 = CFrame.new(0.5,-0.8,0) * CFrame.Angles(0,math.pi+(side/2.4),-math.pi/4)
727
else
728
joint3.C0 = CFrame.new(0.5,-0.8,0) * CFrame.Angles(0,(side/2.4),math.pi/4)
729
end
730
joint4.MaxVelocity = 10
731
joint4.DesiredAngle = 0
732
joint4.C1 = CFrame.new(0,1,0)
733
if side == -math.pi/2 then
734
joint4.C0 = CFrame.new(-0.5,-0.8,0) * CFrame.Angles(0,math.pi+(side/2.4),math.pi/4)
735
else
736
joint4.C0 = CFrame.new(-0.5,-0.8,0) * CFrame.Angles(0,(side/2.4),-math.pi/4)
737
end
738
 
739
local joint5 = Joint5
740
joint5.C1 = CFrame.new(0,-0.5,0) * CFrame.Angles(0,side/2.4,0)
741
joint5.C0 = CFrame.new(0,1,0)
742
 
743
local j1,j1a = GetWeld(joint1)
744
local j2,j2a = GetWeld(joint2)
745
local j3,j3a = GetWeld(joint3)
746
local j4,j4a = GetWeld(joint4)
747
local j5,j5a = GetWeld(joint5)
748
 
749
GravPoint = 26
750
local collidecount = 0
751
local bgangle = side/2
752
local count = 1
753
local dir2 = (CFrame.new(NV, dir) * CFrame.Angles(0,-side/2.4,0)).lookVector
754
HWRDir = dir2
755
bv.velocity = (dir2*(sprint+5)) + Vector3.new(0,GravPoint,0)
756
while HWallRunning == "Jumping" do
757
local hitz, enz = RAY(Torsoz.Position, Vector3.new(0,-4,0))
758
local hitz2, enz2 = RAY(Torsoz.Position, dir2*1.4)
759
if hitz ~= nil and hitz.CanCollide == true then
760
local offset = math.abs(enz.y - Torsoz.CFrame.p.y)
761
Torsoz.CFrame = CFrame.new(enz+Vector3.new(0,2.9,0), enz+Vector3.new(0,2.9,0)+dir2)
762
Torsoz.Velocity = NV
763
break
764
end
765
 
766
if hitz2 ~= nil and hitz2.CanCollide == true then
767
collidecount = collidecount + 1
768
if collidecount == 4 then
769
Torsoz.CFrame = CFrame.new(Torsoz.Position, Torsoz.Position+dir2) * CFrame.new(0,0,0.4)
770
Torsoz.Velocity = Vector3.new(0,Torsoz.Velocity.y,0)
771
HWRCooldown = 5
772
VWRCooldown = 5
773
wait(0.02)
774
break
775
end
776
end
777
 
778
if side/2 > 0 then
779
if bgangle > 0.2 then
780
bgangle = bgangle - 0.055
781
end
782
else
783
if bgangle < -0.2 then
784
bgangle = bgangle + 0.055
785
end
786
end
787
 
788
if count <= 5 then
789
if side == -math.pi/2 then
790
SetWeld(joint1,count,5, j1,j1a, Vector3.new(1.35,0.5,0), Vector3.new(0,side/2.4,math.pi/4))
791
SetWeld(joint2,count,5, j2,j2a, Vector3.new(-1.35,0.5,0), Vector3.new(0,side/2.4,-math.pi/3))
792
SetWeld(joint3,count,5, j3,j3a, Vector3.new(0.5,-0.8,0), Vector3.new(0,-side/1.7,0))
793
joint3.C0 = joint3.C0 * CFrame.Angles((-math.pi/4)/5*count,0,0)
794
SetWeld(joint4,count,5, j4,j4a, Vector3.new(-0.5,-0.8,0), Vector3.new(0,-side/1.7,0))
795
joint4.C0 = joint4.C0 * CFrame.Angles((math.pi/4)/5*count,0,0)
796
else
797
SetWeld(joint1,count,5, j1,j1a, Vector3.new(1.35,0.5,0), Vector3.new(0,side/2.4,math.pi/3))
798
SetWeld(joint2,count,5, j2,j2a, Vector3.new(-1.35,0.5,0), Vector3.new(0,side/2.4,-math.pi/4))
799
SetWeld(joint3,count,5, j3,j3a, Vector3.new(0.5,-0.8,0), Vector3.new(0,-side/1.7,0))
800
joint3.C0 = joint3.C0 * CFrame.Angles((math.pi/4)/5*count,0,0)
801
SetWeld(joint4,count,5, j4,j4a, Vector3.new(-0.5,-0.8,0), Vector3.new(0,-side/1.7,0))
802
joint4.C0 = joint4.C0 * CFrame.Angles((-math.pi/4)/5*count,0,0)
803
end
804
 
805
count = count + 1
806
end
807
 
808
bg.Parent = Torsoz
809
bg.cframe = CFrame.new(NV, dir) * CFrame.Angles(0,side/15,-bgangle)
810
bv.velocity = (dir2*(sprint+5)) + Vector3.new(0,GravPoint,0)
811
if collidecount ~= 0 then
812
bv.velocity = Vector3.new(0,bv.velocity.y,0)
813
end
814
if GravPoint < -120 then
815
break
816
end
817
wait(0.025)
818
end
819
end
820
 
821
Hu.PlatformStand = false
822
bv:remove()
823
 
824
HWRGravDrop = false
825
Stand()
826
HWallRunning = false
827
end
828
end
829
 
830
function VWR(part, pos)
831
if (part.className == "Part" and part.Shape == Enum.PartType.Block) or part.className ~= "Part" then
832
print("VWR Activated")
833
flow.Value = flow.Value + 9
834
Standing = false
835
VWallRunning = true
836
Action = "VWallRunning"
837
GravPoint = 0
838
local percent = 1
839
VWRLastPart = part
840
local dir, dirc = FindSurface(part, pos)
841
towall = -dir
842
dir = (CFrame.new(NV, -dir) * CFrame.Angles(math.pi/2,0,0)).lookVector
843
--[[
844
local p = P:Clone()
845
p.Parent = char
846
p.Size = Vector3.new(2,2,2)
847
p.BrickColor = BrickColor.new("Lime green")
848
p.CanCollide = false
849
p.CFrame = part.CFrame * CFrame.new(dirc*5)
850
p.Transparency = 0.3
851
]]
852
local bv = Instance.new("BodyVelocity", Torsoz)
853
bv.Name = "StaminaBodyObject"
854
bv.maxForce = Vector3.new(1/0,1/0,1/0)
855
bv.P = 9000
856
bv.velocity = (dir*(sprint-1))*percent
857
 
858
local bg = Instance.new("BodyGyro", Torsoz)
859
bg.Name = "StaminaBodyObject"
860
bg.maxTorque = Vector3.new(1/0,1/0,1/0)
861
bg.D = 100
862
local posi = pos + (-towall*1.8)
863
bg.cframe = CFrame.new(posi, posi+towall) * CFrame.Angles((math.pi/5),0,0)
864
Torsoz.CFrame = CFrame.new(posi, posi+towall) * CFrame.Angles((math.pi/5),0,0)
865
 
866
local joint1 = Joint3
867
SetWeld(joint1,1,1, NV,NV, Vector3.new(1.4,0.45,-0.1), Vector3.new(-math.pi/3.2,0,math.pi/8))
868
 
869
local joint2 = Joint4
870
SetWeld(joint2,1,1, NV,NV, Vector3.new(-1.4,0.45,-0.1), Vector3.new(-math.pi/3.2,0,-math.pi/8))
871
 
872
local joint3 = Joint1
873
SetWeld(joint3,1,1, NV,NV, Vector3.new(0.48,-0.6,-0.1), Vector3.new(0,math.pi/2,0))
874
joint3.C1 = CFrame.new(0,0.7,0.2) * CFrame.Angles(0,math.pi/2,0)
875
 
876
local joint4 = Joint2
877
SetWeld(joint4,1,1, NV,NV, Vector3.new(-0.48,-0.6,-0.1), Vector3.new(0,math.pi/2,0))
878
joint4.C1 = CFrame.new(0,0.7,0.2) * CFrame.Angles(0,math.pi/2,0)
879
 
880
local joint5 = Joint5
881
SetWeld(joint5,1,1, NV,NV, Vector3.new(0,1,0), Vector3.new(math.pi/20,0,0))
882
 
883
local aniangle = 0
884
local aniplus = true
885
 
886
while VWallRunning == true do
887
local hitz, enz = RAY(Torsoz.Position, towall*2.1)
888
local hitz2, enz2 = RAY(Torsoz.Position, (CFrame.new(NV,towall)*CFrame.Angles(math.pi/2,0,0)).lookVector*2.4)
889
 
890
if aniangle > math.pi then
891
aniplus = false
892
elseif aniangle < -math.pi then
893
aniplus = true  
894
end
895
if aniplus == true then
896
aniangle = aniangle + (1.3*(percent+0.2))
897
elseif aniplus == false then
898
aniangle = aniangle - (1.3*(percent+0.2))
899
end
900
 
901
bv.velocity = (dir*(sprint-1))*percent
902
if VWRLeft == true then
903
bv.velocity = bv.velocity + ((CFrame.new(NV, towall) * CFrame.Angles(0,math.pi/2,0)).lookVector * (11*percent+5))
904
end
905
if VWRRight == true then
906
bv.velocity = bv.velocity - ((CFrame.new(NV, towall) * CFrame.Angles(0,math.pi/2,0)).lookVector * (11*percent+5))
907
end
908
 
909
bg.cframe = CFrame.new(posi, posi+towall) * CFrame.Angles((math.pi/5),0,0) * CFrame.Angles(0,aniangle/60,0)
910
 
911
SetWeld(joint1,1,1, NV,NV, Vector3.new(1.4,0.45,-0.1), Vector3.new(-math.pi/3.2,aniangle/52,(math.pi/8)+(aniangle/30)))
912
SetWeld(joint2,1,1, NV,NV, Vector3.new(-1.4,0.45,-0.1), Vector3.new(-math.pi/3.2,aniangle/52,(-math.pi/8)+(-aniangle/30)))
913
SetWeld(joint3,1,1, NV,NV, Vector3.new(0.51,-0.75,-(aniangle/30)), Vector3.new(0,math.pi/2,(aniangle/8)-0.3))
914
SetWeld(joint4,1,1, NV,NV, Vector3.new(-0.51,-0.75,(aniangle/30)), Vector3.new(0,math.pi/2,(-aniangle/8)-0.3))
915
 
916
if hitz == nil then
917
local lv = Torsoz.Position + (Torsoz.CFrame.lookVector*100)
918
Torsoz.CFrame = CFrame.new(Torsoz.Position, Vector3.new(lv.x,Torsoz.Position.y,lv.z))
919
break
920
end
921
 
922
if hitz2 ~= nil then
923
percent = 0
924
VWallRunning = "Falling"
925
Action = "VWRFalling"
926
GravPoint = -7
927
break
928
end
929
 
930
wait(0.02)
931
percent = percent - 0.028
932
if percent <= 0.15 then
933
VWallRunning = "Falling"
934
Action = "VWRFalling"
935
end
936
end
937
 
938
-------------------------- Falling from VWR ------------------------------
939
if VWallRunning == "Falling" then
940
GravPoint = GravPoint - 1
941
local dirpos = (-towall *5) + Vector3.new(0,GravPoint,0)
942
bv.velocity = CFrame.new(NV, dirpos).lookVector * dirpos.magnitude
943
 
944
local j1,j1a = GetWeld(joint1)
945
local j2,j2a = GetWeld(joint2)
946
local j3,j3a = GetWeld(joint3)
947
local j4,j4a = GetWeld(joint4)
948
local j5,j5a = GetWeld(joint5)
949
 
950
local counter = 0
951
while VWallRunning == "Falling" do
952
counter = counter + 1
953
local hitz, enz = RAY(H.Position, Vector3.new(0,-2.4,0))
954
 
955
dirpos = (-towall *5) + Vector3.new(0,GravPoint,0)
956
bv.velocity = CFrame.new(NV, dirpos).lookVector * dirpos.magnitude
957
if VWRLeft == true then
958
bv.velocity = bv.velocity + ((CFrame.new(NV, towall) * CFrame.Angles(0,math.pi/2,0)).lookVector * 9)
959
end
960
if VWRRight == true then
961
bv.velocity = bv.velocity - ((CFrame.new(NV, towall) * CFrame.Angles(0,math.pi/2,0)).lookVector * 9)
962
end
963
bg.cframe = CFrame.new(NV, (-towall*30) + Vector3.new(0,GravPoint,0)) * CFrame.Angles(-math.pi/2.55,math.pi,0)
964
 
965
if counter <= 35 then
966
SetWeld(joint1,counter,35, j1,j1a, Vector3.new(1.4,0.45,-0.1), Vector3.new(math.pi/9,0,math.pi/9))
967
SetWeld(joint2,counter,35, j2,j2a, Vector3.new(-1.4,0.45,-0.1), Vector3.new(math.pi/9,0,-math.pi/9))
968
SetWeld(joint3,counter,35, j3,j3a, Vector3.new(0.5,-0.75,0), Vector3.new(0,math.pi/2,math.pi/9))
969
joint3.C1 = CFrame.new(0,0.7 + (0.3/35*counter),0.2 - (0.2/35*counter)) * CFrame.Angles(0,math.pi/2,0)
970
SetWeld(joint4,counter,35, j4,j4a, Vector3.new(-0.5,-0.75,0), Vector3.new(0,math.pi/2,math.pi/9))
971
joint4.C1 = CFrame.new(0,0.7 + (0.3/35*counter),0.2 - (0.2/35*counter)) * CFrame.Angles(0,math.pi/2,0)
972
SetWeld(joint5,counter,35, j5,j5a, Vector3.new(0,1,0), Vector3.new(-math.pi/6,0,0))
973
end
974
 
975
if hitz ~= nil then
976
bv:remove()
977
Torsoz.CFrame = CFrame.new(enz+Vector3.new(0,2,0), (enz+Vector3.new(0,2,0)) + ((-towall*25) + Vector3.new(0,GravPoint,0))) * CFrame.Angles(-math.pi/2.55,math.pi,0)
978
Torsoz.Velocity = NV
979
Torsoz.RotVelocity = NV
980
local bp = Instance.new("BodyPosition", Torsoz)
981
bp.maxForce = Vector3.new(1/0,1/0,1/0)
982
bp.position = Torsoz.CFrame.p
983
game:service("Debris"):AddItem(bp, 0.16)
984
flow.Value = 0
985
break
986
end
987
 
988
if GravPoint > - 180 then
989
GravPoint = GravPoint - 1.9
990
end
991
if counter > 200 then
992
break
993
end
994
wait(0.02)
995
end
996
 
997
local bp = Instance.new("BodyPosition")
998
 
999
local counter2 = counter
1000
local bgangleplus = 0
1001
 
1002
local j1,j1a = GetWeld(joint1)
1003
local j2,j2a = GetWeld(joint2)
1004
local j3,j3a = GetWeld(joint3)
1005
local j4,j4a = GetWeld(joint4)
1006
local j5,j5a = GetWeld(joint5)
1007
 
1008
local landingpos
1009
 
1010
while VWallRunning == "BackflipFromFall" do
1011
counter2 = counter2 + 1
1012
local hitz, enz = RAY(H.Position+Vector3.new(0,2,0), Vector3.new(0,-4.4,0))
1013
 
1014
if counter2 - counter < 13 then
1015
bgangleplus = bgangleplus - ((math.pi*1.1)/13)
1016
end
1017
if counter2 - counter <= 13 then
1018
SetWeld(joint1,counter2-counter,13, j1,j1a, Vector3.new(1.4,0.5,0.1), Vector3.new(math.pi/2,0.1,math.pi/2))
1019
SetWeld(joint2,counter2-counter,13, j2,j2a, Vector3.new(-1.4,0.5,0.1), Vector3.new(math.pi/2,-0.1,-math.pi/2))
1020
SetWeld(joint3,counter2-counter,13, j3,j3a, Vector3.new(0.52,-0.3,-0.65), Vector3.new(0,math.pi/2,0))
1021
SetWeld(joint4,counter2-counter,13, j4,j4a, Vector3.new(-0.51,-0.9,-0.05), Vector3.new(0,math.pi/2,0))
1022
SetWeld(joint5,counter2-counter,13, j5,j5a, Vector3.new(0,0.9,0), Vector3.new(-math.pi/7,0,0))
1023
end
1024
 
1025
dirpos = (-towall *5) + Vector3.new(0,GravPoint,0)
1026
--bv.velocity = Vector3.new(0,-2,0)
1027
bv.velocity = CFrame.new(NV, dirpos).lookVector * dirpos.magnitude
1028
if VWRLeft == true then
1029
bv.velocity = bv.velocity + ((CFrame.new(NV, towall) * CFrame.Angles(0,math.pi/2,0)).lookVector * 9)
1030
end
1031
if VWRRight == true then
1032
bv.velocity = bv.velocity - ((CFrame.new(NV, towall) * CFrame.Angles(0,math.pi/2,0)).lookVector * 9)
1033
end
1034
bg.cframe = CFrame.new(NV, (-towall*30) + Vector3.new(0,GravPoint,0)) * CFrame.Angles((-math.pi/2.4) + bgangleplus,math.pi,0)
1035
 
1036
if hitz ~= nil then
1037
bv:remove()
1038
landingpos = enz - (towall*1.3)
1039
if counter2 - counter > 8 then
1040
bp = Instance.new("BodyPosition", Torsoz)
1041
bp.maxForce = Vector3.new(1/0,1/0,1/0)
1042
bp.position = enz+Vector3.new(0,2.4,0) + (-towall*1)
1043
VWallRunning = "LandingFall"
1044
else
1045
Torsoz.CFrame = bg.cframe + (enz+Vector3.new(0,2.3,0))
1046
Torsoz.Velocity = NV
1047
Torsoz.RotVelocity = NV
1048
local bp = Instance.new("BodyPosition", Torsoz)
1049
bp.maxForce = Vector3.new(1/0,1/0,1/0)
1050
bp.position = Torsoz.CFrame.p
1051
game:service("Debris"):AddItem(bp, 0.14)
1052
flow.Value = 0
1053
end
1054
break
1055
end
1056
 
1057
if GravPoint > - 180 then
1058
GravPoint = GravPoint - 1.9
1059
end
1060
if counter2 > 200 then
1061
break
1062
end
1063
wait(0.02)
1064
end
1065
 
1066
if VWallRunning == "LandingFall" then
1067
print("Landing")
1068
 
1069
joint3.C1 = CFrame.new(0,1,0) * CFrame.Angles(0,math.pi/2,0)
1070
joint4.C1 = CFrame.new(0,1,0) * CFrame.Angles(0,math.pi/2,0)
1071
local j1,j1a = GetWeld(joint1)
1072
local j2,j2a = GetWeld(joint2)
1073
local j3,j3a = GetWeld(joint3)
1074
local j4,j4a = GetWeld(joint4)
1075
local j5,j5a = GetWeld(joint5)
1076
 
1077
local a
1078
local mesh
1079
if GravPoint < -70 then
1080
a = P:Clone()
1081
a.Parent = Torsoz
1082
a.Name = "AirLandingEffect"
1083
a.BrickColor = BrickColor.new("Medium stone grey")
1084
a.Transparency = 0.3
1085
a.CFrame = CFrame.new(landingpos+Vector3.new(0,0.4,0))
1086
mesh = Instance.new("SpecialMesh", a)
1087
mesh.MeshId = "http://www.roblox.com/asset/?id=20329976"
1088
mesh.Scale = Vector3.new(0,0,0)
1089
end
1090
 
1091
local bgcf = CFrame.new(NV, Vector3.new(towall.x,0,towall.z))
1092
bg.cframe = bgcf * CFrame.Angles(-math.pi/7,0,0)
1093
local bgval = math.pi/7/2
1094
 
1095
for i = 1, 6 do
1096
Hu.PlatformStand = true
1097
SetWeld(joint1,i,6, j1,j1a, Vector3.new(1.2,0.5,0.2), Vector3.new(math.pi/2,0.5,math.pi/1.2))
1098
SetWeld(joint2,i,6, j2,j2a, Vector3.new(-1.2,0.5,0.2), Vector3.new(math.pi/2,-0.5,-math.pi/1.2))
1099
SetWeld(joint3,i,6, j3,j3a, Vector3.new(0.51,-0.3,-0.8), Vector3.new(0,math.pi/2,-math.pi/7))
1100
SetWeld(joint4,i,6, j4,j4a, Vector3.new(-0.51,-0.8,-0.7), Vector3.new(0,math.pi/2,-math.pi/3))
1101
SetWeld(joint5,i,6, j5,j5a, Vector3.new(0,0.85,0), Vector3.new(-math.pi/8,0,0))
1102
bp.position = bp.position + Vector3.new(0,-0.07,0)
1103
bg.cframe = bgcf * CFrame.Angles((-bgval*2) + (bgval/6*i),0,0)
1104
Torsoz.CFrame = bg.cframe + bp.position
1105
if a ~= nil then
1106
mesh.Scale = mesh.Scale + Vector3.new(1.3,0.35,1.3)
1107
a.Transparency = 0.3 + (0.7/6*i)
1108
end
1109
wait(0.02)
1110
end
1111
if a ~= nil then
1112
a:remove()
1113
end
1114
local j1,j1a = GetWeld(joint1)
1115
local j2,j2a = GetWeld(joint2)
1116
local j3,j3a = GetWeld(joint3)
1117
local j4,j4a = GetWeld(joint4)
1118
local j5,j5a = GetWeld(joint5)
1119
for i = 1, 6 do
1120
Hu.PlatformStand = true
1121
SetWeld(joint1,i,6, j1,j1a, Vector3.new(1.5,0.5,0), Vector3.new(0,0,0))
1122
SetWeld(joint2,i,6, j2,j2a, Vector3.new(-1.5,0.5,0), Vector3.new(0,0,0))
1123
SetWeld(joint3,i,6, j3,j3a, Vector3.new(0.5,-1,0), Vector3.new(0,math.pi/2,0))
1124
SetWeld(joint4,i,6, j4,j4a, Vector3.new(-0.5,-1,0), Vector3.new(0,math.pi/2,0))
1125
SetWeld(joint5,i,6, j5,j5a, Vector3.new(0,1,0), Vector3.new(0,0,0))
1126
bp.position = bp.position + Vector3.new(0,0.1,0)
1127
bg.cframe = bgcf * CFrame.Angles(-bgval + (bgval/6*i),0,0)
1128
Torsoz.CFrame = bg.cframe + bp.position
1129
wait(0.02)
1130
end
1131
 
1132
bp:remove()
1133
end
1134
 
1135
end
1136
 
1137
bv:remove()
1138
bg:remove()
1139
VWallRunning = false
1140
Stand()
1141
end
1142
end
1143
 
1144
function Slide(pos)
1145
flow.Value = flow.Value + 6
1146
Action = "Sliding"
1147
Sliding = true
1148
GravPoint = Torsoz.Velocity.y
1149
local spd = Vector3.new(Torsoz.Velocity.x,0,Torsoz.Velocity.z).magnitude + 10
1150
local dir = Vector3.new(Torsoz.Velocity.x,0,Torsoz.Velocity.z).unit
1151
 
1152
local bv = Instance.new("BodyVelocity", Torsoz)
1153
bv.maxForce = Vector3.new(1/0,1/0,1/0)
1154
bv.velocity = dir*spd
1155
local bg = Instance.new("BodyGyro", Torsoz)
1156
bg.maxTorque = Vector3.new(1/0,1/0,1/0)
1157
bg.cframe = CFrame.new(NV, dir) * CFrame.Angles(math.pi/2.2,0.24,0)
1158
 
1159
local joint1 = Joint1
1160
local joint2 = Joint2
1161
local joint3 = Joint3
1162
local joint4 = Joint4
1163
local joint5 = Joint5
1164
local j1,j1a = GetWeld(joint1)
1165
local j2,j2a = GetWeld(joint2)
1166
 
1167
SetWeld(joint1,1,1, NV,NV, Vector3.new(j1.x,j1.y,j1.z), Vector3.new(j1a.x,math.pi/2,j1a.z))
1168
joint1.C1 = CFrame.new(0,1,0) * CFrame.Angles(0,math.pi/2,0)
1169
SetWeld(joint2,1,1, NV,NV, Vector3.new(j2.x,j2.y,j2.z), Vector3.new(j2a.x,math.pi/2,j2a.z))
1170
joint2.C1 = CFrame.new(0,1,0) * CFrame.Angles(0,math.pi/2,0)
1171
 
1172
local j1,j1a = GetWeld(joint1)
1173
local j2,j2a = GetWeld(joint2)
1174
local j3,j3a = GetWeld(joint3)
1175
local j4,j4a = GetWeld(joint4)
1176
local j5,j5a = GetWeld(joint5)
1177
 
1178
local count = 0
1179
local lastpos
1180
 
1181
while Sliding == true do
1182
count = count + 1
1183
Hu.PlatformStand = true
1184
local hitz1, enz1 = RAY(Torsoz.Position+Vector3.new(0,0.03,0), dir *2.5)
1185
local hitz2, enz2 = RAY(Torsoz.Position-Vector3.new(0,0.2,0), dir *2.5)
1186
local ghitz, genz = RAY(Torsoz.Position, Vector3.new(0,-2.6,0))
1187
bv.velocity = dir*spd + Vector3.new(0,GravPoint,0)
1188
 
1189
if count <= 5 then
1190
SetWeld(joint1,count,5, j1,j1a, Vector3.new(0.5,-0.8,-0.15), Vector3.new(0,(math.pi/2)+0.1,-0.4))
1191
SetWeld(joint2,count,5, j2,j2a, Vector3.new(-0.5,-1,0), Vector3.new(0,(math.pi/2)-0.4,0))
1192
SetWeld(joint3,count,5, j3,j3a, Vector3.new(1.5,0.5,0), Vector3.new(-0.7,-0.24,math.pi/5))
1193
SetWeld(joint4,count,5, j4,j4a, Vector3.new(-1.5,0.5,0), Vector3.new(-0.1,0,-math.pi/1.5))
1194
SetWeld(joint5,count,5, j5,j5a, Vector3.new(0,1,0), Vector3.new(-0.5,-0.2,0))
1195
end
1196
 
1197
if (hitz1 ~= nil and hitz1.CanCollide == true) or (hitz2 ~= nil and  hitz2.CanCollide == true) then
1198
bv:remove()
1199
bg:remove()
1200
Sliding = "HitObject"
1201
end
1202
if ghitz ~= nil then
1203
GravPoint = 0
1204
Torsoz.CFrame = CFrame.new(genz, genz+dir) * CFrame.Angles(math.pi/2.2,0.24,0) + Vector3.new(0,0.7,0)
1205
spd = spd - 0.95
1206
else
1207
if GravPoint > -180 then
1208
GravPoint = GravPoint - 5.6
1209
end
1210
spd = spd - 0.36
1211
end
1212
if spd < 7 then
1213
Sliding = false
1214
end
1215
wait(0.02)
1216
end
1217
 
1218
if Sliding == false then
1219
local j1,j1a = GetWeld(joint1)
1220
local j2,j2a = GetWeld(joint2)
1221
local j3,j3a = GetWeld(joint3)
1222
local j4,j4a = GetWeld(joint4)
1223
local j5,j5a = GetWeld(joint5)
1224
for i = 1, 4 do
1225
SetWeld(joint1,i,4, j1,j1a, Vector3.new(0.5,-1,0), Vector3.new(0,math.pi/2,0))
1226
SetWeld(joint2,i,4, j2,j2a, Vector3.new(-0.5,-1,0), Vector3.new(0,math.pi/2,0))
1227
SetWeld(joint3,i,4, j3,j3a, Vector3.new(1.5,0.5,0), NV)
1228
SetWeld(joint4,i,4, j4,j4a, Vector3.new(-1.5,0.5,0), NV)
1229
SetWeld(joint5,i,4, j5,j5a, Vector3.new(0,1,0), NV)
1230
local hitz, enz = RAY(Torsoz.Position, Vector3.new(0,-2.6,0))
1231
bg.cframe = CFrame.new(NV, dir) * CFrame.Angles((math.pi/2.2) - ((math.pi/2.2)/4*i),0.24 - (0.24/4*i),0)
1232
bv.velocity = dir*spd + Vector3.new(0,GravPoint,0)
1233
 
1234
if hitz ~= nil then
1235
GravPoint = 0
1236
Torsoz.CFrame = CFrame.new(enz, enz+dir) * CFrame.Angles((math.pi/2.2) - ((math.pi/2.2)/4*i),0.24 - (0.24/4*i),0) + Vector3.new(0,0.7+(1.8/4*i),0)
1237
spd = spd - 0.95
1238
else
1239
if GravPoint > -180 then
1240
GravPoint = GravPoint - 5.6
1241
end
1242
spd = spd - 0.36
1243
end
1244
wait(0.02)
1245
end
1246
local hitz, enz = RAY(Torsoz.Position, Vector3.new(0,-2.6,0))
1247
Torsoz.CFrame = CFrame.new(enz, enz+dir) + Vector3.new(0,3,0)
1248
end
1249
bv:remove()
1250
bg:remove()
1251
SlideCooldown = 10
1252
Stand()
1253
end
1254
 
1255
function KD(key)
1256
if pause.Value == false then
1257
if key == string.char(32) then
1258
Space = true
1259
 
1260
local ghitz, genz = RAY(Torsoz.Position, Vector3.new(0,-3.7,0))
1261
local hitz, enz = RAY(Torsoz.Position+Vector3.new(0,1.1,0), Torsoz.CFrame.lookVector*2.3)
1262
local righthitz, rightenz
1263
local lefthitz, leftenz
1264
 
1265
if HWallRunning == false then
1266
righthitz, rightenz = RAY(Torsoz.Position, ((Torsoz.CFrame * CFrame.new(1.5,0,-0.2)).p - Torsoz.CFrame.p).unit*3.9)
1267
lefthitz, leftenz = RAY(Torsoz.Position, ((Torsoz.CFrame * CFrame.new(-1.5,0,-0.2)).p - Torsoz.CFrame.p).unit*3.9)
1268
 
1269
elseif HWallRunning == "Jumping" then
1270
righthitz, rightenz = RAY(Torsoz.Position, ((CFrame.new(Torsoz.Position, Torsoz.Position + HWRDir) * CFrame.new(1.5,0,-0.2)).p - Torsoz.Position).unit*3.9)
1271
lefthitz, leftenz = RAY(Torsoz.Position, ((CFrame.new(Torsoz.Position, Torsoz.Position + HWRDir) * CFrame.new(-1.5,0,-0.2)).p - Torsoz.Position).unit*3.9)
1272
 
1273
end
1274
 
1275
if Action == "Standing" and Shift == true and (hitz == nil or hitz.CanCollide == false) and (righthitz == nil or righthitz.CanCollide == false) and (lefthitz == nil or lefthitz.CanCollide == false) and (ghitz == nil or ghitz.CanCollide == false) and (Torsoz.Velocity.y > 6 and Torsoz.Velocity.y < 50) and DivingCooldown <= 0 then
1276
if stamina >= 10 then
1277
--if Vector3.new(Torsoz.Velocity.x,0,Torsoz.Velocity.z).magnitude > 12 then
1278
Dive()
1279
--end
1280
end
1281
end
1282
 
1283
if hitz == nil and VWallRunning == "Falling" then
1284
VWallRunning = "BackflipFromFall"
1285
end
1286
 
1287
if Shift == true and Torsoz.Velocity.y > -50 and Diving == false and DivingCooldown <= 0 then
1288
local hitz2, enz2 = RAY(Torsoz.Position, Vector3.new(0,-3.5,0))
1289
 
1290
if hitz ~= nil then
1291
if Action == "Standing" and VWRCooldown == 0 then
1292
if hitz2 == nil or hitz2.CanCollide == false then
1293
VWR(hitz, enz)
1294
end
1295
end
1296
end
1297
 
1298
if (HWallRunning == false or (HWallRunning == "Jumping" and (HWRLastPart ~= righthitz or HWRLastPart ~= lefthitz))) and HWRCooldown == 0 and VWallRunning == false then
1299
 
1300
if (hitz == nil or HWallRunning == "Jumping") and ((righthitz ~= nil and righthitz.Parent:findFirstChild("Humanoid") == nil and righthitz.Parent.className ~= "Hat") or (lefthitz ~= nil and lefthitz.Parent:findFirstChild("Humanoid") == nil and lefthitz.Parent.className ~= "Hat")) then
1301
if hitz2 == nil or hitz2.CanCollide == false then
1302
local right = (rightenz - Torsoz.Position).magnitude
1303
local left = (leftenz - Torsoz.Position).magnitude
1304
if right < left then
1305
if HWallRunning == "Jumping" and HWRLastPart ~= righthitz then
1306
HWallRunning = false
1307
while Standing == false do
1308
wait(0.01)
1309
end
1310
print("2nd Right Activated!")
1311
HWallRun(righthitz, rightenz, -math.pi/2)
1312
else
1313
if hitz == nil then
1314
print("Right Activated")
1315
HWallRun(righthitz, rightenz, -math.pi/2)
1316
end
1317
end
1318
elseif left < right then
1319
if HWallRunning == "Jumping" and HWRLastPart ~= lefthitz then
1320
HWallRunning = false
1321
while Standing == false do
1322
wait(0.01)
1323
end
1324
print("2nd Left Activated!")
1325
HWallRun(lefthitz, leftenz, math.pi/2)
1326
else
1327
if hitz == nil then
1328
print("Left Activated")
1329
HWallRun(lefthitz, leftenz, math.pi/2)
1330
end
1331
end
1332
end
1333
end
1334
end
1335
end
1336
 
1337
end
1338
 
1339
if HWallRunning == true then
1340
HWallRunning = "Jumping"
1341
Action = "HWRJumping"
1342
end
1343
 
1344
elseif key == string.char(48) then
1345
Shift = true
1346
elseif key == string.char(50) then
1347
if Action == "Standing" then
1348
Sit()
1349
elseif HWallRunning == true then
1350
HWRGravDrop = true
1351
end
1352
elseif key == string.char(52) then
1353
if Shift == true and Action == "Standing" and SlideCooldown == 0 and Vector3.new(Torsoz.Velocity.x,0,Torsoz.Velocity.z).magnitude > 15 and Torsoz.Velocity.y > -40 then
1354
print("Sliding")
1355
Slide()
1356
end
1357
elseif key == "a" then
1358
VWRLeft = true
1359
elseif key == "d" then
1360
VWRRight = true
1361
end
1362
end
1363
end
1364
 
1365
function KU(key)
1366
if key == string.char(32) then
1367
Space = false
1368
elseif key == string.char(48) then
1369
Shift = false
1370
elseif key == string.char(50) then
1371
if Action == "Sitting" then
1372
Stand()
1373
end
1374
elseif key == string.char(52) then
1375
Sliding = false
1376
elseif key == "a" then
1377
VWRLeft = false
1378
elseif key == "d" then
1379
VWRRight = false
1380
end
1381
end
1382
 
1383
mouse.KeyDown:connect(function(key) KD(key) end)
1384
mouse.KeyUp:connect(function(key) KU(key) end)
1385
 
1386
Joint1 = Instance.new("Snap", Torsoz)
1387
GetWeld(Joint1)
1388
Joint2 = Instance.new("Snap", Torsoz)
1389
GetWeld(Joint2)
1390
Joint3 = Instance.new("Snap", Torsoz)
1391
GetWeld(Joint3)
1392
Joint4 = Instance.new("Snap", Torsoz)
1393
GetWeld(Joint4)
1394
Joint5 = Instance.new("Snap", Torsoz)
1395
GetWeld(Joint5)
1396
Stand()
1397
 
1398
local animatebg = Instance.new("BodyGyro")
1399
animatebg.D = 100
1400
local GravAction = "Idle"
1401
local PrevGravAction = GravAction
1402
 
1403
local prevrapos = (RA.CFrame * CFrame.new(0,-1,0)).p
1404
local prevlapos = (LA.CFrame * CFrame.new(0,-1,0)).p
1405
local hue = 0
1406
local recyclecount = 0
1407
local tickoffset = tick()
1408
local fadetab = {}
1409
local fadetab2 = {}
1410
local animatebgcount = 0
1411
 
1412
for i = 1, 13 do
1413
local p = P:Clone()
1414
p.Name = "Part"..i
1415
local mesh = Instance.new("SpecialMesh", p)
1416
mesh.MeshId = "http://www.roblox.com/Asset/?id=9856898"
1417
mesh.TextureId = "http://www.roblox.com/Asset/?id=48358980"
1418
table.insert(fadetab, {p, mesh})
1419
end
1420
for i = 1, 13 do
1421
local p = P:Clone()
1422
p.Name = "Part"..i
1423
local mesh = Instance.new("SpecialMesh", p)
1424
mesh.MeshId = "http://www.roblox.com/Asset/?id=9856898"
1425
mesh.TextureId = "http://www.roblox.com/Asset/?id=48358980"
1426
table.insert(fadetab2, {p, mesh})
1427
end
1428
 
1429
game:service("RunService").Stepped:connect(function()
1430
GravAction = "Idle"
1431
hue = hue + 3
1432
hue = hue % 360
1433
 
1434
------------- anim angle changing --------
1435
if animangle > math.pi then
1436
animplus = false
1437
elseif animangle < -math.pi then
1438
animplus = true  
1439
end
1440
if animplus == true then
1441
animangle = animangle + animspeed
1442
elseif animplus == false then
1443
animangle = animangle - animspeed
1444
end
1445
 
1446
local hitz, enz = RAY(Torsoz.Position, Vector3.new(0,-3.9,0))
1447
if Shift == true then
1448
Hu.WalkSpeed = sprint
1449
else
1450
Hu.WalkSpeed = 16
1451
end
1452
if (FOV >= 70 and FOV < 74) and Vector3.new(Torsoz.Velocity.x,0,Torsoz.Velocity.z).magnitude > 25 then
1453
FOV = FOV + 1
1454
elseif (FOV <= 74 and FOV > 70) and Vector3.new(Torsoz.Velocity.x,0,Torsoz.Velocity.z).magnitude < 20 then
1455
FOV = FOV - 1
1456
end
1457
if pause.Value == true then
1458
Hu.WalkSpeed = 0
1459
end
1460
if Sitting == true then
1461
local hitz2, enz2 = RAY(Torsoz.Position, Vector3.new(0,-2.2,0))
1462
Hu.PlatformStand = true
1463
if hitz2 == nil then
1464
Stand()
1465
end
1466
end
1467
if Diving == true then
1468
Hu.PlatformStand = true
1469
DivingBV.velocity = Vector3.new(DivingDir.x*(sprint+2),GravPoint,DivingDir.z*(sprint+2))
1470
DivingBG.cframe = CFrame.new(Torsoz.Position, Torsoz.Position+DivingBV.velocity) * CFrame.Angles(-math.pi/2,0,0)
1471
 
1472
if GravPoint > -180 then
1473
GravPoint = GravPoint - 2
1474
end
1475
end
1476
if DivingCooldown > 0 then
1477
DivingCooldown = DivingCooldown - 1
1478
end
1479
if HWallRunning == true then
1480
if HWRGravDrop == false then
1481
GravPoint = GravPoint - 0.4
1482
else
1483
GravPoint = GravPoint - 2
1484
end
1485
elseif HWallRunning == "Jumping" then
1486
GravPoint = GravPoint - 1.7
1487
end
1488
----------------------------- stamina ----------------------------------------
1489
if Vector3.new(Torsoz.Velocity.x, 0, Torsoz.Velocity.z).magnitude > 18 and Action == "Standing" and Shift == true then
1490
if stamina > 0 then
1491
stamina = stamina - 0.5
1492
if stamina < 0 then
1493
Shift = false
1494
stamina = 0
1495
end
1496
else
1497
Shift = false
1498
stamina = 0
1499
end
1500
if Action == "Standing" then
1501
animspeed = 0.85
1502
SetWeld(Joint1,1,1, NV,NV, Vector3.new(0.5,-1,0), Vector3.new(-animangle/4.85,0,0))
1503
SetWeld(Joint2,1,1, NV,NV, Vector3.new(-0.5,-1,0), Vector3.new(animangle/4.85,0,0))
1504
SetWeld(Joint3,1,1, NV,NV, Vector3.new(1.5,0.5,0), Vector3.new(animangle/3.5,0,0))
1505
SetWeld(Joint4,1,1, NV,NV, Vector3.new(-1.5,0.5,0), Vector3.new(-animangle/3.5,0,0))
1506
end
1507
elseif Vector3.new(Torsoz.Velocity.x, 0, Torsoz.Velocity.z).magnitude > 12 and Action ~= "Sliding" then
1508
if stamina < maxstamina then
1509
stamina = stamina + 0.5
1510
if stamina > maxstamina then
1511
stamina = maxstamina
1512
end
1513
else
1514
stamina = maxstamina
1515
end
1516
if Action == "Standing" then
1517
animspeed = 0.65
1518
SetWeld(Joint1,1,1, NV,NV, Vector3.new(0.5,-1,0), Vector3.new(-animangle/7,0,0))
1519
SetWeld(Joint2,1,1, NV,NV, Vector3.new(-0.5,-1,0), Vector3.new(animangle/7,0,0))
1520
SetWeld(Joint3,1,1, NV,NV, Vector3.new(1.5,0.5,0), Vector3.new(animangle/5,0,0))
1521
SetWeld(Joint4,1,1, NV,NV, Vector3.new(-1.5,0.5,0), Vector3.new(-animangle/5,0,0))
1522
end
1523
elseif Vector3.new(Torsoz.Velocity.x, 0, Torsoz.Velocity.z).magnitude < 2 then
1524
animspeed = 0.1
1525
if Action == "Standing" then
1526
SetWeld(Joint1,1,1, NV,NV, Vector3.new(0.5,-1,0), Vector3.new(-animangle/38,0,0))
1527
SetWeld(Joint2,1,1, NV,NV, Vector3.new(-0.5,-1,0), Vector3.new(animangle/38,0,0))
1528
SetWeld(Joint3,1,1, NV,NV, Vector3.new(1.5,0.5,0), Vector3.new(animangle/30,0,0))
1529
SetWeld(Joint4,1,1, NV,NV, Vector3.new(-1.5,0.5,0), Vector3.new(-animangle/30,0,0))
1530
end
1531
if stamina < maxstamina then
1532
if Sitting == false then
1533
stamina = stamina + 0.65
1534
else
1535
stamina = stamina + 1.02
1536
end
1537
if stamina > maxstamina then
1538
stamina = maxstamina
1539
end
1540
else
1541
stamina = maxstamina
1542
end
1543
end
1544
 
1545
if hitz == nil then
1546
if Torsoz.Velocity.y > 1 or (Torsoz.Velocity.y < -1 and Torsoz.Velocity.y > -90) then
1547
if Action == "Standing" then
1548
GravAction = "Rising"
1549
animspeed = 0.1
1550
SetWeld(Joint1,1,1, NV,NV, Vector3.new(0.5,-1,0), Vector3.new(-animangle/38,0,0))
1551
SetWeld(Joint2,1,1, NV,NV, Vector3.new(-0.5,-1,0), Vector3.new(animangle/38,0,0))
1552
SetWeld(Joint3,1,1, NV,NV, Vector3.new(1.5,0.5,0), Vector3.new((math.pi-0.2)+(animangle/30),0,0))
1553
SetWeld(Joint4,1,1, NV,NV, Vector3.new(-1.5,0.5,0), Vector3.new((math.pi-0.2)+(-animangle/30),0,0))
1554
if animatebg.Parent ~= nil then
1555
animatebg.Parent = Torsoz
1556
animatebg.maxTorque = Vector3.new(1/0,10000,1/0)
1557
local lokvec = Torsoz.CFrame.lookVector*100
1558
animatebg.cframe = CFrame.new(NV, Vector3.new(lokvec.x,0,lokvec.z))
1559
animatebg.Parent = nil
1560
end
1561
end
1562
end
1563
end
1564
 
1565
if hitz == nil then
1566
local hitz2, enz2 = RAY(Torsoz.Position, Vector3.new(0,-6,0))
1567
if hitz2 == nil then
1568
if Torsoz.Velocity.y < -90 then
1569
if Action == "Standing" then
1570
GravAction = "Falling"
1571
animspeed = 1.1
1572
animatebg.Parent = Torsoz
1573
animatebg.maxTorque = Vector3.new(1/0,10000,1/0)
1574
local lokvec = Torsoz.CFrame.lookVector*100
1575
animatebg.cframe = CFrame.new(NV, Vector3.new(lokvec.x,0,lokvec.z)) * CFrame.Angles(-math.pi/11,animangle/70,0)
1576
SetWeld(Joint1,1,1, NV,NV, Vector3.new(0.45,-0.8,0), Vector3.new((animangle/27)-0.3,0,0.18))
1577
SetWeld(Joint2,1,1, NV,NV, Vector3.new(-0.45,-0.8,0), Vector3.new((-animangle/27)-0.3,0,-0.18))
1578
SetWeld(Joint3,1,1, NV,NV, Vector3.new(1.4,0.5,0), Vector3.new((math.pi+0.2)+(animangle/26),0,0.18))
1579
SetWeld(Joint4,1,1, NV,NV, Vector3.new(-1.4,0.5,0), Vector3.new((math.pi+0.2)+(-animangle/26),0,-0.18))
1580
end
1581
end
1582
elseif hitz2.CanCollide == true then
1583
if animatebg.Parent ~= nil then
1584
animatebg.Parent = Torsoz
1585
animatebg.maxTorque = Vector3.new(1/0,10000,1/0)
1586
local lokvec = Torsoz.CFrame.lookVector*100
1587
animatebg.cframe = CFrame.new(NV, Vector3.new(lokvec.x,0,lokvec.z))
1588
animatebg.Parent = nil
1589
end
1590
end
1591
end
1592
 
1593
if GravAction == "Idle" and animatebg.Parent ~= nil then
1594
animatebg.Parent = nil
1595
end
1596
 
1597
if math.abs(tickoffset - tick()) > 0.05 then
1598
tickoffset = tick()
1599
local flowcolor = HSV(hue, 0.7,1)
1600
recyclecount = (recyclecount % #fadetab) + 1
1601
if flow.Value > 25 then
1602
local lapos = (LA.CFrame * CFrame.new(0,-1,0)).p
1603
local rapos = (RA.CFrame * CFrame.new(0,-1,0)).p
1604
local p = fadetab[recyclecount]
1605
p[1].Parent = m
1606
p[1].CFrame = CFrame.new((lapos+prevlapos)/2, lapos)
1607
p[2].Scale = Vector3.new(0.5,0.5,(lapos-prevlapos).magnitude*2)
1608
p[2].VertexColor = Vector3.new(flowcolor.r,flowcolor.g,flowcolor.b)
1609
p[1].Transparency = math.abs((flow.Value/120) - 0.8)
1610
p[1].Transparency = p[1].Transparency + (1/#fadetab)
1611
local p = fadetab2[recyclecount]
1612
p[1].Parent = m
1613
p[1].CFrame = CFrame.new((rapos+prevrapos)/2, rapos)
1614
p[2].Scale = Vector3.new(0.5,0.5,(rapos-prevrapos).magnitude*2)
1615
p[2].VertexColor = Vector3.new(flowcolor.r,flowcolor.g,flowcolor.b)
1616
p[1].Transparency = math.abs((flow.Value/120) - 0.8)
1617
p[1].Transparency = p[1].Transparency + (1/#fadetab)
1618
end
1619
 
1620
for i, v in pairs(fadetab) do
1621
if v[1].Transparency < 0.9 then
1622
v[1].Transparency = v[1].Transparency + (1/#fadetab)
1623
fadetab2[i][1].Transparency = fadetab2[i][1].Transparency + (1/#fadetab)
1624
elseif v[1].Transparency ~= 1 then
1625
v[1].Transparency = 1
1626
v[1].Position = Vector3.new(50000,0,0)
1627
fadetab2[i][1].Transparency = 1
1628
fadetab2[i][1].Position = Vector3.new(50000,0,0)
1629
end
1630
end
1631
 
1632
prevrapos = (RA.CFrame * CFrame.new(0,-1,0)).p
1633
prevlapos = (LA.CFrame * CFrame.new(0,-1,0)).p
1634
end
1635
 
1636
if flow.Value > 140 then
1637
if char.Parent ~= nil then
1638
char:remove()
1639
end
1640
end
1641
 
1642
if flowcooldown > 0 then
1643
flowcooldown = flowcooldown - 1
1644
end
1645
if HWRCooldown > 0 then
1646
HWRCooldown = HWRCooldown - 1
1647
end
1648
if VWRCooldown > 0 then
1649
if hitz ~= nil and VWRCooldown > 0 then
1650
VWRCooldown = VWRCooldown - 1
1651
end
1652
end
1653
if SlideCooldown > 0 then
1654
SlideCooldown = SlideCooldown - 1
1655
end
1656
 
1657
if Action == "HWallRunning" or Action == "VWallRunning" then
1658
flow.Value = flow.Value + 0.24
1659
if flow.Value > 100 then
1660
flow.Value = 100
1661
end
1662
flowcooldown = 40
1663
elseif Action == "Diving" then
1664
flowcooldown = 30
1665
elseif Action == "Sliding" then
1666
flowcooldown = 15
1667
elseif Action == "Standing" or Action == "Sitting" then
1668
if flow.Value > 0 and flowcooldown <= 0 then
1669
flow.Value = flow.Value - 0.37
1670
if flow.Value < 0 then
1671
flow.Value = 0
1672
end
1673
end
1674
end
1675
 
1676
cam.FieldOfView = FOV
1677
prevanimbgcount = animatebgcount
1678
sprint = defsprint + ((flow.Value/100)*2.4)
1679
PrevGravAction = GravAction
1680
Calculate()
1681
end)