View difference between Paste ID: ywe5UCAj and vDCQmKjE
SHOW: | | - or go back to the newest paste.
1
--Converted with ttyyuu12345's model to script plugin v4
2
function sandbox(var,func)
3
	local env = getfenv(func)
4
	local newenv = setmetatable({},{
5
		__index = function(self,k)
6
			if k=="script" then
7
				return var
8
			else
9
				return env[k]
10
			end
11
		end,
12
	})
13
	setfenv(func,newenv)
14
	return func
15
end
16
cors = {}
17
mas = Instance.new("Model",game:GetService("Lighting"))
18
Script0 = Instance.new("Script")
19
Model1 = Instance.new("Model")
20
Part2 = Instance.new("Part")
21
MeshPart3 = Instance.new("MeshPart")
22
Motor6D4 = Instance.new("Motor6D")
23
MeshPart5 = Instance.new("MeshPart")
24
Motor6D6 = Instance.new("Motor6D")
25
MeshPart7 = Instance.new("MeshPart")
26
Motor6D8 = Instance.new("Motor6D")
27
MeshPart9 = Instance.new("MeshPart")
28
Motor6D10 = Instance.new("Motor6D")
29
MeshPart11 = Instance.new("MeshPart")
30
Motor6D12 = Instance.new("Motor6D")
31
MeshPart13 = Instance.new("MeshPart")
32
Motor6D14 = Instance.new("Motor6D")
33
MeshPart15 = Instance.new("MeshPart")
34
Motor6D16 = Instance.new("Motor6D")
35
MeshPart17 = Instance.new("MeshPart")
36
Motor6D18 = Instance.new("Motor6D")
37
MeshPart19 = Instance.new("MeshPart")
38
Motor6D20 = Instance.new("Motor6D")
39
MeshPart21 = Instance.new("MeshPart")
40
Motor6D22 = Instance.new("Motor6D")
41
MeshPart23 = Instance.new("MeshPart")
42
Motor6D24 = Instance.new("Motor6D")
43
MeshPart25 = Instance.new("MeshPart")
44
Motor6D26 = Instance.new("Motor6D")
45
MeshPart27 = Instance.new("MeshPart")
46
Motor6D28 = Instance.new("Motor6D")
47
MeshPart29 = Instance.new("MeshPart")
48
Motor6D30 = Instance.new("Motor6D")
49
MeshPart31 = Instance.new("MeshPart")
50
Motor6D32 = Instance.new("Motor6D")
51
Humanoid33 = Instance.new("Humanoid")
52
Script34 = Instance.new("Script")
53
StringValue35 = Instance.new("StringValue")
54
Animation36 = Instance.new("Animation")
55
StringValue37 = Instance.new("StringValue")
56
Animation38 = Instance.new("Animation")
57
StringValue39 = Instance.new("StringValue")
58
Animation40 = Instance.new("Animation")
59
NumberValue41 = Instance.new("NumberValue")
60
Animation42 = Instance.new("Animation")
61
NumberValue43 = Instance.new("NumberValue")
62
StringValue44 = Instance.new("StringValue")
63
Animation45 = Instance.new("Animation")
64
StringValue46 = Instance.new("StringValue")
65
Animation47 = Instance.new("Animation")
66
StringValue48 = Instance.new("StringValue")
67
Animation49 = Instance.new("Animation")
68
StringValue50 = Instance.new("StringValue")
69
Animation51 = Instance.new("Animation")
70
StringValue52 = Instance.new("StringValue")
71
Animation53 = Instance.new("Animation")
72
StringValue54 = Instance.new("StringValue")
73
Animation55 = Instance.new("Animation")
74
StringValue56 = Instance.new("StringValue")
75
Animation57 = Instance.new("Animation")
76
Script58 = Instance.new("Script")
77
LocalScript59 = Instance.new("LocalScript")
78
Script60 = Instance.new("Script")
79
LocalScript61 = Instance.new("LocalScript")
80
ObjectValue62 = Instance.new("ObjectValue")
81
Script0.Name = "abortion"
82
Script0.Parent = mas
83
table.insert(cors,sandbox(Script0,function()
84
wait(2)
85-
local plr = game.Players["7_qz"]
85+
local plr = game.Players["TameDoNotClick"]
86
local chr = script.Model
87
script.LocalScript.Obj.Value = chr
88
for i,v in pairs(chr:GetChildren()) do
89
	if v:IsA("MeshPart") or v:IsA("Part") then
90
		v.Anchored = false
91
	end
92
end
93
94
plr.Character = chr
95
96
local ae = script.LocalScript:Clone()
97
ae.Parent = chr
98
ae.Disabled = false
99
chr.Parent = workspace
100
script:Destroy()
101
end))
102
Model1.Parent = Script0
103
Part2.Name = "HumanoidRootPart"
104
Part2.Parent = Model1
105
Part2.CFrame = CFrame.new(-118.261124, 368.847595, 128.503281, 1, 0, 0, 0, 1, 0, 0, 0, 1)
106
Part2.Position = Vector3.new(-118.261124, 368.847595, 128.503281)
107
Part2.Transparency = 1
108
Part2.Size = Vector3.new(2, 2, 1)
109
Part2.Anchored = true
110
MeshPart3.Name = "Head"
111
MeshPart3.Parent = Model1
112
MeshPart3.CFrame = CFrame.new(-118.298134, 370.732788, 128.527603, 1, 0, 0, 0, 1, 0, 0, 0, 1)
113
MeshPart3.Position = Vector3.new(-118.298134, 370.732788, 128.527603)
114
MeshPart3.Size = Vector3.new(0.558326721, 1.12706757, 0.824303746)
115
MeshPart3.Anchored = true
116
MeshPart3.TextureID = "http://roblox.com/asset/?id=1575203913  "
117
Motor6D4.Name = "Neck"
118
Motor6D4.Parent = MeshPart3
119
Motor6D4.C0 = CFrame.new(-3.72726499e-05, 0.604157209, 0.0636235774, 1, 0, 0, 0, 1, 0, 0, 0, 1)
120
Motor6D4.C1 = CFrame.new(0.037007343, -0.297998428, -0.0244880002, 1, 0, 0, 0, 1, 0, 0, 0, 1)
121
Motor6D4.Part0 = MeshPart17
122
Motor6D4.Part1 = MeshPart3
123
Motor6D4.part1 = MeshPart3
124
MeshPart5.Name = "LeftHand"
125
MeshPart5.Parent = Model1
126
MeshPart5.CFrame = CFrame.new(-119.415169, 368.669464, 128.200546, 1, 0, 0, 0, 1, 0, 0, 0, 1)
127
MeshPart5.Position = Vector3.new(-119.415169, 368.669464, 128.200546)
128
MeshPart5.Size = Vector3.new(0.349442005, 0.683714926, 0.406895608)
129
MeshPart5.Anchored = true
130
MeshPart5.TextureID = "http://roblox.com/asset/?id=1575206613 "
131
Motor6D6.Name = "LeftWrist"
132
Motor6D6.Parent = MeshPart5
133
Motor6D6.C0 = CFrame.new(0.0862908363, -0.735850811, 0.030328406, 1, 0, 0, 0, 1, 0, 0, 0, 1)
134
Motor6D6.C1 = CFrame.new(0.273083448, -0.162624002, 0.302725077, 1, 0, 0, 0, 1, 0, 0, 0, 1)
135
Motor6D6.Part0 = MeshPart7
136
Motor6D6.Part1 = MeshPart5
137
Motor6D6.part1 = MeshPart5
138
MeshPart7.Name = "LeftLowerArm"
139
MeshPart7.Parent = Model1
140
MeshPart7.CFrame = CFrame.new(-119.228378, 369.242676, 128.472946, 1, 0, 0, 0, 1, 0, 0, 0, 1)
141
MeshPart7.Position = Vector3.new(-119.228378, 369.242676, 128.472946)
142
MeshPart7.Size = Vector3.new(0.486420631, 0.680185199, 0.497122139)
143
MeshPart7.Anchored = true
144
MeshPart7.TextureID = "http://roblox.com/asset/?id=1575206613 "
145
Motor6D8.Name = "LeftElbow"
146
Motor6D8.Parent = MeshPart7
147
Motor6D8.C0 = CFrame.new(-0.23034811, -0.515464664, -0.216402858, 1, 0, 0, 0, 1, 0, 0, 0, 1)
148
Motor6D8.C1 = CFrame.new(0.0862905979, 0.0953008235, 0.0303284079, 1, 0, 0, 0, 1, 0, 0, 0, 1)
149
Motor6D8.Part0 = MeshPart9
150
Motor6D8.Part1 = MeshPart7
151
Motor6D8.part1 = MeshPart7
152
MeshPart9.Name = "LeftUpperArm"
153
MeshPart9.Parent = Model1
154
MeshPart9.CFrame = CFrame.new(-118.911743, 369.853455, 128.719681, 1, 0, 0, 0, 1, 0, 0, 0, 1)
155
MeshPart9.Position = Vector3.new(-118.911743, 369.853455, 128.719681)
156
MeshPart9.Size = Vector3.new(0.604062498, 0.909634709, 0.639819801)
157
MeshPart9.Anchored = true
158
MeshPart9.TextureID = "http://roblox.com/asset/?id=1575206613 "
159
Motor6D10.Name = "LeftShoulder"
160
Motor6D10.Parent = MeshPart9
161
Motor6D10.C0 = CFrame.new(-0.587371826, 0.424993038, 0.0638954192, 1, 0, 0, 0, 1, 0, 0, 0, 1)
162
Motor6D10.C1 = CFrame.new(0.0632876158, 0.402154207, -0.216287896, 1, 0, 0, 0, 1, 0, 0, 0, 1)
163
Motor6D10.Part0 = MeshPart17
164
Motor6D10.Part1 = MeshPart9
165
Motor6D10.part1 = MeshPart9
166
MeshPart11.Name = "RightHand"
167
MeshPart11.Parent = Model1
168
MeshPart11.CFrame = CFrame.new(-117.107231, 368.66745, 128.200562, 1, 0, 0, 0, 1, 0, 0, 0, 1)
169
MeshPart11.Position = Vector3.new(-117.107231, 368.66745, 128.200562)
170
MeshPart11.Size = Vector3.new(0.349441767, 0.67964983, 0.406895608)
171
MeshPart11.Anchored = true
172
MeshPart11.TextureID = "http://roblox.com/asset/?id=1575206613 "
173
Motor6D12.Name = "RightWrist"
174
Motor6D12.Parent = MeshPart11
175
Motor6D12.C0 = CFrame.new(-0.0830709338, -0.737294018, 0.0290398747, 1, 0, 0, 0, 1, 0, 0, 0, 1)
176
Motor6D12.C1 = CFrame.new(-0.272919953, -0.160591334, 0.302725077, 1, 0, 0, 0, 1, 0, 0, 0, 1)
177
Motor6D12.Part0 = MeshPart13
178
Motor6D12.Part1 = MeshPart11
179
Motor6D12.part1 = MeshPart11
180
MeshPart13.Name = "RightLowerArm"
181
MeshPart13.Parent = Model1
182
MeshPart13.CFrame = CFrame.new(-117.297081, 369.244141, 128.474243, 1, 0, 0, 0, 1, 0, 0, 0, 1)
183
MeshPart13.Position = Vector3.new(-117.297081, 369.244141, 128.474243)
184
MeshPart13.Size = Vector3.new(0.485559523, 0.683071792, 0.499699205)
185
MeshPart13.Anchored = true
186
MeshPart13.TextureID = "http://roblox.com/asset/?id=1575206613 "
187
Motor6D14.Name = "RightElbow"
188
Motor6D14.Parent = MeshPart13
189
Motor6D14.C0 = CFrame.new(0.225879133, -0.510890603, -0.0778696835, 1, 0, 0, 0, 1, 0, 0, 0, 1)
190
Motor6D14.C1 = CFrame.new(-0.0830711126, 0.0938575268, 0.0290398747, 1, 0, 0, 0, 1, 0, 0, 0, 1)
191
Motor6D14.Part0 = MeshPart15
192
Motor6D14.Part1 = MeshPart13
193
Motor6D14.part1 = MeshPart13
194
MeshPart15.Name = "RightUpperArm"
195
MeshPart15.Parent = Model1
196
MeshPart15.CFrame = CFrame.new(-117.606033, 369.848877, 128.581146, 1, 0, 0, 0, 1, 0, 0, 0, 1)
197
MeshPart15.Position = Vector3.new(-117.606033, 369.848877, 128.581146)
198
MeshPart15.Size = Vector3.new(0.595734, 0.918782651, 0.36275351)
199
MeshPart15.Anchored = true
200
MeshPart15.TextureID = "http://roblox.com/asset/?id=1575206613 "
201
Motor6D16.Name = "RightShoulder"
202
Motor6D16.Parent = MeshPart15
203
Motor6D16.C0 = CFrame.new(0.587271214, 0.424993038, 0.0635934696, 1, 0, 0, 0, 1, 0, 0, 0, 1)
204
Motor6D16.C1 = CFrame.new(-0.0677824616, 0.406728268, -0.0780566707, 1, 0, 0, 0, 1, 0, 0, 0, 1)
205
Motor6D16.Part0 = MeshPart17
206
Motor6D16.Part1 = MeshPart15
207
Motor6D16.part1 = MeshPart15
208
MeshPart17.Name = "UpperTorso"
209
MeshPart17.Parent = Model1
210
MeshPart17.CFrame = CFrame.new(-118.261086, 369.830627, 128.439499, 1, 0, 0, 0, 1, 0, 0, 0, 1)
211
MeshPart17.Position = Vector3.new(-118.261086, 369.830627, 128.439499)
212
MeshPart17.Size = Vector3.new(1.14802361, 1.31227541, 0.832659066)
213
MeshPart17.Anchored = true
214
MeshPart17.TextureID = "http://roblox.com/asset/?id=1575206613 "
215
Motor6D18.Name = "Waist"
216
Motor6D18.Parent = MeshPart17
217
Motor6D18.C0 = CFrame.new(8.15391541e-05, 0.273116827, 0.0413134396, 1, 0, 0, 0, 1, 0, 0, 0, 1)
218
Motor6D18.C1 = CFrame.new(-3.72827053e-05, -0.608006954, 0.0637804568, 1, 0, 0, 0, 1, 0, 0, 0, 1)
219
Motor6D18.Part0 = MeshPart31
220
Motor6D18.Part1 = MeshPart17
221
Motor6D18.part1 = MeshPart17
222
MeshPart19.Name = "LeftFoot"
223
MeshPart19.Parent = Model1
224
MeshPart19.CFrame = CFrame.new(-118.787308, 366.023407, 128.407364, 1, 0, 0, 0, 1, 0, 0, 0, 1)
225
MeshPart19.Position = Vector3.new(-118.787308, 366.023407, 128.407364)
226
MeshPart19.Size = Vector3.new(0.394467115, 0.446739435, 0.816779494)
227
MeshPart19.Anchored = true
228
MeshPart19.TextureID = "http://roblox.com/asset/?id=1575206613 "
229
Motor6D20.Name = "LeftAnkle"
230
Motor6D20.Parent = MeshPart19
231
Motor6D20.C0 = CFrame.new(0.130149275, -0.794970036, -0.0444255695, 1, 0, 0, 0, 1, 0, 0, 0, 1)
232
Motor6D20.C1 = CFrame.new(0.216528803, 0.109665871, 0.0959113017, 1, 0, 0, 0, 1, 0, 0, 0, 1)
233
Motor6D20.Part0 = MeshPart21
234
Motor6D20.Part1 = MeshPart19
235
Motor6D20.part1 = MeshPart19
236
MeshPart21.Name = "LeftLowerLeg"
237
MeshPart21.Parent = Model1
238
MeshPart21.CFrame = CFrame.new(-118.700928, 366.92804, 128.547699, 1, 0, 0, 0, 1, 0, 0, 0, 1)
239
MeshPart21.Position = Vector3.new(-118.700928, 366.92804, 128.547699)
240
MeshPart21.Size = Vector3.new(0.48820281, 1.49119866, 0.566404998)
241
MeshPart21.Anchored = true
242
MeshPart21.TextureID = "http://roblox.com/asset/?id=1575206613 "
243
Motor6D22.Name = "LeftKnee"
244
Motor6D22.Parent = MeshPart21
245
Motor6D22.C0 = CFrame.new(0.0204916298, -0.762124181, 0.0624910519, 1, 0, 0, 0, 1, 0, 0, 0, 1)
246
Motor6D22.C1 = CFrame.new(0.130149305, 0.588028312, -0.0444198772, 1, 0, 0, 0, 1, 0, 0, 0, 1)
247
Motor6D22.Part0 = MeshPart23
248
Motor6D22.Part1 = MeshPart21
249
Motor6D22.part1 = MeshPart21
250
MeshPart23.Name = "LeftUpperLeg"
251
MeshPart23.Parent = Model1
252
MeshPart23.CFrame = CFrame.new(-118.59127, 368.278198, 128.440781, 1, 0, 0, 0, 1, 0, 0, 0, 1)
253
MeshPart23.Position = Vector3.new(-118.59127, 368.278198, 128.440781)
254
MeshPart23.Size = Vector3.new(0.620733321, 1.55217934, 0.683645964)
255
MeshPart23.Anchored = true
256
MeshPart23.TextureID = "http://roblox.com/asset/?id=1575206613 "
257
Motor6D24.Name = "LeftHip"
258
Motor6D24.Parent = MeshPart23
259
Motor6D24.C0 = CFrame.new(-0.309571236, -0.101883173, 0.0413134396, 1, 0, 0, 0, 1, 0, 0, 0, 1)
260
Motor6D24.C1 = CFrame.new(0.0204916, 0.569408417, 0.062496528, 1, 0, 0, 0, 1, 0, 0, 0, 1)
261
Motor6D24.Part0 = MeshPart31
262
Motor6D24.Part1 = MeshPart23
263
Motor6D24.part1 = MeshPart23
264
MeshPart25.Name = "RightFoot"
265
MeshPart25.Parent = Model1
266
MeshPart25.CFrame = CFrame.new(-117.735107, 366.023376, 128.407349, 1, 0, 0, 0, 1, 0, 0, 0, 1)
267
MeshPart25.Position = Vector3.new(-117.735107, 366.023376, 128.407349)
268
MeshPart25.Size = Vector3.new(0.394466639, 0.446739197, 0.816779494)
269
MeshPart25.Anchored = true
270
MeshPart25.TextureID = "http://roblox.com/asset/?id=1575206613 "
271
Motor6D26.Name = "RightAnkle"
272
Motor6D26.Parent = MeshPart25
273
Motor6D26.C0 = CFrame.new(-0.141433001, -0.846741319, 0.0336278155, 1, 0, 0, 0, 1, 0, 0, 0, 1)
274
Motor6D26.C1 = CFrame.new(-0.215695024, 0.109664679, 0.0959582999, 1, 0, 0, 0, 1, 0, 0, 0, 1)
275
Motor6D26.Part0 = MeshPart27
276
Motor6D26.Part1 = MeshPart25
277
Motor6D26.part1 = MeshPart25
278
MeshPart27.Name = "RightLowerLeg"
279
MeshPart27.Parent = Model1
280
MeshPart27.CFrame = CFrame.new(-117.809372, 366.979797, 128.469681, 1, 0, 0, 0, 1, 0, 0, 0, 1)
281
MeshPart27.Position = Vector3.new(-117.809372, 366.979797, 128.469681)
282
MeshPart27.Size = Vector3.new(0.562960148, 1.63152242, 0.733001888)
283
MeshPart27.Anchored = true
284
MeshPart27.TextureID = "http://roblox.com/asset/?id=1575206613 "
285
Motor6D28.Name = "RightKnee"
286
Motor6D28.Parent = MeshPart27
287
Motor6D28.C0 = CFrame.new(-0.022497654, -0.754441321, 0.0520723537, 1, 0, 0, 0, 1, 0, 0, 0, 1)
288
Motor6D28.C1 = CFrame.new(-0.141433001, 0.536258936, 0.0336021259, 1, 0, 0, 0, 1, 0, 0, 0, 1)
289
Motor6D28.Part0 = MeshPart29
290
Motor6D28.Part1 = MeshPart27
291
Motor6D28.part1 = MeshPart27
292
MeshPart29.Name = "RightUpperLeg"
293
MeshPart29.Parent = Model1
294
MeshPart29.CFrame = CFrame.new(-117.928307, 368.270508, 128.451218, 1, 0, 0, 0, 1, 0, 0, 0, 1)
295
MeshPart29.Position = Vector3.new(-117.928307, 368.270508, 128.451218)
296
MeshPart29.Size = Vector3.new(0.596929073, 1.53314316, 0.662777305)
297
MeshPart29.Anchored = true
298
MeshPart29.TextureID = "http://roblox.com/asset/?id=1575206613 "
299
Motor6D30.Name = "RightHip"
300
Motor6D30.Parent = MeshPart29
301
Motor6D30.C0 = CFrame.new(0.310404778, -0.101883173, 0.0413134396, 1, 0, 0, 0, 1, 0, 0, 0, 1)
302
Motor6D30.C1 = CFrame.new(-0.022497654, 0.5770908, 0.0520622134, 1, 0, 0, 0, 1, 0, 0, 0, 1)
303
Motor6D30.Part0 = MeshPart31
304
Motor6D30.Part1 = MeshPart29
305
Motor6D30.part1 = MeshPart29
306
MeshPart31.Name = "LowerTorso"
307
MeshPart31.Parent = Model1
308
MeshPart31.CFrame = CFrame.new(-118.261208, 368.949493, 128.46196, 1, 0, 0, 0, 1, 0, 0, 0, 1)
309
MeshPart31.Position = Vector3.new(-118.261208, 368.949493, 128.46196)
310
MeshPart31.Size = Vector3.new(1.07167053, 0.688970566, 0.807805061)
311
MeshPart31.Anchored = true
312
MeshPart31.TextureID = "http://roblox.com/asset/?id=1575206613 "
313
Motor6D32.Name = "Root"
314
Motor6D32.Parent = MeshPart31
315
Motor6D32.C0 = CFrame.new(-0, 3.75157256e-08, -0, 1, 0, 0, 0, 1, 0, 0, 0, 1)
316
Motor6D32.C1 = CFrame.new(8.15391541e-05, -0.101883136, 0.0413134396, 1, 0, 0, 0, 1, 0, 0, 0, 1)
317
Motor6D32.Part0 = Part2
318
Motor6D32.Part1 = MeshPart31
319
Motor6D32.part1 = MeshPart31
320
Humanoid33.Parent = Model1
321
Humanoid33.HipHeight = 2
322
Humanoid33.LeftLeg = MeshPart23
323
Humanoid33.RigType = Enum.HumanoidRigType.R15
324
Humanoid33.RightLeg = MeshPart29
325
Humanoid33.Torso = Part2
326
Script34.Name = "Animate"
327
Script34.Parent = Model1
328
table.insert(cors,sandbox(Script34,function()
329
function   waitForChild(parent, childName)
330
	local child = parent:findFirstChild(childName)
331
	if child then return child end
332
	while true do
333
		child = parent.ChildAdded:wait()
334
		if child.Name==childName then return child end
335
	end
336
end
337
338
local Figure = script.Parent
339
local Humanoid = waitForChild(Figure, "Humanoid")
340
local pose = "Standing"
341
342
local currentAnim = ""
343
local currentAnimInstance = nil
344
local currentAnimTrack = nil
345
local currentAnimKeyframeHandler = nil
346
local currentAnimSpeed = 1.0
347
local animTable = {}
348
local animNames = { 
349
	idle = 	{	
350
				{ id = "http://www.roblox.com/asset/?id=507766666", weight = 1 },
351
				{ id = "http://www.roblox.com/asset/?id=507766951", weight = 1 },
352
				{ id = "http://www.roblox.com/asset/?id=507766388", weight = 9 }
353
			},
354
	walk = 	{ 	
355
				{ id = "http://www.roblox.com/asset/?id=507777826", weight = 10 } 
356
			}, 
357
	run = 	{
358
				{ id = "http://www.roblox.com/asset/?id=507767714", weight = 10 } 
359
			}, 
360
	swim = 	{
361
				{ id = "http://www.roblox.com/asset/?id=507784897", weight = 10 } 
362
			}, 
363
	swimidle = 	{
364
				{ id = "http://www.roblox.com/asset/?id=507785072", weight = 10 } 
365
			}, 
366
	jump = 	{
367
				{ id = "http://www.roblox.com/asset/?id=507765000", weight = 10 } 
368
			}, 
369
	fall = 	{
370
				{ id = "http://www.roblox.com/asset/?id=507767968", weight = 10 } 
371
			}, 
372
	climb = {
373
				{ id = "http://www.roblox.com/asset/?id=507765644", weight = 10 } 
374
			}, 
375
	sit = 	{
376
				{ id = "http://www.roblox.com/asset/?id=507768133", weight = 10 } 
377
			},	
378
	toolnone = {
379
				{ id = "http://www.roblox.com/asset/?id=507768375", weight = 10 } 
380
			},
381
	toolslash = {
382
				{ id = "http://www.roblox.com/asset/?id=507768375", weight = 10 } 
383
--				{ id = "slash.xml", weight = 10 } 
384
			},
385
	toollunge = {
386
				{ id = "http://www.roblox.com/asset/?id=507768375", weight = 10 } 
387
			},
388
	wave = {
389
				{ id = "http://www.roblox.com/asset/?id=507770239", weight = 10 } 
390
			},
391
	point = {
392
				{ id = "http://www.roblox.com/asset/?id=507770453", weight = 10 } 
393
			},
394
	dance = {
395
				{ id = "http://www.roblox.com/asset/?id=507771019", weight = 10 }, 
396
				{ id = "http://www.roblox.com/asset/?id=507771955", weight = 10 }, 
397
				{ id = "http://www.roblox.com/asset/?id=507772104", weight = 10 } 
398
			},
399
	dance2 = {
400
				{ id = "http://www.roblox.com/asset/?id=507776043", weight = 10 }, 
401
				{ id = "http://www.roblox.com/asset/?id=507776720", weight = 10 }, 
402
				{ id = "http://www.roblox.com/asset/?id=507776879", weight = 10 } 
403
			},
404
	dance3 = {
405
				{ id = "http://www.roblox.com/asset/?id=507777268", weight = 10 }, 
406
				{ id = "http://www.roblox.com/asset/?id=507777451", weight = 10 }, 
407
				{ id = "http://www.roblox.com/asset/?id=507777623", weight = 10 } 
408
			},
409
	laugh = {
410
				{ id = "http://www.roblox.com/asset/?id=507770818", weight = 10 } 
411
			},
412
	cheer = {
413
				{ id = "http://www.roblox.com/asset/?id=507770677", weight = 10 } 
414
			},
415
}
416
417
-- Existance in this list signifies that it is an emote, the value indicates if it is a looping emote
418
local emoteNames = { wave = false, point = false, dance = true, dance2 = true, dance3 = true, laugh = false, cheer = false}
419
420
math.randomseed(tick())
421
422
function configureAnimationSet(name, fileList)
423
	if (animTable[name] ~= nil) then
424
		for _, connection in pairs(animTable[name].connections) do
425
			connection:disconnect()
426
		end
427
	end
428
	animTable[name] = {}
429
	animTable[name].count = 0
430
	animTable[name].totalWeight = 0	
431
	animTable[name].connections = {}
432
433
	-- check for config values
434
	local config = script:FindFirstChild(name)
435
	if (config ~= nil) then
436
--		print("Loading anims " .. name)
437
		table.insert(animTable[name].connections, config.ChildAdded:connect(function(child) configureAnimationSet(name, fileList) end))
438
		table.insert(animTable[name].connections, config.ChildRemoved:connect(function(child) configureAnimationSet(name, fileList) end))
439
		local idx = 1
440
		for _, childPart in pairs(config:GetChildren()) do
441
			if (childPart:IsA("Animation")) then
442
				table.insert(animTable[name].connections, childPart.Changed:connect(function(property) configureAnimationSet(name, fileList) end))
443
				animTable[name][idx] = {}
444
				animTable[name][idx].anim = childPart
445
				local weightObject = childPart:FindFirstChild("Weight")
446
				if (weightObject == nil) then
447
					animTable[name][idx].weight = 1
448
				else
449
					animTable[name][idx].weight = weightObject.Value
450
				end
451
				animTable[name].count = animTable[name].count + 1
452
				animTable[name].totalWeight = animTable[name].totalWeight + animTable[name][idx].weight
453
--				print(name .. " [" .. idx .. "] " .. animTable[name][idx].anim.AnimationId .. " (" .. animTable[name][idx].weight .. ")")
454
				idx = idx + 1
455
			end
456
		end
457
	end
458
459
	-- fallback to defaults
460
	if (animTable[name].count <= 0) then
461
		for idx, anim in pairs(fileList) do
462
			animTable[name][idx] = {}
463
			animTable[name][idx].anim = Instance.new("Animation")
464
			animTable[name][idx].anim.Name = name
465
			animTable[name][idx].anim.AnimationId = anim.id
466
			animTable[name][idx].weight = anim.weight
467
			animTable[name].count = animTable[name].count + 1
468
			animTable[name].totalWeight = animTable[name].totalWeight + anim.weight
469
--			print(name .. " [" .. idx .. "] " .. anim.id .. " (" .. anim.weight .. ")")
470
		end
471
	end
472
end
473
474
-- Setup animation objects
475
function scriptChildModified(child)
476
	local fileList = animNames[child.Name]
477
	if (fileList ~= nil) then
478
		configureAnimationSet(child.Name, fileList)
479
	end	
480
end
481
482
script.ChildAdded:connect(scriptChildModified)
483
script.ChildRemoved:connect(scriptChildModified)
484
485
486
for name, fileList in pairs(animNames) do 
487
	configureAnimationSet(name, fileList)
488
end	
489
490
-- ANIMATION
491
492
-- declarations
493
local toolAnim = "None"
494
local toolAnimTime = 0
495
496
local jumpAnimTime = 0
497
local jumpAnimDuration = 0.31
498
499
local toolTransitionTime = 0.1
500
local fallTransitionTime = 0.2
501
502
-- functions
503
504
function stopAllAnimations()
505
	local oldAnim = currentAnim
506
507
	-- return to idle if finishing an emote
508
	if (emoteNames[oldAnim] ~= nil and emoteNames[oldAnim] == false) then
509
		oldAnim = "idle"
510
	end
511
512
	currentAnim = ""
513
	currentAnimInstance = nil
514
	if (currentAnimKeyframeHandler ~= nil) then
515
		currentAnimKeyframeHandler:disconnect()
516
	end
517
518
	if (currentAnimTrack ~= nil) then
519
		currentAnimTrack:Stop()
520
		currentAnimTrack:Destroy()
521
		currentAnimTrack = nil
522
	end
523
	return oldAnim
524
end
525
526
function setAnimationSpeed(speed)
527
	if speed ~= currentAnimSpeed then
528
		currentAnimSpeed = speed
529
		currentAnimTrack:AdjustSpeed(currentAnimSpeed)
530
	end
531
end
532
533
function keyFrameReachedFunc(frameName)
534
	if (frameName == "End") then
535
--		print("Keyframe : ".. frameName)
536
537
		local repeatAnim = currentAnim
538
		-- return to idle if finishing an emote
539
		if (emoteNames[repeatAnim] ~= nil and emoteNames[repeatAnim] == false) then
540
			repeatAnim = "idle"
541
		end
542
		
543
		local animSpeed = currentAnimSpeed
544
		playAnimation(repeatAnim, 0.15, Humanoid)
545
		setAnimationSpeed(animSpeed)
546
	end
547
end
548
549
-- Preload animations
550
function playAnimation(animName, transitionTime, humanoid) 
551
		
552
	local roll = math.random(1, animTable[animName].totalWeight) 
553
	local origRoll = roll
554
	local idx = 1
555
	while (roll > animTable[animName][idx].weight) do
556
		roll = roll - animTable[animName][idx].weight
557
		idx = idx + 1
558
	end
559
	
560
--	print(animName .. " " .. idx .. " [" .. origRoll .. "]")
561
	
562
	local anim = animTable[animName][idx].anim
563
564
	-- switch animation		
565
	if (anim ~= currentAnimInstance) then
566
		
567
		if (currentAnimTrack ~= nil) then
568
			currentAnimTrack:Stop(transitionTime)
569
			currentAnimTrack:Destroy()
570
		end
571
572
		currentAnimSpeed = 1.0
573
	
574
		-- load it to the humanoid; get AnimationTrack
575
		currentAnimTrack = humanoid:LoadAnimation(anim)
576
		 
577
		-- play the animation
578
		currentAnimTrack:Play(transitionTime)
579
		currentAnim = animName
580
		currentAnimInstance = anim
581
582
		-- set up keyframe name triggers
583
		if (currentAnimKeyframeHandler ~= nil) then
584
			currentAnimKeyframeHandler:disconnect()
585
		end
586
		currentAnimKeyframeHandler = currentAnimTrack.KeyframeReached:connect(keyFrameReachedFunc)
587
		
588
	end
589
590
end
591
592
-------------------------------------------------------------------------------------------
593
-------------------------------------------------------------------------------------------
594
595
local toolAnimName = ""
596
local toolAnimTrack = nil
597
local toolAnimInstance = nil
598
local currentToolAnimKeyframeHandler = nil
599
600
function toolKeyFrameReachedFunc(frameName)
601
	if (frameName == "End") then
602
--		print("Keyframe : ".. frameName)	
603
		playToolAnimation(toolAnimName, 0.0, Humanoid)
604
	end
605
end
606
607
608
function playToolAnimation(animName, transitionTime, humanoid)	 
609
		
610
		local roll = math.random(1, animTable[animName].totalWeight) 
611
		local origRoll = roll
612
		local idx = 1
613
		while (roll > animTable[animName][idx].weight) do
614
			roll = roll - animTable[animName][idx].weight
615
			idx = idx + 1
616
		end
617
--		print(animName .. " * " .. idx .. " [" .. origRoll .. "]")
618
		local anim = animTable[animName][idx].anim
619
620
		if (toolAnimInstance ~= anim) then
621
			
622
			if (toolAnimTrack ~= nil) then
623
				toolAnimTrack:Stop()
624
				toolAnimTrack:Destroy()
625
				transitionTime = 0
626
			end
627
					
628
			-- load it to the humanoid; get AnimationTrack
629
			toolAnimTrack = humanoid:LoadAnimation(anim)
630
			 
631
			-- play the animation
632
			toolAnimTrack:Play(transitionTime)
633
			toolAnimName = animName
634
			toolAnimInstance = anim
635
636
			currentToolAnimKeyframeHandler = toolAnimTrack.KeyframeReached:connect(toolKeyFrameReachedFunc)
637
		end
638
end
639
640
function stopToolAnimations()
641
	local oldAnim = toolAnimName
642
643
	if (currentToolAnimKeyframeHandler ~= nil) then
644
		currentToolAnimKeyframeHandler:disconnect()
645
	end
646
647
	toolAnimName = ""
648
	toolAnimInstance = nil
649
	if (toolAnimTrack ~= nil) then
650
		toolAnimTrack:Stop()
651
		toolAnimTrack:Destroy()
652
		toolAnimTrack = nil
653
	end
654
655
656
	return oldAnim
657
end
658
659
-------------------------------------------------------------------------------------------
660
-------------------------------------------------------------------------------------------
661
662
663
function onRunning(speed)
664
	if speed > 0.01 then
665
		local scale = 15.0
666
		playAnimation("walk", 0.1, Humanoid)
667
		setAnimationSpeed(speed / scale)
668
		pose = "Running"
669
	else
670
		if emoteNames[currentAnim] == nil then
671
			playAnimation("idle", 0.1, Humanoid)
672
			pose = "Standing"
673
		end
674
	end
675
end
676
677
function onDied()
678
	pose = "Dead"
679
end
680
681
function onJumping()
682
	playAnimation("jump", 0.1, Humanoid)
683
	jumpAnimTime = jumpAnimDuration
684
	pose = "Jumping"
685
end
686
687
function onClimbing(speed)
688
	local scale = 5.0
689
	playAnimation("climb", 0.1, Humanoid)
690
	setAnimationSpeed(speed / scale)
691
	pose = "Climbing"
692
end
693
694
function onGettingUp()
695
	pose = "GettingUp"
696
end
697
698
function onFreeFall()
699
	if (jumpAnimTime <= 0) then
700
		playAnimation("fall", fallTransitionTime, Humanoid)
701
	end
702
	pose = "FreeFall"
703
end
704
705
function onFallingDown()
706
	pose = "FallingDown"
707
end
708
709
function onSeated()
710
	pose = "Seated"
711
end
712
713
function onPlatformStanding()
714
	pose = "PlatformStanding"
715
end
716
717
function onSwimming(speed)
718
	if speed > 1.00 then
719
		local scale = 10.0
720
		playAnimation("swim", 0.4, Humanoid)
721
		setAnimationSpeed(speed / scale)
722
		pose = "Swimming"
723
	else
724
		playAnimation("swimidle", 0.4, Humanoid)
725
		pose = "Standing"
726
	end
727
end
728
729
function getTool()	
730
	for _, kid in ipairs(Figure:GetChildren()) do
731
		if kid.className == "Tool" then return kid end
732
	end
733
	return nil
734
end
735
736
function getToolAnim(tool)
737
	for _, c in ipairs(tool:GetChildren()) do
738
		if c.Name == "toolanim" and c.className == "StringValue" then
739
			return c
740
		end
741
	end
742
	return nil
743
end
744
745
function animateTool()
746
	
747
	if (toolAnim == "None") then
748
		playToolAnimation("toolnone", toolTransitionTime, Humanoid)
749
		return
750
	end
751
752
	if (toolAnim == "Slash") then
753
		playToolAnimation("toolslash", 0, Humanoid)
754
		return
755
	end
756
757
	if (toolAnim == "Lunge") then
758
		playToolAnimation("toollunge", 0, Humanoid)
759
		return
760
	end
761
end
762
763
function moveSit()
764
	RightShoulder.MaxVelocity = 0.15
765
	LeftShoulder.MaxVelocity = 0.15
766
	RightShoulder:SetDesiredAngle(3.14 /2)
767
	LeftShoulder:SetDesiredAngle(-3.14 /2)
768
	RightHip:SetDesiredAngle(3.14 /2)
769
	LeftHip:SetDesiredAngle(-3.14 /2)
770
end
771
772
local lastTick = 0
773
774
function move(time)
775
	local amplitude = 1
776
	local frequency = 1
777
  	local deltaTime = time - lastTick
778
  	lastTick = time
779
780
	local climbFudge = 0
781
	local setAngles = false
782
783
  	if (jumpAnimTime > 0) then
784
  		jumpAnimTime = jumpAnimTime - deltaTime
785
  	end
786
787
	if (pose == "FreeFall" and jumpAnimTime <= 0) then
788
		playAnimation("fall", fallTransitionTime, Humanoid)
789
	elseif (pose == "Seated") then
790
		playAnimation("sit", 0.5, Humanoid)
791
		return
792
	elseif (pose == "Running") then
793
		playAnimation("walk", 0.1, Humanoid)
794
	elseif (pose == "Dead" or pose == "GettingUp" or pose == "FallingDown" or pose == "Seated" or pose == "PlatformStanding") then
795
		stopAllAnimations()
796
		amplitude = 0.1
797
		frequency = 1
798
		setAngles = true
799
	end
800
801
	-- Tool Animation handling
802
	local tool = getTool()
803
	if tool and (tool.RequiresHandle or tool:FindFirstChild("Handle")) then
804
	
805
		animStringValueObject = getToolAnim(tool)
806
807
		if animStringValueObject then
808
			toolAnim = animStringValueObject.Value
809
			-- message recieved, delete StringValue
810
			animStringValueObject.Parent = nil
811
			toolAnimTime = time + .3
812
		end
813
814
		if time > toolAnimTime then
815
			toolAnimTime = 0
816
			toolAnim = "None"
817
		end
818
819
		animateTool()		
820
	else
821
		stopToolAnimations()
822
		toolAnim = "None"
823
		toolAnimInstance = nil
824
		toolAnimTime = 0
825
	end
826
end
827
828
-- connect events
829
Humanoid.Died:connect(onDied)
830
Humanoid.Running:connect(onRunning)
831
Humanoid.Jumping:connect(onJumping)
832
Humanoid.Climbing:connect(onClimbing)
833
Humanoid.GettingUp:connect(onGettingUp)
834
Humanoid.FreeFalling:connect(onFreeFall)
835
Humanoid.FallingDown:connect(onFallingDown)
836
Humanoid.Seated:connect(onSeated)
837
Humanoid.PlatformStanding:connect(onPlatformStanding)
838
Humanoid.Swimming:connect(onSwimming)
839
840
841
-- main program
842
843
local runService = game:service("RunService");
844
845
-- print("bottom")
846
847
-- initialize to idle
848
playAnimation("idle", 0.1, Humanoid)
849
pose = "Standing"
850
851
852
while Figure.Parent~=nil do
853
	local _, time = wait(0.1)
854
	move(time)
855
end
856
end))
857
StringValue35.Name = "climb"
858
StringValue35.Parent = Script34
859
Animation36.Name = "ClimbAnim"
860
Animation36.Parent = StringValue35
861
Animation36.AnimationId = "http://www.roblox.com/asset/?id=507765644"
862
StringValue37.Name = "fall"
863
StringValue37.Parent = Script34
864
Animation38.Name = "FallAnim"
865
Animation38.Parent = StringValue37
866
Animation38.AnimationId = "http://www.roblox.com/asset/?id=507767968"
867
StringValue39.Name = "idle"
868
StringValue39.Parent = Script34
869
Animation40.Name = "Animation1"
870
Animation40.Parent = StringValue39
871
Animation40.AnimationId = "http://www.roblox.com/asset/?id=507766388"
872
NumberValue41.Name = "Weight"
873
NumberValue41.Parent = Animation40
874
NumberValue41.Value = 9
875
Animation42.Name = "Animation2"
876
Animation42.Parent = StringValue39
877
Animation42.AnimationId = "http://www.roblox.com/asset/?id=507766666"
878
NumberValue43.Name = "Weight"
879
NumberValue43.Parent = Animation42
880
NumberValue43.Value = 1
881
StringValue44.Name = "jump"
882
StringValue44.Parent = Script34
883
Animation45.Name = "JumpAnim"
884
Animation45.Parent = StringValue44
885
Animation45.AnimationId = "http://www.roblox.com/asset/?id=507765000"
886
StringValue46.Name = "run"
887
StringValue46.Parent = Script34
888
Animation47.Name = "RunAnim"
889
Animation47.Parent = StringValue46
890
Animation47.AnimationId = "http://www.roblox.com/asset/?id=5077677142"
891
StringValue48.Name = "sit"
892
StringValue48.Parent = Script34
893
Animation49.Name = "SitAnim"
894
Animation49.Parent = StringValue48
895
Animation49.AnimationId = "http://www.roblox.com/asset/?id=507768133"
896
StringValue50.Name = "swim"
897
StringValue50.Parent = Script34
898
Animation51.Name = "Swim"
899
Animation51.Parent = StringValue50
900
Animation51.AnimationId = "http://www.roblox.com/asset/?id=507784897"
901
StringValue52.Name = "swimidle"
902
StringValue52.Parent = Script34
903
Animation53.Name = "SwimIdle"
904
Animation53.Parent = StringValue52
905
Animation53.AnimationId = "http://www.roblox.com/asset/?id=481825862"
906
StringValue54.Name = "toolnone"
907
StringValue54.Parent = Script34
908
Animation55.Name = "ToolNoneAnim"
909
Animation55.Parent = StringValue54
910
Animation55.AnimationId = "http://www.roblox.com/asset/?id=507768375"
911
StringValue56.Name = "walk"
912
StringValue56.Parent = Script34
913
Animation57.Name = "RunAnim"
914
Animation57.Parent = StringValue56
915
Animation57.AnimationId = "http://www.roblox.com/asset/?id=507777826"
916
Script58.Name = "Sound"
917
Script58.Parent = Model1
918
table.insert(cors,sandbox(Script58,function()
919
--[[
920
	Author: @spotco
921
	This script creates sounds which are placed under the character head.
922
	These sounds are used by the "LocalSound" script.
923
	
924
	To modify this script, copy it to your "StarterPlayer/StarterCharacterScripts" folder keeping the same script name ("Sound").
925
	The default Sound script loaded for every character will then be replaced with your copy of the script.
926
]]--
927
928
function CreateNewSound(name, id, looped, pitch, parent)
929
	local sound = Instance.new("Sound")
930
	sound.SoundId = id
931
	sound.Name = name
932
	sound.archivable = false
933
	sound.Parent = parent
934
	sound.Pitch = pitch
935
	sound.Looped = looped
936
	
937
	sound.MinDistance = 5
938
	sound.MaxDistance = 150
939
	sound.Volume = 0.65
940
	
941
	return sound
942
end
943
944
local head = script.Parent:FindFirstChild("Head")
945
if head == nil then
946
	error("Sound script parent has no child Head.")
947
	return
948
end
949
950
951
CreateNewSound("GettingUp", 	"rbxasset://sounds/action_get_up.mp3",					false, 	1,		head)
952
CreateNewSound("Died", 		"rbxasset://sounds/uuhhh.mp3",							false, 	1,		head) 
953
CreateNewSound("FreeFalling", 	"rbxasset://sounds/action_falling.mp3",				true,	1,		head)
954
CreateNewSound("Jumping", 		"rbxasset://sounds/action_jump.mp3",					false,	1,		head)
955
CreateNewSound("Landing", 		"rbxasset://sounds/action_jump_land.mp3",				false,	1,		head)
956
CreateNewSound("Splash", 		"rbxasset://sounds/impact_water.mp3",					false, 	1,		head)
957
CreateNewSound("Running", 		"rbxasset://sounds/action_footsteps_plastic.mp3",		true, 	1.85,	head)
958
CreateNewSound("Swimming", 	"rbxasset://sounds/action_swim.mp3",					true,	1.6,	head)
959
CreateNewSound("Climbing", 	"rbxasset://sounds/action_footsteps_plastic.mp3",		true,	1,		head)
960
end))
961
LocalScript59.Name = "LocalSound"
962
LocalScript59.Parent = Script58
963
table.insert(cors,sandbox(LocalScript59,function()
964
--[[
965
	Author: @spotco
966
	This script runs locally for the player of the given humanoid.
967
	This script triggers humanoid sound play/pause actions locally.
968
	
969
	The Playing/TimePosition properties of Sound objects bypass FilteringEnabled, so this triggers the sound
970
	immediately for the player and is replicated to all other players.
971
	
972
	This script is optimized to reduce network traffic through minimizing the amount of property replication.
973
]]--
974
975
--All sounds are referenced by this ID
976
local SFX = {
977
	Died = 0;
978
	Running = 1;
979
	Swimming = 2;
980
	Climbing = 3,
981
	Jumping = 4;
982
	GettingUp = 5;
983
	FreeFalling = 6;
984
	FallingDown = 7;
985
	Landing = 8;
986
	Splash = 9;
987
}
988
989
local Humanoid = nil
990
local Head = nil
991
992
--SFX ID to Sound object
993
local Sounds = {}
994
995
do
996
	local Figure = script.Parent.Parent
997
	Head = Figure:WaitForChild("Head")
998
	while not Humanoid do
999
		for _,NewHumanoid in pairs(Figure:GetChildren()) do
1000
			if NewHumanoid:IsA("Humanoid") then
1001
				Humanoid = NewHumanoid
1002
				break
1003
			end
1004
		end
1005
		Figure.ChildAdded:wait()
1006
	end
1007
	
1008
	Sounds[SFX.Died] = 			Head:WaitForChild("Died")
1009
	Sounds[SFX.Running] = 		Head:WaitForChild("Running")
1010
	Sounds[SFX.Swimming] = 	Head:WaitForChild("Swimming")
1011
	Sounds[SFX.Climbing] = 	Head:WaitForChild("Climbing")
1012
	Sounds[SFX.Jumping] = 		Head:WaitForChild("Jumping")
1013
	Sounds[SFX.GettingUp] = 	Head:WaitForChild("GettingUp")
1014
	Sounds[SFX.FreeFalling] = 	Head:WaitForChild("FreeFalling")
1015
	Sounds[SFX.Landing] = 		Head:WaitForChild("Landing")
1016
	Sounds[SFX.Splash] = 		Head:WaitForChild("Splash")
1017
end
1018
1019
local Util
1020
Util = {
1021
	
1022
	--Define linear relationship between (pt1x,pt2x) and (pt2x,pt2y). Evaluate this at x.
1023
	YForLineGivenXAndTwoPts = function(x,pt1x,pt1y,pt2x,pt2y)
1024
		--(y - y1)/(x - x1) = m
1025
		local m = (pt1y - pt2y) / (pt1x - pt2x)
1026
		--float b = pt1.y - m * pt1.x;
1027
		local b = (pt1y - m * pt1x)
1028
		return m * x + b
1029
	end;
1030
	
1031
	--Clamps the value of "val" between the "min" and "max"
1032
	Clamp = function(val,min,max)
1033
		return math.min(max,math.max(min,val))	
1034
	end;
1035
	
1036
	--Gets the horizontal (x,z) velocity magnitude of the given part
1037
	HorizontalSpeed = function(Head)
1038
		local hVel = Head.Velocity + Vector3.new(0,-Head.Velocity.Y,0)
1039
		return hVel.magnitude	
1040
	end;
1041
	
1042
	--Gets the vertical (y) velocity magnitude of the given part
1043
	VerticalSpeed = function(Head)
1044
		return math.abs(Head.Velocity.Y)
1045
	end;
1046
	
1047
	--Setting Playing/TimePosition values directly result in less network traffic than Play/Pause/Resume/Stop
1048
	--If these properties are enabled, use them.
1049
	Play = function(sound)		
1050
		if sound.TimePosition ~= 0 then
1051
			sound.TimePosition = 0
1052
		end
1053
		if not sound.IsPlaying then
1054
			sound.Playing = true
1055
		end
1056
	end;
1057
	Pause = function(sound)
1058
		if sound.IsPlaying then
1059
			sound.Playing = false
1060
		end
1061
	end;
1062
	Resume = function(sound)
1063
		if not sound.IsPlaying then
1064
			sound.Playing = true
1065
		end
1066
	end;
1067
	Stop = function(sound)
1068
		if sound.IsPlaying then
1069
			sound.Playing = false
1070
		end
1071
		if sound.TimePosition ~= 0 then
1072
			sound.TimePosition = 0
1073
		end
1074
	end;
1075
}
1076
1077
do
1078
	-- List of all active Looped sounds
1079
	local playingLoopedSounds = {}
1080
	
1081
	-- Last seen Enum.HumanoidStateType
1082
	local activeState = nil
1083
	
1084
	-- Verify and set that "sound" is in "playingLoopedSounds".
1085
	function setSoundInPlayingLoopedSounds(sound)
1086
		for i=1, #playingLoopedSounds do
1087
			if playingLoopedSounds[i] == sound then
1088
				return
1089
			end
1090
		end	
1091
		table.insert(playingLoopedSounds,sound)
1092
	end
1093
	
1094
	-- Stop all active looped sounds except parameter "except". If "except" is not passed, all looped sounds will be stopped.
1095
	function stopPlayingLoopedSoundsExcept(except)
1096
		for i=#playingLoopedSounds,1,-1 do
1097
			if playingLoopedSounds[i] ~= except then
1098
				Util.Pause(playingLoopedSounds[i])			
1099
				table.remove(playingLoopedSounds,i)	
1100
			end
1101
		end
1102
	end
1103
	
1104
	-- Table of Enum.HumanoidStateType to handling function
1105
	local stateUpdateHandler = {
1106
		[Enum.HumanoidStateType.Dead] = function()
1107
			stopPlayingLoopedSoundsExcept()
1108
			local sound = Sounds[SFX.Died]
1109
			Util.Play(sound)
1110
		end;
1111
		
1112
		[Enum.HumanoidStateType.RunningNoPhysics] = function()
1113
			stateUpdated(Enum.HumanoidStateType.Running)
1114
		end;
1115
		
1116
		[Enum.HumanoidStateType.Running] = function()	
1117
			local sound = Sounds[SFX.Running]
1118
			stopPlayingLoopedSoundsExcept(sound)
1119
			
1120
			if Util.HorizontalSpeed(Head) > 0.5 then
1121
				Util.Resume(sound)
1122
				setSoundInPlayingLoopedSounds(sound)
1123
			else
1124
				stopPlayingLoopedSoundsExcept()
1125
			end
1126
		end;
1127
		
1128
		[Enum.HumanoidStateType.Swimming] = function()
1129
			if activeState ~= Enum.HumanoidStateType.Swimming and Util.VerticalSpeed(Head) > 0.1 then
1130
				local splashSound = Sounds[SFX.Splash]
1131
				splashSound.Volume = Util.Clamp(
1132
					Util.YForLineGivenXAndTwoPts(
1133
						Util.VerticalSpeed(Head), 
1134
						100, 0.28, 
1135
						350, 1),
1136
					0,1)
1137
				Util.Play(splashSound)
1138
			end
1139
			
1140
			do
1141
				local sound = Sounds[SFX.Swimming]
1142
				stopPlayingLoopedSoundsExcept(sound)
1143
				Util.Resume(sound)
1144
				setSoundInPlayingLoopedSounds(sound)
1145
			end
1146
		end;
1147
		
1148
		[Enum.HumanoidStateType.Climbing] = function()
1149
			local sound = Sounds[SFX.Climbing]
1150
			if Util.VerticalSpeed(Head) > 0.1 then
1151
				Util.Resume(sound)
1152
				stopPlayingLoopedSoundsExcept(sound)
1153
			else
1154
				stopPlayingLoopedSoundsExcept()
1155
			end		
1156
			setSoundInPlayingLoopedSounds(sound)
1157
		end;
1158
		
1159
		[Enum.HumanoidStateType.Jumping] = function()
1160
			if activeState == Enum.HumanoidStateType.Jumping then
1161
				return
1162
			end		
1163
			stopPlayingLoopedSoundsExcept()
1164
			local sound = Sounds[SFX.Jumping]
1165
			Util.Play(sound)
1166
		end;
1167
		
1168
		[Enum.HumanoidStateType.GettingUp] = function()
1169
			stopPlayingLoopedSoundsExcept()
1170
			local sound = Sounds[SFX.GettingUp]
1171
			Util.Play(sound)
1172
		end;
1173
		
1174
		[Enum.HumanoidStateType.Freefall] = function()
1175
			if activeState == Enum.HumanoidStateType.Freefall then
1176
				return
1177
			end
1178
			local sound = Sounds[SFX.FreeFalling]
1179
			sound.Volume = 0
1180
			stopPlayingLoopedSoundsExcept()
1181
		end;
1182
		
1183
		[Enum.HumanoidStateType.FallingDown] = function()
1184
			stopPlayingLoopedSoundsExcept()
1185
		end;
1186
		
1187
		[Enum.HumanoidStateType.Landed] = function()
1188
			stopPlayingLoopedSoundsExcept()
1189
			if Util.VerticalSpeed(Head) > 75 then
1190
				local landingSound = Sounds[SFX.Landing]
1191
				landingSound.Volume = Util.Clamp(
1192
					Util.YForLineGivenXAndTwoPts(
1193
						Util.VerticalSpeed(Head), 
1194
						50, 0, 
1195
						100, 1),
1196
					0,1)
1197
				Util.Play(landingSound)			
1198
			end
1199
		end;
1200
		
1201
		[Enum.HumanoidStateType.Seated] = function()
1202
			stopPlayingLoopedSoundsExcept()
1203
		end;	
1204
	}
1205
	
1206
	-- Handle state event fired or OnChange fired
1207
	function stateUpdated(state)
1208
		if stateUpdateHandler[state] ~= nil then
1209
			stateUpdateHandler[state]()
1210
		end
1211
		activeState = state
1212
	end
1213
	
1214
	Humanoid.Died:connect(			function() stateUpdated(Enum.HumanoidStateType.Dead) 			end)
1215
	Humanoid.Running:connect(		function() stateUpdated(Enum.HumanoidStateType.Running) 		end)
1216
	Humanoid.Swimming:connect(		function() stateUpdated(Enum.HumanoidStateType.Swimming) 		end)
1217
	Humanoid.Climbing:connect(		function() stateUpdated(Enum.HumanoidStateType.Climbing) 		end)
1218
	Humanoid.Jumping:connect(		function() stateUpdated(Enum.HumanoidStateType.Jumping) 		end)
1219
	Humanoid.GettingUp:connect(		function() stateUpdated(Enum.HumanoidStateType.GettingUp) 		end)
1220
	Humanoid.FreeFalling:connect(		function() stateUpdated(Enum.HumanoidStateType.Freefall) 		end)
1221
	Humanoid.FallingDown:connect(		function() stateUpdated(Enum.HumanoidStateType.FallingDown) 	end)
1222
	
1223
	-- required for proper handling of Landed event
1224
	Humanoid.StateChanged:connect(function(old, new)
1225
		stateUpdated(new)
1226
	end)
1227
	
1228
	
1229
	function onUpdate(stepDeltaSeconds, tickSpeedSeconds)
1230
		local stepScale = stepDeltaSeconds / tickSpeedSeconds
1231
		do
1232
			local sound = Sounds[SFX.FreeFalling]
1233
			if activeState == Enum.HumanoidStateType.Freefall then
1234
				if Head.Velocity.Y < 0 and Util.VerticalSpeed(Head) > 75 then
1235
					Util.Resume(sound)
1236
					
1237
					--Volume takes 1.1 seconds to go from volume 0 to 1
1238
					local ANIMATION_LENGTH_SECONDS = 1.1
1239
					
1240
					local normalizedIncrement = tickSpeedSeconds / ANIMATION_LENGTH_SECONDS									
1241
					sound.Volume = Util.Clamp(sound.Volume + normalizedIncrement * stepScale, 0, 1)
1242
				else
1243
					sound.Volume = 0
1244
				end			
1245
			else
1246
				Util.Pause(sound)
1247
			end
1248
		end
1249
		
1250
		do
1251
			local sound = Sounds[SFX.Running]
1252
			if activeState == Enum.HumanoidStateType.Running then
1253
				if Util.HorizontalSpeed(Head) < 0.5 then
1254
					Util.Pause(sound)
1255
				end
1256
			end
1257
		end		
1258
	end
1259
	
1260
	local lastTick = tick()
1261
	local TICK_SPEED_SECONDS = 0.25
1262
	while true do
1263
		onUpdate(tick() - lastTick,TICK_SPEED_SECONDS)
1264
		lastTick = tick()
1265
		wait(TICK_SPEED_SECONDS)
1266
	end
1267
end
1268
1269
end))
1270
Script60.Name = "Health"
1271
Script60.Parent = Model1
1272
table.insert(cors,sandbox(Script60,function()
1273
--Responsible for regening a player's humanoid's health
1274
1275
-- declarations
1276
local Figure = script.Parent
1277
local Head = Figure:WaitForChild("Head")
1278
local Humanoid = Figure:WaitForChild("Humanoid")
1279
local regening = false
1280
1281
-- regeneration
1282
function regenHealth()
1283
	if regening then return end
1284
	regening = true
1285
	
1286
	while Humanoid.Health < Humanoid.MaxHealth do
1287
		local s = wait(1)
1288
		local health = Humanoid.Health
1289
		if health > 0 and health < Humanoid.MaxHealth then
1290
			local newHealthDelta = 0.01 * s * Humanoid.MaxHealth
1291
			health = health + newHealthDelta
1292
			Humanoid.Health = math.min(health,Humanoid.MaxHealth)
1293
		end
1294
	end
1295
	
1296
	if Humanoid.Health > Humanoid.MaxHealth then
1297
		Humanoid.Health = Humanoid.MaxHealth
1298
	end
1299
	
1300
	regening = false
1301
end
1302
1303
Humanoid.HealthChanged:connect(regenHealth)
1304
  
1305
end))
1306
LocalScript61.Parent = Script0
1307
table.insert(cors,sandbox(LocalScript61,function()
1308
repeat wait() until	script:FindFirstChild("Obj").Value
1309
workspace.Camera.CameraSubject = script.Obj.Value
1310
end))
1311
LocalScript61.Disabled = true
1312
ObjectValue62.Name = "Obj"
1313
ObjectValue62.Parent = LocalScript61
1314
ObjectValue62.Value = Model1
1315
for i,v in pairs(mas:GetChildren()) do
1316
	v.Parent = workspace
1317
	pcall(function() v:MakeJoints() end)
1318
end
1319
mas:Destroy()
1320
for i,v in pairs(cors) do
1321
	spawn(function()
1322
		pcall(v)
1323
	end)
1324
end