View difference between Paste ID: sqgdp4yK and PtFhzaB8
SHOW: | | - or go back to the newest paste.
1
--By Rufus14
2
--owner = game:GetService("Players"):GetPlayerFromCharacter(script.Parent)
3
character = owner.Character
4
NLS([[
5
--By Rufus14
6
owner = game:GetService("Players").LocalPlayer
7
local ownerhead = owner.Character:WaitForChild("Head")
8
parkietremote = owner.Character:WaitForChild("parkietremote")
9
mouse = owner:GetMouse()
10
local part = Instance.new("Part", owner.Character.Head)
11
part.Size = Vector3.new(0.1,0.1,0.1)
12
part.Transparency = 1
13
part.CanCollide = false
14
part.Name = "camera"
15
part:BreakJoints()
16
local weld = Instance.new("Weld", part)
17
weld.Part0 = owner.Character.Head
18
weld.Part1 = part
19
weld.C0 = CFrame.new(0,0,-1)
20
cananimate = true
21
walkpressed = 0
22
humanoid = owner.Character:findFirstChildOfClass("Humanoid")
23
rootpart = owner.Character.HumanoidRootPart
24
runservice = game:GetService("RunService")
25
--
26
canmovecamera = true
27
wrunning = false
28
wrunningl = false
29
local Change = 1
30
owner.Character.ChildAdded:connect(function(whatadded)
31
	if whatadded.Name == "slide" then
32
		canmovecamera = false
33
		for i = 1,60 do
34
			workspace.CurrentCamera.CFrame = workspace.CurrentCamera.CFrame * CFrame.fromEulerAnglesXYZ(math.rad(math.sin(tick()*45)/(i/6)),0,0)
35
			runservice.RenderStepped:wait()
36
		end
37
	elseif whatadded.Name == "vwallrun" then
38
		canmovecamera = false
39
		for i = 1,20 do
40
			workspace.CurrentCamera.CFrame = workspace.CurrentCamera.CFrame * CFrame.fromEulerAnglesXYZ(math.rad(2),0,0)
41
			runservice.RenderStepped:wait()
42
		end
43
	elseif whatadded.Name == "hwallrunright" then
44
		wrunning = true
45
		canmovecamera = false
46
		coroutine.wrap(function()
47
			while wrunning and runservice.RenderStepped:wait() do
48
				workspace.CurrentCamera.CFrame = workspace.CurrentCamera.CFrame:lerp(workspace.CurrentCamera.CFrame * CFrame.fromEulerAnglesXYZ(0,0,math.rad(30)),0.2) 
49
			end
50
		end)()
51
	elseif whatadded.Name == "hwallrunleft" then
52
		wrunningl = true
53
		canmovecamera = false
54
		coroutine.wrap(function()
55
			while wrunningl and runservice.RenderStepped:wait() do
56
				workspace.CurrentCamera.CFrame = workspace.CurrentCamera.CFrame:lerp(workspace.CurrentCamera.CFrame * CFrame.fromEulerAnglesXYZ(0,0,math.rad(-30)),0.2) 
57
			end
58
		end)()
59
	elseif whatadded.Name == "FALLING" then
60
		local screengui = Instance.new("ScreenGui", owner:findFirstChildOfClass("PlayerGui"))
61
		screengui.ResetOnSpawn = true
62
		screengui.Name = "ohgodohfuck"
63
		local vel = Instance.new("BodyVelocity", rootpart)
64
		vel.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
65
		vel.Velocity = Vector3.new(0,-135,0)
66
		local frame = Instance.new("ImageLabel", screengui)
67
		frame.BackgroundTransparency = 1
68
		frame.ImageTransparency = 1
69
		frame.ImageColor3 = Color3.fromRGB(0,0,0)
70
		frame.Image = "http://www.roblox.com/asset/?id=22606915"
71
		frame.Size = UDim2.new(1,0,1,0)
72
		for i = 1,20 do
73
			frame.ImageTransparency = frame.ImageTransparency - 0.05
74
			runservice.Stepped:wait()
75
		end
76
		coroutine.wrap(function()
77
			while rootpart.Velocity.y < -10 do runservice.RenderStepped:wait() end
78
			screengui:destroy()
79
			vel:destroy()
80
			owner.Character:BreakJoints()
81
		end)()
82
	end
83
end)
84
owner.Character.ChildRemoved:connect(function(whatremoved)
85
	if whatremoved.Name == "slide" then
86
		canmovecamera = true
87
	elseif whatremoved.Name == "vwallrun" then
88
		for i = 1,20 do
89
			workspace.CurrentCamera.CFrame = workspace.CurrentCamera.CFrame * CFrame.fromEulerAnglesXYZ(math.rad(-2),0,0)
90
			runservice.RenderStepped:wait()
91
		end
92
		canmovecamera = true
93
	elseif whatremoved.Name == "hwallrunright" then
94
		canmovecamera = true
95
		wrunning = false
96
	elseif whatremoved.Name == "hwallrunleft" then
97
		canmovecamera = true
98
		wrunningl = false
99
	end
100
end)
101
--
102
mouse.KeyDown:connect(function(key)
103
	key = key:lower()
104
	if key == "w" or key == "a" or key == "s" or key == "d" then
105
		walkpressed = walkpressed + 1
106
	end
107
	if key == "r" then
108
		parkietremote:FireServer(rootpart.CFrame, "triggerroll")
109
	end
110
	if key == "e" then
111
		parkietremote:FireServer(rootpart.CFrame, "slide")
112
	end
113
end)
114
mouse.KeyUp:connect(function(key)
115
	key = key:lower()
116
	if key == "w" or key == "a" or key == "s" or key == "d" then
117
		walkpressed = walkpressed - 1
118
	end
119
	if key == "r" then
120
		parkietremote:FireServer(rootpart.CFrame, "triggerroll")
121
	end
122
end)
123
--
124
humanoid.Died:connect(function()
125
	local correction =  Instance.new("ColorCorrectionEffect", workspace.CurrentCamera)
126
	local deathsound = Instance.new("Sound", owner:findFirstChildOfClass("PlayerGui"))
127
	deathsound.SoundId = "rbxassetid://1038809455"
128
	deathsound.Volume = 10
129
	deathsound:Play()
130
	game.Debris:AddItem(deathsound, deathsound.TimeLength)
131
	game.Debris:AddItem(correction, game:GetService("Players").RespawnTime)
132
	for i = 1,5 do
133
		correction.Brightness = correction.Brightness + 0.2
134
		runservice.RenderStepped:wait()
135
	end
136
	while runservice.RenderStepped:wait() do
137
		workspace.CurrentCamera.CFrame = CFrame.new(0,9999999,0)
138
	end
139
end)
140
--
141
while game:GetService("RunService").RenderStepped:wait() do
142
	----
143
	local vwallray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.lookVector * 2)
144
	local vwallhit, vwallpos, vwallsurface = workspace:FindPartOnRayWithIgnoreList(vwallray, {owner.Character})
145
	if vwallhit and humanoid.Jump and rootpart.Velocity.y > -30 then
146
		if not vwallhit.Parent:findFirstChildOfClass("Humanoid") then
147
			parkietremote:FireServer(rootpart.CFrame, "vwallrun", vwallhit, vwallpos, vwallsurface)
148
		end
149
	end
150
	---
151
	local hwallray = Ray.new(rootpart.CFrame.p, (rootpart.CFrame.rightVector * 3.5) + (rootpart.CFrame.lookVector * -0.3))
152
	local hwallhit, hwallpos, surface = workspace:FindPartOnRayWithIgnoreList(hwallray, {owner.Character})
153
	if hwallhit and humanoid.Jump and rootpart.Velocity.y > -20 then
154
		if not hwallhit.Parent:findFirstChildOfClass("Humanoid") then
155
			parkietremote:FireServer(rootpart.CFrame, "hwallrunright", hwallhit, hwallpos, surface)
156
		end
157
	end
158
	--
159
	local hwallrayl = Ray.new(rootpart.CFrame.p, rootpart.CFrame.rightVector * -3.5 + (rootpart.CFrame.lookVector * -0.3))
160
	local hwallhitl, hwallposl, surfacel = workspace:FindPartOnRayWithIgnoreList(hwallrayl, {owner.Character})
161
	if hwallhitl and humanoid.Jump and rootpart.Velocity.y > -20 then
162
		if not hwallhitl.Parent:findFirstChildOfClass("Humanoid") then
163
			parkietremote:FireServer(rootpart.CFrame, "hwallrunleft", hwallhitl, hwallposl, surfacel)
164
		end
165
	end
166
	---
167
	local poleray = Ray.new(ownerhead.CFrame.p, ownerhead.CFrame.lookVector * 3.5)
168
	local polerayhit, poleraypos, poleraysurface = workspace:FindPartOnRayWithIgnoreList(poleray, {owner.Character})
169
	if polerayhit and rootpart.Velocity.y > -60 then
170
		if not polerayhit.Parent:findFirstChildOfClass("Humanoid") then
171
			parkietremote:FireServer(rootpart.CFrame, "polegrab", polerayhit, poleraypos, poleraysurface)
172
		end
173
	end
174
	--
175
	local poleray = Ray.new(ownerhead.CFrame.p, (ownerhead.CFrame.lookVector * 3.5) + (ownerhead.CFrame.upVector * -0.5))
176
	local polerayhit, poleraypos, poleraysurface = workspace:FindPartOnRayWithIgnoreList(poleray, {owner.Character})
177
	if polerayhit and rootpart.Velocity.y > -60 then
178
		if not polerayhit.Parent:findFirstChildOfClass("Humanoid") then
179
			parkietremote:FireServer(rootpart.CFrame, "polegrab", polerayhit, poleraypos, poleraysurface)
180
		end
181
	end
182
	--
183
	local poleray = Ray.new(ownerhead.CFrame.p, (ownerhead.CFrame.lookVector * 3.5) + (ownerhead.CFrame.upVector * 0.5))
184
	local polerayhit, poleraypos, poleraysurface = workspace:FindPartOnRayWithIgnoreList(poleray, {owner.Character})
185
	if polerayhit and rootpart.Velocity.y > -60 then
186
		if not polerayhit.Parent:findFirstChildOfClass("Humanoid") then
187
			parkietremote:FireServer(rootpart.CFrame, "polegrab", polerayhit, poleraypos, poleraysurface)
188
		end
189
	end
190
	----
191
	if walkpressed > 0 and humanoid.WalkSpeed < 23 and not owner.Character:findFirstChild("ouchfell") then
192
		humanoid.WalkSpeed = humanoid.WalkSpeed + 1.2
193
	elseif walkpressed == 0 and humanoid.WalkSpeed > 0 and not owner.Character:findFirstChild("ouchfell") then
194
		humanoid.WalkSpeed = humanoid.WalkSpeed - 1.2
195
	end
196
	if (workspace.CurrentCamera.CFrame.p - part.Position).magnitude <= 1.7 then
197
		if canmovecamera and not owner.Character:findFirstChild("ouchfell") and not owner.Character:findFirstChild("rollin") and not owner.Character:findFirstChild("pole") then
198
			game:GetService("Players").LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(game:GetService("Players").LocalPlayer.Character.HumanoidRootPart.Position,Vector3.new(mouse.Hit.p.x,game:GetService("Players").LocalPlayer.Character.HumanoidRootPart.Position.y,mouse.Hit.p.z))
199
		end
200
		if owner.Character:findFirstChild("ouchfell") then
201
			workspace.CurrentCamera.CFrame = owner.Character.Head.CFrame * CFrame.new(0,0,-0.4)
202
		end
203
		if owner.Character:findFirstChild("rollin") then
204
			workspace.CurrentCamera.CFrame = owner.Character.Head.CFrame * CFrame.new(0,0,-0.2)
205
		end
206
		if owner.Character:findFirstChild("FALLING") then
207
			canmovecamera = false
208
			workspace.CurrentCamera.CFrame = owner.Character.Head.CFrame * CFrame.new(0,0,-0.4) * CFrame.fromEulerAnglesXYZ(math.rad(math.sin(tick()*45))*6,0,0)
209
		end
210
		workspace.CurrentCamera.FieldOfView = 120
211
		for i,v in pairs(owner.Character:GetChildren()) do
212
			if v.ClassName == "Part" or v.ClassName == "MeshPart" and v.Name ~= "Head" then
213
				v.LocalTransparencyModifier = 0
214
			end
215
			if v.ClassName == "Accessory" then
216
				v.Handle.Transparency = 1
217
	        end
218
		end
219
		if owner.Character.Head:findFirstChildOfClass("Decal") then
220
		    owner.Character.Head:findFirstChildOfClass("Decal").Transparency = 1
221
		end
222
		owner.Character.Head.Transparency = 1
223
		workspace.CurrentCamera.CameraSubject = part
224
	else
225
		for i,v in pairs(owner.Character:GetChildren()) do
226
			if v.ClassName == "Accessory" then
227
				v.Handle.Transparency = 0
228
	        end
229
		end
230
		workspace.CurrentCamera.FieldOfView = 70
231
		owner.Character.Head.Transparency = 0
232
		if owner.Character.Head:findFirstChildOfClass("Decal") then
233
		    owner.Character.Head:findFirstChildOfClass("Decal").Transparency = 0
234
		end
235
		workspace.CurrentCamera.CameraSubject = owner.Character
236
	end
237
end
238
]], character)
239
local ownerhead = character:WaitForChild("Head")
240
mouse = owner:GetMouse()
241
anim = "idle"
242
cananimate = true
243
humanoid = character:findFirstChildOfClass("Humanoid")
244
rootpart = character.HumanoidRootPart
245
runservice = game:GetService("RunService")
246
local rightarm = Instance.new("Weld", owner.Character.Torso)
247
rightarm.Part0 = owner.Character.Torso
248
rightarm.Part1 = owner.Character["Right Arm"]
249
rightarm.C0 = CFrame.new(1.5,0,0)
250
rightarm.Name = "RightArmWeld"
251
local rightleg = Instance.new("Weld", owner.Character.Torso)
252
rightleg.Part0 = owner.Character.Torso
253
rightleg.Part1 = owner.Character["Right Leg"]
254
rightleg.C0 = CFrame.new(0.5,-2,0)
255
rightleg.Name = "RightLegWeld"
256
local leftarm = Instance.new("Weld", owner.Character.Torso)
257
leftarm.Part0 = owner.Character.Torso
258
leftarm.Part1 = owner.Character["Left Arm"]
259
leftarm.C0 = CFrame.new(-1.5,0,0)
260
leftarm.Name = "LeftArmWeld"
261
local leftleg = Instance.new("Weld", owner.Character.Torso)
262
leftleg.Part0 = owner.Character.Torso
263
leftleg.Part1 = owner.Character["Left Leg"]
264
leftleg.C0 = CFrame.new(-0.5,-2,0)
265
leftleg.Name = "LeftLegWeld"
266
local head = Instance.new("Weld", owner.Character.Torso)
267
head.Part0 = owner.Character.Torso
268
head.Part1 = owner.Character.Head
269
head.C0 = CFrame.new(0,1.5,0)
270
head.Name = "HeadWeld"
271
local humanoidrootpart = Instance.new("Weld", owner.Character.HumanoidRootPart)
272
humanoidrootpart.Part0 = owner.Character.HumanoidRootPart
273
humanoidrootpart.Part1 = owner.Character.Torso
274
humanoidrootpart.Name = "HumanoidRootPartWeld"
275
local music = Instance.new("Sound", owner.Character.Head)
276
music.Looped = true
277
local musicrandom = math.random(1,5)
278
if musicrandom == 1 then
279
	music.SoundId = "rbxassetid://4502246491"
280
	music.Volume = 2
281
elseif musicrandom == 2 then
282
	music.SoundId = "rbxassetid://469593664"
283
	music.Volume = 2
284
elseif musicrandom == 3 then
285
	music.SoundId = "rbxassetid://477207390"
286
	music.Volume = 2
287
elseif musicrandom == 4 then
288
	music.SoundId = "rbxassetid://147811295"
289
	music.Volume = 2
290
elseif musicrandom == 5 then
291
	music.SoundId = "rbxassetid://4519453403"
292
	music.Volume = 1
293
end
294
music:Play()
295
local runsound = Instance.new("Sound", owner.Character.Head)
296
runsound.SoundId = "rbxassetid://3084278209"
297
runsound.Looped = true
298
runsound:Play()
299
runsound.PlaybackSpeed = 1.4
300
local bodyhitsound = Instance.new("Sound", owner.Character.Head)
301
bodyhitsound.SoundId = "rbxassetid://261338552"
302
bodyhitsound.Volume = 0.5
303
local fallingsound = Instance.new("Sound", owner.Character.Head)
304
fallingsound.SoundId = "rbxassetid://866649671"
305
fallingsound.Volume = 0
306
fallingsound.Looped = true
307
fallingsound:Play()
308
local parkietremote = Instance.new("RemoteEvent", character)
309
parkietremote.Name = "parkietremote"
310
cando = true
311
roll = false
312
fallingtodeath = false
313
grabbedpole = false
314
parkietremote.OnServerEvent:connect(function(plr, rootpos, what, rayehit, rayepos, rayesurface)
315
	if plr == owner and not fallingtodeath and cando then
316
		character.HumanoidRootPart.CanCollide = false
317
		if what == "slide" then
318
			cananimate = false
319
			cando = false
320
			local action = Instance.new("BoolValue", character)
321
			action.Name = "slide"
322
			local velo = Instance.new("BodyVelocity", rootpart)
323
			velo.MaxForce = Vector3.new(math.huge,0,math.huge)
324
			velo.Velocity = rootpart.CFrame.lookVector*22
325
			runsound.Volume = 0
326
			for i = 0,1 , 0.04 do
327
				rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.70441437, 0.561628342, 9.53674316e-07, 0.642787516, -0.766044259, 1.49011612e-08, 0.766044319, 0.642787576, 0, 1.17273338e-08, -1.27691155e-08, 0.99999994),i)
328
				leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.54449558, -0.470175743, -0.242582321, 0.983905256, -0.168530971, 0.0593911819, 0.178687513, 0.926305115, -0.331706733, 0.000888578361, 0.336980522, 0.941511095),i)
329
				leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.500000954, -1.64282608, -0.0428800583, 0.999999821, -1.0857935e-08, 1.23050938e-08, 0, 0.939692557, 0.342019677, 1.49011612e-08, -0.342019677, 0.939692557),i)
330
				rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5, -2, 0, 0.999999821, 0, 1.49011612e-08, 0, 0.99999994, 0, 1.49011612e-08, 0, 0.99999994),i)
331
				humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(-0.416755676, -2.3635385, 0, 0.98480767, 0, -0.173648164, -0.173648179, -4.37113883e-08, -0.98480773, -7.59040297e-09, 1, -4.30473115e-08),i)
332
				head.C0 = head.C0:lerp(CFrame.new(-9.53674316e-07, 1.15137196, -0.85847187, 0.999999821, -4.60215439e-08, -1.65799918e-07, 1.71363354e-07, 0.173648059, 0.98480767, 2.98023153e-08, -0.984807611, 0.173648059),i)
333
				runservice.Stepped:wait()
334
			end
335
			local funnysine = 0
336
			for i = 1,60 do
337
				local ray = Ray.new(character.Torso.Position, character.Torso.CFrame.upVector*-5.5)
338
				local hit, positionn = workspace:FindPartOnRayWithIgnoreList(ray, {character})
339
				if hit then
340
					break
341
				end
342
				velo.Velocity = velo.Velocity/1.01
343
				runservice.Stepped:wait()
344
			end
345
			velo:destroy()
346
			action:destroy()
347
			cananimate = true
348
			cando = true
349
		elseif what == "vwallrun" then
350
			local polereally = false
351
			if rayehit.Size.y <= 1 then
352
				if rayehit.Size.z > rayehit.Size.x and rayehit.Size.x <= 1 then
353
					--print("pole z > x BAD")
354
					polereally = true
355
				elseif rayehit.Size.x > rayehit.Size.z and rayehit.Size.z <= 1 then
356
					--print("pole x > z BAD")
357
					polereally = true
358
				end
359
			end
360
			if not polereally then
361
				cananimate = false
362
				cando = false
363
				humanoid.AutoRotate = false
364
				local action = Instance.new("BoolValue", character)
365
				action.Name = "vwallrun"
366
				character.HumanoidRootPart.CFrame = rootpos
367
				local goupvel = Instance.new("BodyVelocity", rootpart)
368
				goupvel.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
369
				goupvel.Velocity = Vector3.new(0,20,0)
370
				local gotin = false
371
				for i = 1,70 do
372
					local headray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.upVector * 3.5)
373
					local headrayhit, headraypos = workspace:FindPartOnRayWithIgnoreList(headray, {owner.Character})
374
					if headrayhit then
375
						gotin = false
376
						break
377
					end
378
					local headraywall = Ray.new(ownerhead.CFrame.p, ownerhead.CFrame.lookVector * 3)
379
					local headraywallhit, headraywallpos = workspace:FindPartOnRayWithIgnoreList(headraywall, {owner.Character})
380
					if not headraywallhit then
381
						gotin = true
382
						break
383
					end
384
					goupvel.Velocity = goupvel.Velocity/1.025
385
					humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(),0.3)
386
					head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.Angles(math.rad(30),0,0) * CFrame.new(0,0.5,0),0.3)
387
					leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.Angles(math.pi/2+math.sin(i/5),0,math.cos(i/5)/3) * CFrame.new(0,-0.5,0),0.3)
388
					rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.Angles(math.pi/2-math.sin(i/5),0,-math.cos(i/5)/3) * CFrame.new(0,-0.5,0),0.3)
389
					leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1-math.cos(i/5)/2,0) * CFrame.Angles(-math.sin(i/5),0,0) * CFrame.new(0,-1,0),0.3)
390
					rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1+math.cos(i/5)/2,0) * CFrame.Angles(math.sin(i/5),0,0) * CFrame.new(0,-1,0),0.3)
391
					runservice.Stepped:wait()
392
				end
393
				action:destroy()
394
				if gotin then
395
					rootpart.Anchored = true
396
					for i = 1,30 do
397
						rootpart.CFrame = rootpart.CFrame * CFrame.new(0,0.15,-math.sin(i/14)/9)
398
						humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.fromEulerAnglesXYZ(math.rad(-20),0,0),0.3)
399
						head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.Angles(math.rad(20),0,0) * CFrame.new(0,0.5,0),0.3)
400
						leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.Angles(math.rad(60)+math.cos(i/7)*1.5,0,0) * CFrame.new(0,-0.5,0),0.3)
401
						rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.Angles(math.rad(60)+math.cos(i/7)*1.5,0,0) * CFrame.new(0,-0.5,0),0.3)
402
						leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1,0) * CFrame.Angles(0,0,0) * CFrame.new(0,-1,0),0.3)
403
						rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-0.25+math.cos(i/7)/1.2,-0.5) * CFrame.Angles(0,0,0) * CFrame.new(0,-1,0),0.3)
404
						runservice.Stepped:wait()
405
					end
406
				end
407
				humanoid.AutoRotate = true
408
				rootpart.Anchored = false
409
				goupvel:destroy()
410
				cananimate = true
411
				cando = true
412
			end
413
		elseif what == "hwallrunright" and anim == "jumprun" or anim == "fallrun" and rayepos ~= nil then
414
			cananimate = false
415
			cando = false
416
			humanoid.AutoRotate = false
417
			local action = Instance.new("BoolValue", character)
418
			action.Name = "hwallrunright"
419
			rootpart.CFrame = CFrame.new(rayepos, rayepos + rayesurface) * CFrame.fromEulerAnglesXYZ(0,-math.pi/2,0)
420
			rootpart.CFrame = rootpart.CFrame * CFrame.new(-1.8,0,0)
421
			if rootpart:findFirstChild("wallrunvel") then
422
				rootpart:findFirstChild("wallrunvel"):destroy()
423
			end
424
			local goupvel = Instance.new("BodyVelocity", rootpart)
425
			goupvel.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
426
			goupvel.Velocity = rootpart.CFrame.lookVector * 20
427
			goupvel.Name = "wallrunvel"
428
			runsound.PlaybackSpeed = 1.7
429
			runsound.Volume = 1.5
430
			local jumped = false
431
			local shouldcontinue = true
432
			local candothat = true
433
			for i = 1,20 do
434
				local rootrightray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.rightVector * 2.5)
435
				local wallrighthit, rootrightraypos = workspace:FindPartOnRayWithIgnoreList(rootrightray, {owner.Character})
436
				if not wallrighthit then
437
					shouldcontinue = false
438
					break
439
				end
440
				local rootfrontray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.lookVector * 4)
441
				local rootfrontrayhit, rootfrontraypos = workspace:FindPartOnRayWithIgnoreList(rootfrontray, {owner.Character})
442
				if rootfrontrayhit then
443
					shouldcontinue = false
444
					break
445
				end
446
				humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.fromEulerAnglesXYZ(0,0,math.rad(30)),0.3)
447
				head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.Angles(0,0,0) * CFrame.new(0,0.5,0),0.3)
448
				leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.Angles(-math.sin(tick()*14)*1.3,0,math.rad(-15)) * CFrame.new(0,-0.5,0),0.3)
449
				rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.Angles(0,0,math.pi/1.5) * CFrame.new(0,-0.5,0),0.3)
450
				leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1+math.cos(tick()*14)/2,-math.cos(tick()*14)/2) * CFrame.fromEulerAnglesXYZ(math.sin(tick()*14),0,0) * CFrame.new(0,-1,0),0.2)
451
				rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1-math.cos(tick()*14)/2,math.cos(tick()*14)/2) * CFrame.fromEulerAnglesXYZ(-math.sin(tick()*14),0,0) * CFrame.new(0,-1,0),0.2)
452
				runservice.Stepped:wait()
453
			end
454
			for i = 1,60 do
455
				if candothat then
456
					if not shouldcontinue then
457
						break
458
					end
459
					if humanoid.Jump then
460
						jumped = true
461
						break
462
					end
463
					local rootrightray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.rightVector * 2.5)
464
					local wallrighthit, rootrightraypos = workspace:FindPartOnRayWithIgnoreList(rootrightray, {owner.Character})
465
					if not wallrighthit then
466
						break
467
					end
468
					local rootfrontray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.lookVector * 4)
469
					local rootfrontrayhit, rootfrontraypos = workspace:FindPartOnRayWithIgnoreList(rootfrontray, {owner.Character})
470
					if rootfrontrayhit then
471
						break
472
					end
473
					humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.fromEulerAnglesXYZ(0,0,math.rad(30)),0.3)
474
					head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.Angles(0,0,0) * CFrame.new(0,0.5,0),0.3)
475
					leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.Angles(-math.sin(tick()*14)*1.3,0,math.rad(-15)) * CFrame.new(0,-0.5,0),0.3)
476
					rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.Angles(0,0,math.pi/1.5) * CFrame.new(0,-0.5,0),0.3)
477
					leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1+math.cos(tick()*14)/2,-math.cos(tick()*14)/2) * CFrame.fromEulerAnglesXYZ(math.sin(tick()*14),0,0) * CFrame.new(0,-1,0),0.2)
478
					rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1-math.cos(tick()*14)/2,math.cos(tick()*14)/2) * CFrame.fromEulerAnglesXYZ(-math.sin(tick()*14),0,0) * CFrame.new(0,-1,0),0.2)
479
					runservice.Stepped:wait()
480
				end
481
			end
482
			action:destroy()
483
			candothat = false
484
			if jumped then
485
				goupvel.Velocity = goupvel.Velocity + (rootpart.CFrame.rightVector*-20) + Vector3.new(0,5,0)
486
				game.Debris:AddItem(goupvel, 0.25)
487
				for i = 0,0.6 ,0.03 do
488
					if not cananimate then
489
						head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.fromEulerAnglesXYZ(math.rad(10),math.rad(-5),0) * CFrame.new(0,0.5,0),i)
490
						leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1,0) * CFrame.fromEulerAnglesXYZ(-math.rad(40),0,math.rad(-2)) * CFrame.new(0,-1,0),i)
491
						rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1,0) * CFrame.fromEulerAnglesXYZ(math.rad(40),0,math.rad(2)) * CFrame.new(0,-1,0),i)
492
						humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.fromEulerAnglesXYZ(math.rad(-10),0,math.rad(10)),i)
493
						leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,-0.5) * CFrame.fromEulerAnglesXYZ(math.pi/2+math.rad(20),0,0) * CFrame.new(0,-0.5,0),i)
494
						rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(-math.pi/3,0,0) * CFrame.new(0,-0.5,0),i)
495
						runservice.Stepped:wait()
496
					end
497
				end
498
			else
499
				goupvel:destroy()
500
			end
501
			humanoid.AutoRotate = true
502
			cananimate = true
503
			cando = true
504
		elseif what == "hwallrunleft" and anim == "jumprun" or anim == "fallrun" and rayepos ~= nil then
505
			cananimate = false
506
			cando = false
507
			humanoid.AutoRotate = false
508
			local action = Instance.new("BoolValue", character)
509
			action.Name = "hwallrunleft"
510
			rootpart.CFrame = CFrame.new(rayepos, rayepos + rayesurface) * CFrame.fromEulerAnglesXYZ(0,math.pi/2,0)
511
			rootpart.CFrame = rootpart.CFrame * CFrame.new(1.8,0,0)
512
			if rootpart:findFirstChild("wallrunvel") then
513
				rootpart:findFirstChild("wallrunvel"):destroy()
514
			end
515
			local goupvel = Instance.new("BodyVelocity", rootpart)
516
			goupvel.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
517
			goupvel.Velocity = rootpart.CFrame.lookVector * 20
518
			goupvel.Name = "wallrunvel"
519
			runsound.PlaybackSpeed = 1.7
520
			runsound.Volume = 1.5
521
			local jumped = false
522
			local shouldcontinue = true
523
			local candothat = true
524
			for i = 1,20 do
525
				local rootrightray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.rightVector * -2.5)
526
				local wallrighthit, rootrightraypos = workspace:FindPartOnRayWithIgnoreList(rootrightray, {owner.Character})
527
				if not wallrighthit then
528
					shouldcontinue = false
529
					break
530
				end
531
				local rootfrontray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.lookVector * 4)
532
				local rootfrontrayhit, rootfrontraypos = workspace:FindPartOnRayWithIgnoreList(rootfrontray, {owner.Character})
533
				if rootfrontrayhit then
534
					shouldcontinue = false
535
					break
536
				end
537
				humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.fromEulerAnglesXYZ(0,0,math.rad(-30)),0.3)
538
				head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.Angles(0,0,0) * CFrame.new(0,0.5,0),0.3)
539
				leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.Angles(0,0,-math.pi/1.5) * CFrame.new(0,-0.5,0),0.3)
540
				rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.Angles(-math.sin(tick()*14)*1.3,0,math.rad(15)) * CFrame.new(0,-0.5,0),0.3)
541
				leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1+math.cos(tick()*14)/2,-math.cos(tick()*14)/2) * CFrame.fromEulerAnglesXYZ(math.sin(tick()*14),0,0) * CFrame.new(0,-1,0),0.2)
542
				rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1-math.cos(tick()*14)/2,math.cos(tick()*14)/2) * CFrame.fromEulerAnglesXYZ(-math.sin(tick()*14),0,0) * CFrame.new(0,-1,0),0.2)
543
				runservice.Stepped:wait()
544
			end
545
			for i = 1,60 do
546
				if candothat then
547
					if not shouldcontinue then
548
						break
549
					end
550
					if humanoid.Jump then
551
						jumped = true
552
						break
553
					end
554
					local rootrightray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.rightVector * -2.5)
555
					local wallrighthit, rootrightraypos = workspace:FindPartOnRayWithIgnoreList(rootrightray, {owner.Character})
556
					if not wallrighthit then
557
						break
558
					end
559
					local rootfrontray = Ray.new(rootpart.CFrame.p, rootpart.CFrame.lookVector * 4)
560
					local rootfrontrayhit, rootfrontraypos = workspace:FindPartOnRayWithIgnoreList(rootfrontray, {owner.Character})
561
					if rootfrontrayhit then
562
						break
563
					end
564
					humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.fromEulerAnglesXYZ(0,0,math.rad(-30)),0.3)
565
					head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.Angles(0,0,0) * CFrame.new(0,0.5,0),0.3)
566
					leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.Angles(0,0,-math.pi/1.5) * CFrame.new(0,-0.5,0),0.3)
567
					rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.Angles(-math.sin(tick()*14)*1.3,0,math.rad(15)) * CFrame.new(0,-0.5,0),0.3)
568
					leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1+math.cos(tick()*14)/2,-math.cos(tick()*14)/2) * CFrame.fromEulerAnglesXYZ(math.sin(tick()*14),0,0) * CFrame.new(0,-1,0),0.2)
569
					rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1-math.cos(tick()*14)/2,math.cos(tick()*14)/2) * CFrame.fromEulerAnglesXYZ(-math.sin(tick()*14),0,0) * CFrame.new(0,-1,0),0.2)
570
					runservice.Stepped:wait()
571
				end
572
			end
573
			action:destroy()
574
			candothat = false
575
			if jumped then
576
				goupvel.Velocity = goupvel.Velocity + (rootpart.CFrame.rightVector*20) + Vector3.new(0,5,0)
577
				game.Debris:AddItem(goupvel, 0.25)
578
				for i = 0,0.6 ,0.03 do
579
					if not cananimate then
580
						head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.fromEulerAnglesXYZ(math.rad(10),math.rad(-5),0) * CFrame.new(0,0.5,0),i)
581
						leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1,0) * CFrame.fromEulerAnglesXYZ(-math.rad(40),0,math.rad(-2)) * CFrame.new(0,-1,0),i)
582
						rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1,0) * CFrame.fromEulerAnglesXYZ(math.rad(40),0,math.rad(2)) * CFrame.new(0,-1,0),i)
583
						humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.fromEulerAnglesXYZ(math.rad(-10),0,math.rad(-10)),i)
584
						leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,-0.5) * CFrame.fromEulerAnglesXYZ(-math.pi/3,0,0) * CFrame.new(0,-0.5,0),i)
585
						rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(math.pi/2+math.rad(20),0,0) * CFrame.new(0,-0.5,0),i)
586
						runservice.Stepped:wait()
587
					end
588
				end
589
			else
590
				goupvel:destroy()
591
			end
592
			humanoid.AutoRotate = true
593
			cananimate = true
594
			cando = true
595
		elseif what == "triggerroll" then
596
			if roll then
597
				roll = false
598
			elseif not roll then
599
				roll = true
600
			end
601
		elseif what == "polegrab" then
602
			local polereally = false
603
			if rayehit.Size.y <= 1 then
604
				if rayehit.Size.z > rayehit.Size.x and rayehit.Size.x <= 1 then
605
					--print("pole z > x")
606
					polereally = true
607
				elseif rayehit.Size.x > rayehit.Size.z and rayehit.Size.z <= 1 then
608
					--print("pole x > z")
609
					polereally = true
610
				end
611
			end
612
			if polereally then
613
				cando = false
614
				cananimate = false
615
				humanoid.AutoRotate = false
616
				rootpart.Anchored = true
617
				grabbedpole = true
618
				local action = Instance.new("BoolValue", character)
619
				action.Name = "pole"
620
				local thesine = 0
621
				local speed = 3
622
				local sineadd = 0.2
623
				local multiply = 1.2
624
				coroutine.wrap(function()
625
					while grabbedpole and runservice.Stepped:wait() do
626
						thesine = thesine + sineadd
627
						head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.Angles(-math.sin(thesine/speed)*(multiply/1.5),0,0) * CFrame.new(0,0.5,0),0.3)
628
						leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.Angles(math.pi,0,0) * CFrame.new(0,-0.8,0),0.3)
629
						rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.Angles(math.pi,0,0) * CFrame.new(0,-0.8,0),0.3)
630
						leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1,0) * CFrame.Angles(math.sin(thesine/speed)*multiply,0,0) * CFrame.new(0,-1,0),0.3)
631
						rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1,0) * CFrame.Angles(math.sin(thesine/speed)*multiply,0,0) * CFrame.new(0,-1,0),0.3)
632
						rootpart.CFrame = CFrame.new(rayepos, rayepos + rayesurface) * CFrame.fromEulerAnglesXYZ(-math.sin(thesine/speed)*multiply,math.pi,0) * CFrame.new(0,-2.5,0)
633
						if humanoid.Jump and math.sin(thesine/speed) > 0.2 then
634
							rootpart.Anchored = false
635
							grabbedpole = false
636
							action:destroy()
637
							local v = Instance.new("BodyVelocity", rootpart)
638
							v.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
639
							v.Velocity = rootpart.CFrame.lookVector * 20
640
							game.Debris:AddItem(v, 0.5)
641
							humanoid.AutoRotate = true
642
							cananimate = true
643
							cando = true
644
							break
645
						end
646
					end
647
				end)()
648
			end
649
		end
650
	end
651
end)
652
coroutine.wrap(function()
653
	while runservice.Stepped:wait() do
654
		if rootpart.Velocity.x >= 2 or rootpart.Velocity.x <= -2 or rootpart.Velocity.z >= 2 or rootpart.Velocity.z <= -2 then
655
			if humanoid.FloorMaterial == Enum.Material.Air then
656
				if rootpart.Velocity.x >= 16 or rootpart.Velocity.x <= -16 or rootpart.Velocity.z >= 16 or rootpart.Velocity.z <= -16 then
657
					if rootpart.Velocity.y >= 3 then
658
						anim = "jumprun"
659
						--print("jumping (running)")
660
					elseif rootpart.Velocity.y <= -3 then
661
						anim = "fallrun"
662
						--("falling (running)")
663
					end
664
665
function clerp(startCF,endCF,alpha)
666
	return startCF:lerp(endCF, alpha)
667
				else
668
					if rootpart.Velocity.y >= 3 then
669
						anim = "jump"
670
						--print("jumping (walking)")
671
					elseif rootpart.Velocity.y <= -3 then
672
						anim = "fall"
673
						--print("falling (walking)")
674
					end
675
				end
676
			else
677
				if rootpart.Velocity.x >= 16 or rootpart.Velocity.x <= -16 or rootpart.Velocity.z >= 16 or rootpart.Velocity.z <= -16 then
678
					anim = "run"
679
					--print("running")
680
				else
681
					anim = "walk"
682
					--print("walking")
683
				end
684
			end
685
		elseif rootpart.Velocity.x <= 2 or rootpart.Velocity.x >= -2 or rootpart.Velocity.z <= 2 or rootpart.Velocity.z >= -2 then
686
			if humanoid.FloorMaterial == Enum.Material.Air then
687
				if rootpart.Velocity.y >= 3 then
688
					anim = "jump"
689
					--print("jumping (standing)")
690
				elseif rootpart.Velocity.y < -3 then
691
					anim = "fall"
692
					--print("falling (standing)")
693
				end
694
			else
695
				anim = "idle"
696
				--print("standing")
697
			end
698
		end
699
	end
700
end)()
701
coroutine.wrap(function()
702
	while runservice.Stepped:wait() do
703
		if rootpart.Velocity.y < -90 then
704
			while rootpart.Velocity.y < 0 and rootpart.Velocity.y >= -135 and runservice.Stepped:wait() do
705
				--print("falling")
706
			end
707
			if rootpart.Velocity.y >= -135 then
708
				cananimate = false
709
				if not roll then
710
					print('hit ground')
711
					runsound.Volume = 0 
712
					bodyhitsound.TimePosition = 1
713
					bodyhitsound:Play()
714-
					humanoid.Health = humanoid.Health - math.random(30,60)
714+
715
					action.Name = "ouchfell"
716
					humanoid.WalkSpeed = 0
717
					humanoid.JumpPower = 0
718
					humanoid.Health = humanoid.Health - math.random(0,0)
719
					for i = 0,1 , 0.04 do
720
						humanoid.WalkSpeed = 0
721
						humanoid.JumpPower = 0
722
						rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.03661776, -0.287070274, -0.937994003, 1, 2.13205098e-09, 1.80749957e-08, 2.98023224e-08, 0.642787397, -0.766044438, 4.47034836e-08, 0.766044438, 0.642787457),i)
723
						leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5, 0.00759601593, -0.0868253708, 1.00000012, 4.17280432e-09, 2.23762484e-08, 3.55271368e-15, 0.98480767, -0.173648164, 2.98023224e-08, 0.173648179, 0.98480773),i)
724
						leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.188133717, -0.968682289, -0.200000763, 0.939692676, -0.342020154, 2.98023224e-08, 0.342020094, 0.939692557, -8.8817842e-16, 2.7206255e-08, -7.1326367e-09, 1),i)
725
						rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5, -2, -9.53674316e-07, 1.00000012, 3.55271368e-15, 2.98023224e-08, 3.55271368e-15, 0.99999994, -8.8817842e-16, 2.98023224e-08, -8.8817842e-16, 1),i)
726
						humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(0.138917923, -1.81215382, -0.199999809, -0.17364794, 0, 0.984807789, -0.984807849, -4.37113883e-08, -0.173647955, 4.3047315e-08, -1, 7.59039409e-09),i)
727
						head.C0 = head.C0:lerp(CFrame.new(0, 1.3184042, -0.620952606, 1.00000012, -2.15236486e-08, 7.42341655e-09, 3.55271368e-15, 0.499999791, 0.866025388, 2.98023224e-08, -0.866025388, 0.499999791),i)
728
						runservice.Stepped:wait()
729
					end
730
					wait(0.7)
731
					for i = 0,0.35 , 0.005 do
732
						humanoid.WalkSpeed = 0
733
						humanoid.JumpPower = 0
734
						rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.43661785, 0.8717556, -1.1015135, 0.99999994, -1.49011354e-08, 2.58095625e-08, 2.98023171e-08, -0.342020303, -0.939692438, 1.49011914e-08, 0.939692736, -0.342020363),i)
735
						leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5, 0.691013336, -1.08328879, 1, 1.29770106e-14, -3.44476568e-15, -1.36212808e-15, -0.173648149, -0.98480767, 2.84217094e-14, 0.984807968, -0.173648193),i)
736
						leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5, -0.697739601, -0.911438107, 0.99999994, 6.67691635e-15, 1.17806545e-14, -1.36212851e-15, 0.939692438, -0.342020303, 2.84217094e-14, 0.342020422, 0.939692795),i)
737
						rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.500000954, -1.51961517, -1.30000019, 1, 6.15348006e-15, 1.0658141e-14, -1.36212808e-15, 0.866025329, -0.49999997, 2.84217094e-14, 0.500000119, 0.866025627),i)
738
						humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(0.138917923, -0.812153816, -0.199999809, 1, 0, -1.93715096e-07, 1.93715096e-07, -4.37113883e-08, 1.00000012, -7.10542736e-15, -1, -4.37113883e-08),i)
739
						head.C0 = head.C0:lerp(CFrame.new(0, 1.56080723, -0.0747625828, 1, -3.66066168e-15, 2.96555518e-14, -1.36212808e-15, 0.98480767, 0.173648074, 2.84217094e-14, -0.173648104, 0.984807909),i)
740
						runservice.Stepped:wait()
741
					end
742
					humanoid.JumpPower = 50
743
					game.Debris:AddItem(action, 0.3)
744
					cananimate = true
745
				else
746
					local action = Instance.new("BoolValue", character)
747
					action.Name = "rollin"
748
					local rotva = 0
749
					coroutine.wrap(function()
750
						humanoidrootpart.C0 = CFrame.new(0,-1.5,0)
751
						for i = 1,35 do
752
							rootpart.CFrame = rootpart.CFrame * CFrame.new(0,0,-0.3)
753
							humanoidrootpart.C0 = humanoidrootpart.C0 * CFrame.fromEulerAnglesXYZ(math.rad(-8.5),0,0)
754
							runservice.Stepped:wait()
755
						end
756
						action:destroy()
757
						cananimate = true
758
					end)()
759
					for i = 0,1 , 0.04 do
760
						rightarm.C0 = rightarm.C0:lerp(CFrame.new(0.5, 0.41317749, -1.40775204, 1.12057243e-08, 1, 4.07854905e-09, 0.173648134, 2.0707327e-09, -0.984807491, -0.984807551, 1.17437136e-08, -0.173648149),i)
761
						leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5, 0.178607941, -0.38302207, 1, 0, 0, 0, 0.642787397, -0.766044199, 0, 0.766044259, 0.642787457),i)
762
						leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5, -0.93637085, -0.903905869, 1, 0, 0, 0, 0.642787278, 0.766044319, 0, -0.766044378, 0.642787337),i)
763
						rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5, -1.08567047, -0.913578272, 1, 0, 0, 0, 0.642787516, 0.76604408, 0, -0.76604414, 0.642787576),i)
764
						head.C0 = head.C0:lerp(CFrame.new(0, 1.30701828, -0.629077435, 1, 0, 0, 0, 0.438599855, 0.898682296, 0, -0.898682296, 0.438599855),i)
765-
				fallingtodeath = true
765+
766
					end
767
				end
768
			elseif rootpart.Velocity.y < -135 then
769
				fallingtodeath = false
770
				local action = Instance.new("BoolValue", character)
771
				action.Name = "FALLING"
772
				local i = 0
773
				while runservice.Stepped:wait() do
774
					fallingsound.Volume = fallingsound.Volume + 0.06
775
					i = i + 1
776
					humanoidrootpart.C0 = humanoidrootpart.C0 * CFrame.fromEulerAnglesXYZ(math.rad(1.5),math.rad(0.5),math.rad(1))
777
					head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.Angles(math.rad(-10),0,0) * CFrame.new(0,0.5,0),0.2)
778
					leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.Angles(math.pi/2+math.sin(i/5)*1.8,0,math.cos(i/5)/1.5) * CFrame.new(0,-0.7,0),0.2)
779
					rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.Angles(math.pi/2+math.sin(i/4.5)*1.8,0,-math.cos(i/5)/1.5) * CFrame.new(0,-0.7,0),0.2)
780
					leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1-math.cos(i/5)/2,0) * CFrame.Angles(-math.sin(i/5),0,0) * CFrame.new(0,-1,0),0.2)
781
					rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1+math.cos(i/5)/2,0) * CFrame.Angles(math.sin(i/5),0,0) * CFrame.new(0,-1,0),0.2)
782
					--print('death falling')
783
				end
784
			end
785
		end
786
	end
787
end)()
788-
			head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.fromEulerAnglesXYZ(0,math.rad(-5),0) * CFrame.new(0,0.5,0),0.2)
788+
789-
			leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1-math.cos(tick())/15,0) * CFrame.fromEulerAnglesXYZ(0,0,math.rad(-2)) * CFrame.new(0,-1,0),0.2)
789+
790-
			rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1-math.cos(tick())/15,0) * CFrame.fromEulerAnglesXYZ(0,0,math.rad(2)) * CFrame.new(0,-1,0),0.2)
790+
791-
			humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(0,math.cos(tick())/15,0) * CFrame.fromEulerAnglesXYZ(0,math.rad(5),0),0.2)
791+
792-
			leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(0,0,math.rad(-5)-math.sin(tick())/20) * CFrame.new(0,-0.5,0),0.2)
792+
			local Alpha = .1
793-
			rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(0,0,math.rad(5)+math.sin(tick())/20) * CFrame.new(0,-0.5,0),0.2)
793+
			Change = .75
794
			RJ.C0 = RJ.C0:lerp(RJC0*CF.N(0+.2*M.C(Sine/12),.2*M.C(Sine/6),0)*CF.A(M.R(-5+5*M.C(Sine/12)),0,0),Alpha)
795
			NK.C0 = NK.C0:lerp(NKC0*CF.A(M.R(-5+5*M.C(Sine/12)),0,0),Alpha)
796
			LS.C0 = LS.C0:lerp(LSC0*CF.N(.25,0,0)*CF.A(M.R(-45),0,M.R(45+5*M.C(Sine/12))),Alpha)
797
			RS.C0 = RS.C0:lerp(RSC0*CF.N(-.25,0,0)*CF.A(M.R(-45),0,M.R(-45-5*M.C(Sine/12))),Alpha)
798
			LH.C0 = LH.C0:lerp(LHC0*CF.N(0-.2*M.C(Sine/12),-.2*M.C(Sine/6),0)*CF.A(M.R(5-5*M.C(Sine/12)),M.R(10),0),Alpha)
799
			RH.C0 = RH.C0:lerp(RHC0*CF.N(0-.2*M.C(Sine/12),-.2*M.C(Sine/6),0)*CF.A(M.R(5-5*M.C(Sine/12)),M.R(-10),0),Alpha)
800
		elseif anim == "walk" then
801
			runsound.Volume = 0.4
802
			runsound.PlaybackSpeed = 1.1
803
			head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.fromEulerAnglesXYZ(0,0,0) * CFrame.new(0,0.5,0),0.2)
804
			leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1+math.cos(tick()*12)/4,-math.cos(tick()*12)/1.5) * CFrame.fromEulerAnglesXYZ(math.sin(tick()*12)*1.5,0,0) * CFrame.new(0,-1,0),0.2)
805
			rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1-math.cos(tick()*12)/4,math.cos(tick()*12)/1.5) * CFrame.fromEulerAnglesXYZ(-math.sin(tick()*12)*1.5,0,0) * CFrame.new(0,-1,0),0.2)
806
			humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(0,math.sin(tick()*24)/12,0) * CFrame.fromEulerAnglesXYZ(-math.rad(5),0,0),0.2)
807
			leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.3+math.sin(tick()*12)/3,-0.2+math.sin(tick()*12)/2) * CFrame.fromEulerAnglesXYZ(math.rad(40)-math.sin(tick()*12)*2,0,-math.sin(tick()*12)/2.5) * CFrame.new(0,-0.5,0),0.2)
808
			rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.3-math.sin(tick()*12)/3,-0.2-math.sin(tick()*12)/2) * CFrame.fromEulerAnglesXYZ(math.rad(40)+math.sin(tick()*12)*2,0,-math.sin(tick()*12)/2.5) * CFrame.new(0,-0.5,0),0.2)
809
		elseif anim == "run" then
810
			runsound.Volume = 1
811
			runsound.PlaybackSpeed = 1.4
812
			head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.fromEulerAnglesXYZ(math.rad(10),0,0) * CFrame.new(0,0.5,0),0.2)
813
			leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1+math.cos(tick()*12)/2,-math.cos(tick()*12)/1.5) * CFrame.fromEulerAnglesXYZ(math.sin(tick()*12)*1.4,0,0) * CFrame.new(0,-1,0),0.2)
814
			rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1-math.cos(tick()*12)/2,math.cos(tick()*12)/1.5) * CFrame.fromEulerAnglesXYZ(-math.sin(tick()*12)*1.4,0,0) * CFrame.new(0,-1,0),0.2)
815
			humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(0,-0.2+math.sin(tick()*24)/10,0) * CFrame.fromEulerAnglesXYZ(0,math.rad(-rootpart.Orientation.y),0) * CFrame.fromEulerAnglesXYZ(humanoid.MoveDirection.z/5,0,-humanoid.MoveDirection.x/5) * CFrame.fromEulerAnglesXYZ(0,math.rad(rootpart.Orientation.y),0) * CFrame.fromEulerAnglesXYZ(-math.rad(10),0,0),0.2)
816
			leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(math.rad(10)-math.sin(tick()*12)*1.9,0,-math.sin(tick()*12)/2.5) * CFrame.new(0,-0.7,0),0.2)
817
			rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(math.rad(10)+math.sin(tick()*12)*1.9,0,-math.sin(tick()*12)/2.5) * CFrame.new(0,-0.7,0),0.2)
818
		elseif anim == "jumprun" or anim == "fallrun" then
819
			if not roll then
820
				head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.fromEulerAnglesXYZ(math.rad(20),0,0) * CFrame.new(0,0.5,0),0.2)
821
				leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,-1-math.cos(tick())/15,0) * CFrame.fromEulerAnglesXYZ(math.sin(tick()*2),0,math.rad(-2)) * CFrame.new(0,-1,0),0.2)
822
				rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1-math.cos(tick())/15,0) * CFrame.fromEulerAnglesXYZ(-math.sin(tick()*2),0,math.rad(2)) * CFrame.new(0,-1,0),0.2)
823
				humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(0,math.cos(tick())/15,0) * CFrame.fromEulerAnglesXYZ(math.rad(-20),0,0),0.2)
824
				leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(-math.pi/3+math.sin(tick()*2)/5,0,math.cos(tick()*2)/5) * CFrame.new(0,-0.5,0),0.2)
825
				rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(math.pi/2+math.rad(20)+math.sin(tick()*2)/5,0,-math.cos(tick()*2)/5) * CFrame.new(0,-0.5,0),0.2)
826
			else
827
				head.C0 = head.C0:lerp(CFrame.new(0, 1.38302183, -0.321395874, 1, 0, 0, 0, 0.766044259, 0.642787695, 0, -0.642787695, 0.766044259),0.2)
828
				leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5, -2.00000048, 3.81469727e-06, 1, 0, 0, 0, 0.99999994, 0, 0, 1.49011612e-08, 1),0.2)
829
				rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5, -2.00000048, 3.81469727e-06, 1, 0, 0, 0, 0.99999994, 0, 0, 1.49011612e-08, 1),0.2)
830
				humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(0, 0, 0, 1, 0, 0, 0, 0.984807789, 0.17364797, 0, -0.17364797, 0.984807789),0.2)
831
				leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.18301296, -0.0232186317, -0.439029694, 0.866025329, -0.49999997, 0, 0.383022159, 0.663413882, -0.642787457, 0.321393758, 0.556670368, 0.766044438),0.2)
832
				rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.18301296, -0.0232186317, -0.439029694, 0.866025388, 0.5, 0, -0.3830221, 0.663413823, -0.642787635, -0.321393877, 0.556670487, 0.766044259),0.2)
833
			end
834
		elseif anim == "jump" or anim == "fall" then
835
			head.C0 = head.C0:lerp(CFrame.new(0,1,0) * CFrame.fromEulerAnglesXYZ(0,0,0) * CFrame.new(0,0.5,0),0.2)
836
			leftleg.C0 = leftleg.C0:lerp(CFrame.new(-0.5,0,-0.5) * CFrame.fromEulerAnglesXYZ(0,0,math.rad(-2)) * CFrame.new(0,-1,0),0.2)
837
			rightleg.C0 = rightleg.C0:lerp(CFrame.new(0.5,-1,0) * CFrame.fromEulerAnglesXYZ(0,0,math.rad(2)) * CFrame.new(0,-1,0),0.2)
838
			humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(0,math.cos(tick())/15,0) * CFrame.fromEulerAnglesXYZ(0,0,0),0.2)
839
			leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(math.pi-math.rad(30),0,0) * CFrame.new(0,-0.5,0),0.2)
840
			rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(math.pi-math.rad(30),0,0) * CFrame.new(0,-0.5,0),0.2)
841
		end
842
	end
843
end