View difference between Paste ID: ThAsL1QP and dfPzdheG
SHOW: | | - or go back to the newest paste.
1
if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
2
local Player,Mouse,mouse,UserInputService,ContextActionService = owner
3
do
4
	print("FE Compatibility code by Mokiros")
5
	script.Parent = Player.Character
6
7
	--RemoteEvent for communicating
8
	local Event = Instance.new("RemoteEvent")
9
	Event.Name = "UserInput_Event"
10
11
	--Fake event to make stuff like Mouse.KeyDown work
12
	local function fakeEvent()
13
		local t = {_fakeEvent=true,Connect=function(self,f)self.Function=f end}
14
		t.connect = t.Connect
15
		return t
16
	end
17
18
	--Creating fake input objects with fake variables
19
    local m = {Target=nil,Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent()}
20
	local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
21
	local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
22
		CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
23
	end}
24
	--Merged 2 functions into one by checking amount of arguments
25
	CAS.UnbindAction = CAS.BindAction
26
27
	--This function will trigger the events that have been :Connect()'ed
28
	local function te(self,ev,...)
29
		local t = m[ev]
30
		if t and t._fakeEvent and t.Function then
31
			t.Function(...)
32
		end
33
	end
34
	m.TrigEvent = te
35
	UIS.TrigEvent = te
36
37
	Event.OnServerEvent:Connect(function(plr,io)
38
	    if plr~=Player then return end
39
		if io.isMouse then
40
			m.Target = io.Target
41
			m.Hit = io.Hit
42
		else
43
			local b = io.UserInputState == Enum.UserInputState.Begin
44
			if io.UserInputType == Enum.UserInputType.MouseButton1 then
45
				return m:TrigEvent(b and "Button1Down" or "Button1Up")
46
			end
47
			for _,t in pairs(CAS.Actions) do
48
				for _,k in pairs(t.Keys) do
49
					if k==io.KeyCode then
50
						t.Function(t.Name,io.UserInputState,io)
51
					end
52
				end
53
			end
54
			m:TrigEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
55
			UIS:TrigEvent(b and "InputBegan" or "InputEnded",io,false)
56
	    end
57
	end)
58
	Event.Parent = NLS([==[
59
	local Player = owner
60
	local Event = script:WaitForChild("UserInput_Event")
61
62
	local UIS = game:GetService("UserInputService")
63
	local input = function(io,a)
64
		if a then return end
65
		--Since InputObject is a client-side instance, we create and pass table instead
66
		Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState})
67
	end
68
	UIS.InputBegan:Connect(input)
69
	UIS.InputEnded:Connect(input)
70
71
	local Mouse = Player:GetMouse()
72
	local h,t
73
	--Give the server mouse data 30 times every second, but only if the values changed
74
	--If player is not moving their mouse, client won't fire events
75
	while wait(1/30) do
76
		if h~=Mouse.Hit or t~=Mouse.Target then
77
			h,t=Mouse.Hit,Mouse.Target
78
			Event:FireServer({isMouse=true,Target=t,Hit=h})
79
		end
80
	end]==],Player.Character)
81
	Mouse,mouse,UserInputService,ContextActionService = m,m,UIS,CAS
82
end
83
84
85
--Converted with ttyyuu12345's model to script plugin v4
86
function sandbox(var,func)
87
	local env = getfenv(func)
88
	local newenv = setmetatable({},{
89
		__index = function(self,k)
90
			if k=="script" then
91
				return var
92
			else
93
				return env[k]
94
			end
95
		end,
96
	})
97
	setfenv(func,newenv)
98
	return func
99
end
100
print("e - kill-teleport, q - oii hate skids")
101
function swait(num)
102
	if num == 0 or num == nil then
103
		game:service("RunService").Stepped:wait(0)
104
	else
105
		for i = 0, num do
106
			game:service("RunService").Stepped:wait(0)
107
		end
108
	end
109
end
110
EffectModel = Instance.new("Model", cha)
111
Effects = {
112
  Block = {
113
    Create = function(brickcolor, cframe, x1, y1, z1, x3, y3, z3, delay, Type)
114
      local prt = CFuncs.Part.Create(EffectModel, "SmoothPlastic", 0, 0, brickcolor, "Effect", Vector3.new())
115
      prt.Anchored = true
116
      prt.CFrame = cframe
117
      local msh = CFuncs.Mesh.Create("BlockMesh", prt, "", "", Vector3.new(0, 0, 0), Vector3.new(x1, y1, z1))
118
      game:GetService("Debris"):AddItem(prt, 10)
119
      if Type == 1 or Type == nil then
120
        table.insert(Effects, {
121
          prt,
122
          "Block1",
123
          delay,
124
          x3,
125
          y3,
126
          z3,
127
          msh
128
        })
129
      elseif Type == 2 then
130
        table.insert(Effects, {
131
          prt,
132
          "Block2",
133
          delay,
134
          x3,
135
          y3,
136
          z3,
137
          msh
138
        })
139
      else
140
        table.insert(Effects, {
141
          prt,
142
          "Block3",
143
          delay,
144
          x3,
145
          y3,
146
          z3,
147
          msh
148
        })
149
      end
150
    end
151
  },
152
  Sphere = {
153
    Create = function(brickcolor, cframe, x1, y1, z1, x3, y3, z3, delay)
154
      local prt = CFuncs.Part.Create(EffectModel, "Neon", 0, 0, brickcolor, "Effect", Vector3.new())
155
      prt.Anchored = true
156
      prt.CFrame = cframe
157
      local msh = CFuncs.Mesh.Create("SpecialMesh", prt, "Sphere", "", Vector3.new(0, 0, 0), Vector3.new(x1, y1, z1))
158
      game:GetService("Debris"):AddItem(prt, 10)
159
      table.insert(Effects, {
160
        prt,
161
        "Cylinder",
162
        delay,
163
        x3,
164
        y3,
165
        z3,
166
        msh
167
      })
168
    end
169
  },
170
  Cylinder = {
171
    Create = function(brickcolor, cframe, x1, y1, z1, x3, y3, z3, delay)
172
      local prt = CFuncs.Part.Create(EffectModel, "SmoothPlastic", 0, 0, brickcolor, "Effect", Vector3.new())
173
      prt.Anchored = true
174
      prt.CFrame = cframe
175
      local msh = CFuncs.Mesh.Create("CylinderMesh", prt, "", "", Vector3.new(0, 0, 0), Vector3.new(x1, y1, z1))
176
      game:GetService("Debris"):AddItem(prt, 10)
177
      table.insert(Effects, {
178
        prt,
179
        "Cylinder",
180
        delay,
181
        x3,
182
        y3,
183
        z3,
184
        msh
185
      })
186
    end
187
  },
188
  Wave = {
189
    Create = function(brickcolor, cframe, x1, y1, z1, x3, y3, z3, delay)
190
      local prt = CFuncs.Part.Create(EffectModel, "Neon", 0, 0, brickcolor, "Effect", Vector3.new())
191
      prt.Anchored = true
192
      prt.CFrame = cframe
193
      local msh = CFuncs.Mesh.Create("SpecialMesh", prt, "FileMesh", "rbxassetid://0", Vector3.new(0, 0, 0), Vector3.new(x1 / 60, y1 / 60, z1 / 60))
194
                    Cso("158037267", tors, 10, 1)
195
        wait(0,35)
196
      game:GetService("Debris"):AddItem(prt, 10)
197
      table.insert(Effects, {
198
        prt,
199
        "Cylinder",
200
        delay,
201
        x3 / 60,
202
        y3 / 60,
203
        z3 / 60,
204
        msh
205
      })
206
    end
207
  },
208
  Ring = {
209
    Create = function(brickcolor, cframe, x1, y1, z1, x3, y3, z3, delay)
210
      local prt = CFuncs.Part.Create(EffectModel, "SmoothPlastic", 0, 0, brickcolor, "Effect", Vector3.new())
211
      prt.Anchored = true
212
      prt.CFrame = cframe
213
      local msh = CFuncs.Mesh.Create("SpecialMesh", prt, "FileMesh", "rbxassetid://3270017", Vector3.new(0, 0, 0), Vector3.new(x1, y1, z1))
214
      game:GetService("Debris"):AddItem(prt, 10)
215
      table.insert(Effects, {
216
        prt,
217
        "Cylinder",
218
        delay,
219
        x3,
220
        y3,
221
        z3,
222
        msh
223
      })
224
    end
225
  },
226
  Break = {
227
    Create = function(brickcolor, cframe, x1, y1, z1)
228
      local prt = CFuncs.Part.Create(EffectModel, "Neon", 0, 0, brickcolor, "Effect", Vector3.new(0.5, 0.5, 0.5))
229
      prt.Anchored = true
230
      prt.CFrame = cframe * CFrame.fromEulerAnglesXYZ(math.random(-50, 50), math.random(-50, 50), math.random(-50, 50))
231
      local msh = CFuncs.Mesh.Create("SpecialMesh", prt, "Sphere", "", Vector3.new(0, 0, 0), Vector3.new(x1, y1, z1))
232
      local num = math.random(10, 50) / 1000
233
      game:GetService("Debris"):AddItem(prt, 10)
234
      table.insert(Effects, {
235
        prt,
236
        "Shatter",
237
        num,
238
        prt.CFrame,
239
        math.random() - math.random(),
240
        0,
241
        math.random(50, 100) / 100
242
      })
243
    end
244
  },
245
Spiral = {
246
    Create = function(brickcolor, cframe, x1, y1, z1, x3, y3, z3, delay)
247
      local prt = CFuncs.Part.Create(EffectModel, "SmoothPlastic", 0, 0, brickcolor, "Effect", Vector3.new())
248
      prt.Anchored = true
249
      prt.CFrame = cframe
250
      local msh = CFuncs.Mesh.Create("SpecialMesh", prt, "FileMesh", "rbxassetid://1051557", Vector3.new(0, 0, 0), Vector3.new(x1, y1, z1))
251
      game:GetService("Debris"):AddItem(prt, 10)
252
      table.insert(Effects, {
253
        prt,
254
        "Cylinder",
255
        delay,
256
        x3,
257
        y3,
258
        z3,
259
        msh
260
      })
261
    end
262
  },
263
Push = {
264
    Create = function(brickcolor, cframe, x1, y1, z1, x3, y3, z3, delay)
265
      local prt = CFuncs.Part.Create(EffectModel, "SmoothPlastic", 0, 0, brickcolor, "Effect", Vector3.new())
266
      prt.Anchored = true
267
      prt.CFrame = cframe
268
      local msh = CFuncs.Mesh.Create("SpecialMesh", prt, "FileMesh", "rbxassetid://437347603", Vector3.new(0, 0, 0), Vector3.new(x1, y1, z1))
269
      game:GetService("Debris"):AddItem(prt, 10)
270
      table.insert(Effects, {
271
        prt,
272
        "Cylinder",
273
        delay,
274
        x3,
275
        y3,
276
        z3,
277
        msh
278
      })
279
    end
280
  }
281
}
282
CFuncs = {
283
    Part = {
284
        Create = function(Parent, Material, Reflectance, Transparency, BColor, Name, Size)
285
            local Part = Create("Part")({
286
                Parent = Parent,
287
                Reflectance = Reflectance,
288
                Transparency = Transparency,
289
                CanCollide = false,
290
                Locked = true,
291
                BrickColor = BrickColor.new(tostring(BColor)),
292
                Name = Name,
293
                Size = Size,
294
                Material = Material
295
            })
296
            RemoveOutlines(Part)
297
            return Part
298
        end
299
    },
300
    Mesh = {
301
        Create = function(Mesh, Part, MeshType, MeshId, OffSet, Scale)
302
            local Msh = Create(Mesh)({
303
                Parent = Part,
304
                Offset = OffSet,
305
                Scale = Scale
306
            })
307
            if Mesh == "SpecialMesh" then
308
                Msh.MeshType = MeshType
309
                Msh.MeshId = MeshId
310
            end
311
            return Msh
312
        end
313
    },
314
    Mesh = {
315
        Create = function(Mesh, Part, MeshType, MeshId, OffSet, Scale)
316
            local Msh = Create(Mesh)({
317
                Parent = Part,
318
                Offset = OffSet,
319
                Scale = Scale
320
            })
321
            if Mesh == "SpecialMesh" then
322
                Msh.MeshType = MeshType
323
                Msh.MeshId = MeshId
324
            end
325
            return Msh
326
        end
327
    },
328
    Weld = {
329
        Create = function(Parent, Part0, Part1, C0, C1)
330
            local Weld = Create("Weld")({
331
                Parent = Parent,
332
                Part0 = Part0,
333
                Part1 = Part1,
334
                C0 = C0,
335
                C1 = C1
336
            })
337
            return Weld
338
        end
339
    },
340
    Sound = {
341
        Create = function(id, par, vol, pit)
342
            coroutine.resume(coroutine.create(function()
343
                local S = Create("Sound")({
344
                    Volume = vol,
345
                    Pitch = pit or 1,
346
                    SoundId = id,
347
                    Parent = par or workspace
348
                })
349
                wait()
350
                S:play()
351
                game:GetService("Debris"):AddItem(S, 6)
352
            end))
353
        end
354
    },
355
    ParticleEmitter = {
356
        Create = function(Parent, Color1, Color2, LightEmission, Size, Texture, Transparency, ZOffset, Accel, Drag, LockedToPart, VelocityInheritance, EmissionDirection, Enabled, LifeTime, Rate, Rotation, RotSpeed, Speed, VelocitySpread)
357
            local fp = Create("ParticleEmitter")({
358
                Parent = Parent,
359
                Color = ColorSequence.new(Color1, Color2),
360
                LightEmission = LightEmission,
361
                Size = Size,
362
                Texture = Texture,
363
                Transparency = Transparency,
364
                ZOffset = ZOffset,
365
                Acceleration = Accel,
366
                Drag = Drag,
367
                LockedToPart = LockedToPart,
368
                VelocityInheritance = VelocityInheritance,
369
                EmissionDirection = EmissionDirection,
370
                Enabled = Enabled,
371
                Lifetime = LifeTime,
372
                Rate = Rate,
373
                Rotation = Rotation,
374
                RotSpeed = RotSpeed,
375
                Speed = Speed,
376
                VelocitySpread = VelocitySpread
377
            })
378
            return fp
379
        end
380
    }
381
}
382
function Cso(ID, PARENT, VOLUME, PITCH)
383
    local NSound = nil
384
    coroutine.resume(coroutine.create(function()
385
        NSound = IT("Sound", PARENT)
386
        NSound.Volume = VOLUME
387
        NSound.Pitch = PITCH
388
        NSound.SoundId = "http://www.roblox.com/asset/?id="..ID
389
        swait()
390
        NSound:play()
391
        game:GetService("Debris"):AddItem(NSound, 50)
392
    end))
393
    return NSound
394
end
395
function chafunc(text, color)
396
local char = owner.Character
397
	local chat = coroutine.wrap(function()
398
		if char:FindFirstChild("TalkingBillBoard") ~= nil then
399
			char:FindFirstChild("TalkingBillBoard"):destroy()
400
		end
401
		local naeeym2 = Instance.new("BillboardGui", char)
402
		naeeym2.Size = UDim2.new(0, 100, 0, 40)
403
		naeeym2.StudsOffset = Vector3.new(0, 3, 0)
404
		naeeym2.Adornee = hed
405
		naeeym2.Name = "TalkingBillBoard"
406
		local tecks2 = Instance.new("TextLabel", naeeym2)
407
		tecks2.BackgroundTransparency = 1
408
		tecks2.BorderSizePixel = 0
409
		tecks2.Text = ""
410
		tecks2.Font = "Fantasy"
411
		tecks2.TextSize = 30
412
		tecks2.TextStrokeTransparency = 0
413
		tecks2.TextColor3 = color
414
		tecks2.TextStrokeColor3 = Color3.new(232, 186, 200)
415
		tecks2.Size = UDim2.new(1, 0, 0.5, 0)
416
		local tecks3 = Instance.new("TextLabel", naeeym2)
417
		tecks3.BackgroundTransparency = 1
418
		tecks3.BorderSizePixel = 0
419
		tecks3.Text = ""
420
		tecks3.Font = "Fantasy"
421
		tecks3.TextSize = 30
422
		tecks3.TextStrokeTransparency = 0
423
		tecks3.TextColor3 = Color3.new(0, 0, 0)
424
		tecks3.TextStrokeColor3 = color
425
		tecks3.Size = UDim2.new(1, 0, 0.5, 0)
426
		coroutine.resume(coroutine.create(function()
427
			while true do
428
				swait(1)
429
				tecks2.Position = UDim2.new(0, math.random(-5, 5), 0, math.random(-5, 5))
430
				tecks3.Position = UDim2.new(0, math.random(-5, 5), 0, math.random(-5, 5))
431
				tecks2.Rotation = math.random(-5, 5)
432
				tecks3.Rotation = math.random(-5, 5)
433
			end
434
		end))
435
		for i = 1, string.len(text) do
436
			tecks2.Text = string.sub(text, 1, i)
437
			tecks3.Text = string.sub(text, 1, i)
438
			swait(1)
439
		end
440
		wait(1)
441
		local randomrot = math.random(1, 2)
442
		if randomrot == 1 then
443
			for i = 1, 50 do
444
				swait()
445
				tecks2.Rotation = tecks2.Rotation - 0.75
446
				tecks2.TextStrokeTransparency = tecks2.TextStrokeTransparency + 0.04
447
				tecks2.TextTransparency = tecks2.TextTransparency + 0.04
448
				tecks3.Rotation = tecks2.Rotation + 0.75
449
				tecks3.TextStrokeTransparency = tecks2.TextStrokeTransparency + 0.04
450
				tecks3.TextTransparency = tecks2.TextTransparency + 0.04
451
			end
452
		elseif randomrot == 2 then
453
			for i = 1, 50 do
454
				swait()
455
				tecks2.Rotation = tecks2.Rotation + 0.75
456
				tecks2.TextStrokeTransparency = tecks2.TextStrokeTransparency + 0.04
457
				tecks2.TextTransparency = tecks2.TextTransparency + 0.04
458
				tecks3.Rotation = tecks2.Rotation - 0.75
459
				tecks3.TextStrokeTransparency = tecks2.TextStrokeTransparency + 0.04
460
				tecks3.TextTransparency = tecks2.TextTransparency + 0.04
461
			end
462
		end
463
		naeeym2:Destroy()
464
	end)
465
	chat()
466
end
467
468
cors = {}
469
mas = Instance.new("Model",game:GetService("Lighting"))
470
Model0 = Instance.new("Model")
471
Part1 = Instance.new("Part")
472
Decal2 = Instance.new("Decal")
473
Sound3 = Instance.new("Sound")
474
Sound4 = Instance.new("Sound")
475
Sound5 = Instance.new("Sound")
476
Sound6 = Instance.new("Sound")
477
Sound7 = Instance.new("Sound")
478
Sound8 = Instance.new("Sound")
479
Sound9 = Instance.new("Sound")
480
Sound10 = Instance.new("Sound")
481
Sound11 = Instance.new("Sound")
482
CylinderMesh12 = Instance.new("CylinderMesh")
483
Part13 = Instance.new("Part")
484
Decal14 = Instance.new("Decal")
485
Motor6D15 = Instance.new("Motor6D")
486
Motor6D16 = Instance.new("Motor6D")
487
Motor6D17 = Instance.new("Motor6D")
488
Motor6D18 = Instance.new("Motor6D")
489
Motor6D19 = Instance.new("Motor6D")
490
Part20 = Instance.new("Part")
491
Part21 = Instance.new("Part")
492
Part22 = Instance.new("Part")
493
Part23 = Instance.new("Part")
494
Humanoid24 = Instance.new("Humanoid")
495
Part25 = Instance.new("Part")
496
Motor6D26 = Instance.new("Motor6D")
497
Script27 = Instance.new("Script")
498
LocalScript28 = Instance.new("LocalScript")
499
LocalScript29 = Instance.new("LocalScript")
500
StringValue30 = Instance.new("StringValue")
501
Animation31 = Instance.new("Animation")
502
NumberValue32 = Instance.new("NumberValue")
503
Animation33 = Instance.new("Animation")
504
NumberValue34 = Instance.new("NumberValue")
505
StringValue35 = Instance.new("StringValue")
506
Animation36 = Instance.new("Animation")
507
StringValue37 = Instance.new("StringValue")
508
Animation38 = Instance.new("Animation")
509
StringValue39 = Instance.new("StringValue")
510
Animation40 = Instance.new("Animation")
511
StringValue41 = Instance.new("StringValue")
512
Animation42 = Instance.new("Animation")
513
StringValue43 = Instance.new("StringValue")
514
Animation44 = Instance.new("Animation")
515
StringValue45 = Instance.new("StringValue")
516
Animation46 = Instance.new("Animation")
517
StringValue47 = Instance.new("StringValue")
518
Animation48 = Instance.new("Animation")
519
Script49 = Instance.new("Script")
520
BodyColors50 = Instance.new("BodyColors")
521
Model0.Name = "oii"
522
Model0.Parent = mas
523
Part1.Name = "Head"
524
Part1.Parent = Model0
525
Part1.CFrame = CFrame.new(13.7936363, 4.50001431, -22.1235237, 0.993757904, 0, -0.111558832, 0, 1, 0, 0.111558832, 0, 0.993757904)
526
Part1.Orientation = Vector3.new(0, -6.40999985, 0)
527
Part1.Position = Vector3.new(13.7936363, 4.50001431, -22.1235237)
528
Part1.Rotation = Vector3.new(0, -6.40999985, 0)
529
Part1.Color = Color3.new(0.803922, 0, 0)
530
Part1.Velocity = Vector3.new(5.33474325e-42, 0, -4.77520478e-41)
531
Part1.Size = Vector3.new(2, 1, 1)
532
Part1.BrickColor = BrickColor.new("Really red")
533
Part1.Locked = true
534
Part1.TopSurface = Enum.SurfaceType.Smooth
535
Part1.brickColor = BrickColor.new("Really red")
536
Part1.FormFactor = Enum.FormFactor.Symmetric
537
Part1.formFactor = Enum.FormFactor.Symmetric
538
Decal2.Name = "face"
539
Decal2.Parent = Part1
540
Decal2.Texture = "rbxasset://textures/face.png"
541
Sound3.Name = "GettingUp"
542
Sound3.Parent = Part1
543
Sound3.MaxDistance = 150
544
Sound3.EmitterSize = 5
545
Sound3.MinDistance = 5
546
Sound3.SoundId = "rbxasset://sounds/action_get_up.mp3"
547
Sound3.Volume = 0.64999997615814
548
Sound4.Name = "Died"
549
Sound4.Parent = Part1
550
Sound4.MaxDistance = 150
551
Sound4.EmitterSize = 5
552
Sound4.MinDistance = 5
553
Sound4.SoundId = "rbxasset://sounds/uuhhh.mp3"
554
Sound4.Volume = 0.64999997615814
555
Sound5.Name = "FreeFalling"
556
Sound5.Parent = Part1
557
Sound5.Looped = true
558
Sound5.TimePosition = 0.52838909903676
559
Sound5.MaxDistance = 150
560
Sound5.EmitterSize = 5
561
Sound5.MinDistance = 5
562
Sound5.SoundId = "rbxasset://sounds/action_falling.mp3"
563
Sound5.Volume = 0
564
Sound6.Name = "Jumping"
565
Sound6.Parent = Part1
566
Sound6.MaxDistance = 150
567
Sound6.EmitterSize = 5
568
Sound6.MinDistance = 5
569
Sound6.SoundId = "rbxasset://sounds/action_jump.mp3"
570
Sound6.Volume = 0.64999997615814
571
Sound7.Name = "Landing"
572
Sound7.Parent = Part1
573
Sound7.MaxDistance = 150
574
Sound7.EmitterSize = 5
575
Sound7.MinDistance = 5
576
Sound7.SoundId = "rbxasset://sounds/action_jump_land.mp3"
577
Sound7.Volume = 1
578
Sound8.Name = "Splash"
579
Sound8.Parent = Part1
580
Sound8.MaxDistance = 150
581
Sound8.EmitterSize = 5
582
Sound8.MinDistance = 5
583
Sound8.SoundId = "rbxasset://sounds/impact_water.mp3"
584
Sound8.Volume = 0.64999997615814
585
Sound9.Name = "Running"
586
Sound9.Parent = Part1
587
Sound9.Looped = true
588
Sound9.TimePosition = 1.7229757305085
589
Sound9.MaxDistance = 150
590
Sound9.EmitterSize = 5
591
Sound9.MinDistance = 5
592
Sound9.Pitch = 1.8500000238419
593
Sound9.PlaybackSpeed = 1.8500000238419
594
Sound9.SoundId = "rbxasset://sounds/action_footsteps_plastic.mp3"
595
Sound9.Volume = 0.64999997615814
596
Sound10.Name = "Swimming"
597
Sound10.Parent = Part1
598
Sound10.Looped = true
599
Sound10.MaxDistance = 150
600
Sound10.EmitterSize = 5
601
Sound10.MinDistance = 5
602
Sound10.Pitch = 1.6000000238419
603
Sound10.PlaybackSpeed = 1.6000000238419
604
Sound10.SoundId = "rbxasset://sounds/action_swim.mp3"
605
Sound10.Volume = 0.64999997615814
606
Sound11.Name = "Climbing"
607
Sound11.Parent = Part1
608
Sound11.Looped = true
609
Sound11.MaxDistance = 150
610
Sound11.EmitterSize = 5
611
Sound11.MinDistance = 5
612
Sound11.SoundId = "rbxasset://sounds/action_footsteps_plastic.mp3"
613
Sound11.Volume = 0.64999997615814
614
CylinderMesh12.Parent = Part1
615
CylinderMesh12.Scale = Vector3.new(1.29999995, 1.29999995, 1.29999995)
616
Part13.Name = "Torso"
617
Part13.Parent = Model0
618
Part13.CFrame = CFrame.new(13.7936363, 3.00001407, -22.1235237, 0.993757904, 0, -0.111558832, 0, 1, 0, 0.111558832, 0, 0.993757904)
619
Part13.Orientation = Vector3.new(0, -6.40999985, 0)
620
Part13.Position = Vector3.new(13.7936363, 3.00001407, -22.1235237)
621
Part13.Rotation = Vector3.new(0, -6.40999985, 0)
622
Part13.Color = Color3.new(1, 1, 0)
623
Part13.Velocity = Vector3.new(5.33474325e-42, 0, -4.77520478e-41)
624
Part13.Size = Vector3.new(2, 2, 1)
625
Part13.BrickColor = BrickColor.new("New Yeller")
626
Part13.LeftParamA = 0
627
Part13.LeftParamB = 0
628
Part13.LeftSurface = Enum.SurfaceType.Weld
629
Part13.Locked = true
630
Part13.RightParamA = 0
631
Part13.RightParamB = 0
632
Part13.RightSurface = Enum.SurfaceType.Weld
633
Part13.brickColor = BrickColor.new("New Yeller")
634
Part13.FormFactor = Enum.FormFactor.Symmetric
635
Part13.formFactor = Enum.FormFactor.Symmetric
636
Decal14.Name = "roblox"
637
Decal14.Parent = Part13
638
Motor6D15.Name = "Right Shoulder"
639
Motor6D15.Parent = Part13
640
Motor6D15.MaxVelocity = 0.10000000149012
641
Motor6D15.C0 = CFrame.new(1, 0.5, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
642
Motor6D15.C1 = CFrame.new(-0.5, 0.5, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
643
Motor6D15.Part0 = Part13
644
Motor6D15.Part1 = Part21
645
Motor6D15.part1 = Part21
646
Motor6D16.Name = "Left Shoulder"
647
Motor6D16.Parent = Part13
648
Motor6D16.MaxVelocity = 0.10000000149012
649
Motor6D16.C0 = CFrame.new(-1, 0.5, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
650
Motor6D16.C1 = CFrame.new(0.5, 0.5, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
651
Motor6D16.Part0 = Part13
652
Motor6D16.Part1 = Part20
653
Motor6D16.part1 = Part20
654
Motor6D17.Name = "Right Hip"
655
Motor6D17.Parent = Part13
656
Motor6D17.MaxVelocity = 0.10000000149012
657
Motor6D17.C0 = CFrame.new(1, -1, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
658
Motor6D17.C1 = CFrame.new(0.5, 1, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
659
Motor6D17.Part0 = Part13
660
Motor6D17.Part1 = Part23
661
Motor6D17.part1 = Part23
662
Motor6D18.Name = "Left Hip"
663
Motor6D18.Parent = Part13
664
Motor6D18.MaxVelocity = 0.10000000149012
665
Motor6D18.C0 = CFrame.new(-1, -1, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
666
Motor6D18.C1 = CFrame.new(-0.5, 1, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
667
Motor6D18.Part0 = Part13
668
Motor6D18.Part1 = Part22
669
Motor6D18.part1 = Part22
670
Motor6D19.Name = "Neck"
671
Motor6D19.Parent = Part13
672
Motor6D19.MaxVelocity = 0.10000000149012
673
Motor6D19.C0 = CFrame.new(0, 1, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0)
674
Motor6D19.C1 = CFrame.new(0, -0.5, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0)
675
Motor6D19.Part0 = Part13
676
Motor6D19.Part1 = Part1
677
Motor6D19.part1 = Part1
678
Part20.Name = "Left Arm"
679
Part20.Parent = Model0
680
Part20.CFrame = CFrame.new(12.3029995, 3.00001407, -22.2908611, 0.993757904, 0, -0.111558832, 0, 1, 0, 0.111558832, 0, 0.993757904)
681
Part20.Orientation = Vector3.new(0, -6.40999985, 0)
682
Part20.Position = Vector3.new(12.3029995, 3.00001407, -22.2908611)
683
Part20.Rotation = Vector3.new(0, -6.40999985, 0)
684
Part20.Color = Color3.new(0.803922, 0, 0)
685
Part20.Velocity = Vector3.new(5.33474325e-42, 0, -4.77520478e-41)
686
Part20.Size = Vector3.new(1, 2, 1)
687
Part20.BrickColor = BrickColor.new("Really red")
688
Part20.CanCollide = false
689
Part20.Locked = true
690
Part20.brickColor = BrickColor.new("Really red")
691
Part20.FormFactor = Enum.FormFactor.Symmetric
692
Part20.formFactor = Enum.FormFactor.Symmetric
693
Part21.Name = "Right Arm"
694
Part21.Parent = Model0
695
Part21.CFrame = CFrame.new(15.2842731, 3.00001407, -21.9561863, 0.993757904, 0, -0.111558832, 0, 1, 0, 0.111558832, 0, 0.993757904)
696
Part21.Orientation = Vector3.new(0, -6.40999985, 0)
697
Part21.Position = Vector3.new(15.2842731, 3.00001407, -21.9561863)
698
Part21.Rotation = Vector3.new(0, -6.40999985, 0)
699
Part21.Color = Color3.new(0.803922, 0, 0)
700
Part21.Velocity = Vector3.new(5.33474325e-42, 0, -4.77520478e-41)
701
Part21.Size = Vector3.new(1, 2, 1)
702
Part21.BrickColor = BrickColor.new("Really red")
703
Part21.CanCollide = false
704
Part21.Locked = true
705
Part21.brickColor = BrickColor.new("Really red")
706
Part21.FormFactor = Enum.FormFactor.Symmetric
707
Part21.formFactor = Enum.FormFactor.Symmetric
708
Part22.Name = "Left Leg"
709
Part22.Parent = Model0
710
Part22.CFrame = CFrame.new(13.2967577, 1.00001407, -22.1793022, 0.993757904, 0, -0.111558832, 0, 1, 0, 0.111558832, 0, 0.993757904)
711
Part22.Orientation = Vector3.new(0, -6.40999985, 0)
712
Part22.Position = Vector3.new(13.2967577, 1.00001407, -22.1793022)
713
Part22.Rotation = Vector3.new(0, -6.40999985, 0)
714
Part22.Color = Color3.new(1, 1, 0)
715
Part22.Velocity = Vector3.new(5.33474325e-42, 0, -4.77520478e-41)
716
Part22.Size = Vector3.new(1, 2, 1)
717
Part22.BottomSurface = Enum.SurfaceType.Smooth
718
Part22.BrickColor = BrickColor.new("New Yeller")
719
Part22.CanCollide = false
720
Part22.Locked = true
721
Part22.brickColor = BrickColor.new("New Yeller")
722
Part22.FormFactor = Enum.FormFactor.Symmetric
723
Part22.formFactor = Enum.FormFactor.Symmetric
724
Part23.Name = "Right Leg"
725
Part23.Parent = Model0
726
Part23.CFrame = CFrame.new(14.2905149, 1.00001407, -22.0677452, 0.993757904, 0, -0.111558832, 0, 1, 0, 0.111558832, 0, 0.993757904)
727
Part23.Orientation = Vector3.new(0, -6.40999985, 0)
728
Part23.Position = Vector3.new(14.2905149, 1.00001407, -22.0677452)
729
Part23.Rotation = Vector3.new(0, -6.40999985, 0)
730
Part23.Color = Color3.new(1, 1, 0)
731
Part23.Velocity = Vector3.new(5.33474325e-42, 0, -4.77520478e-41)
732
Part23.Size = Vector3.new(1, 2, 1)
733
Part23.BottomSurface = Enum.SurfaceType.Smooth
734
Part23.BrickColor = BrickColor.new("New Yeller")
735
Part23.CanCollide = false
736
Part23.Locked = true
737
Part23.brickColor = BrickColor.new("New Yeller")
738
Part23.FormFactor = Enum.FormFactor.Symmetric
739
Part23.formFactor = Enum.FormFactor.Symmetric
740
Humanoid24.Parent = Model0
741
Humanoid24.LeftLeg = Part22
742
Humanoid24.RightLeg = Part23
743
Humanoid24.Torso = Part25
744
Part25.Name = "HumanoidRootPart"
745
Part25.Parent = Model0
746
Part25.CFrame = CFrame.new(13.7936363, 3.00001407, -22.1235237, 0.993757904, 0, -0.111558832, 0, 1, 0, 0.111558832, 0, 0.993757904)
747
Part25.Orientation = Vector3.new(0, -6.40999985, 0)
748
Part25.Position = Vector3.new(13.7936363, 3.00001407, -22.1235237)
749
Part25.Rotation = Vector3.new(0, -6.40999985, 0)
750
Part25.Transparency = 1
751
Part25.Velocity = Vector3.new(5.33474325e-42, 0, -4.77520478e-41)
752
Part25.Size = Vector3.new(2, 2, 1)
753
Part25.BottomSurface = Enum.SurfaceType.Smooth
754
Part25.CanCollide = false
755
Part25.LeftParamA = 0
756
Part25.LeftParamB = 0
757
Part25.Locked = true
758
Part25.RightParamA = 0
759
Part25.RightParamB = 0
760
Part25.TopSurface = Enum.SurfaceType.Smooth
761
Part25.FormFactor = Enum.FormFactor.Symmetric
762
Part25.formFactor = Enum.FormFactor.Symmetric
763
Motor6D26.Name = "RootJoint"
764
Motor6D26.Parent = Part25
765
Motor6D26.MaxVelocity = 0.10000000149012
766
Motor6D26.C0 = CFrame.new(0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0)
767
Motor6D26.C1 = CFrame.new(0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0)
768
Motor6D26.Part0 = Part25
769
Motor6D26.Part1 = Part13
770
Motor6D26.part1 = Part13
771
Script27.Name = "Sound"
772
Script27.Parent = Model0
773
table.insert(cors,sandbox(Script27,function()
774
--[[
775
	Author: @spotco
776
	This script creates sounds which are placed under the character head.
777
	These sounds are used by the "LocalSound" script.
778
	
779
	To modify this script, copy it to your "StarterPlayer/StarterCharacterScripts" folder keeping the same script name ("Sound").
780
	The default Sound script loaded for every character will then be replaced with your copy of the script.
781
]]--
782
783
function CreateNewSound(name, id, looped, pitch, parent)
784
	local sound = Instance.new("Sound")
785
	sound.SoundId = id
786
	sound.Name = name
787
	sound.archivable = false
788
	sound.Parent = parent
789
	sound.Pitch = pitch
790
	sound.Looped = looped
791
	
792
	sound.MinDistance = 5
793
	sound.MaxDistance = 150
794
	sound.Volume = 0.65
795
	
796
	return sound
797
end
798
799
local head = script.Parent:FindFirstChild("Head")
800
if head == nil then
801
	error("Sound script parent has no child Head.")
802
	return
803
end
804
805
806
CreateNewSound("GettingUp", 	"rbxasset://sounds/action_get_up.mp3",					false, 	1,		head)
807
CreateNewSound("Died", 		"rbxasset://sounds/uuhhh.mp3",							false, 	1,		head) 
808
CreateNewSound("FreeFalling", 	"rbxasset://sounds/action_falling.mp3",				true,	1,		head)
809
CreateNewSound("Jumping", 		"rbxasset://sounds/action_jump.mp3",					false,	1,		head)
810
CreateNewSound("Landing", 		"rbxasset://sounds/action_jump_land.mp3",				false,	1,		head)
811
CreateNewSound("Splash", 		"rbxasset://sounds/impact_water.mp3",					false, 	1,		head)
812
CreateNewSound("Running", 		"rbxasset://sounds/action_footsteps_plastic.mp3",		true, 	1.85,	head)
813
CreateNewSound("Swimming", 	"rbxasset://sounds/action_swim.mp3",					true,	1.6,	head)
814
CreateNewSound("Climbing", 	"rbxasset://sounds/action_footsteps_plastic.mp3",		true,	1,		head)
815
end))
816
LocalScript28.Name = "LocalSound"
817
LocalScript28.Parent = Script27
818
table.insert(cors,sandbox(LocalScript28,function()
819
--[[
820
	Author: @spotco
821
	This script runs locally for the player of the given humanoid.
822
	This script triggers humanoid sound play/pause actions locally.
823
	
824
	The Playing/TimePosition properties of Sound objects bypass FilteringEnabled, so this triggers the sound
825
	immediately for the player and is replicated to all other players.
826
	
827
	This script is optimized to reduce network traffic through minimizing the amount of property replication.
828
]]--
829
830
--All sounds are referenced by this ID
831
local SFX = {
832
	Died = 0;
833
	Running = 1;
834
	Swimming = 2;
835
	Climbing = 3,
836
	Jumping = 4;
837
	GettingUp = 5;
838
	FreeFalling = 6;
839
	FallingDown = 7;
840
	Landing = 8;
841
	Splash = 9;
842
}
843
844
local Humanoid = nil
845
local Head = nil
846
847
--SFX ID to Sound object
848
local Sounds = {}
849
850
do
851
	local Figure = script.Parent.Parent
852
	Head = Figure:WaitForChild("Head")
853
	while not Humanoid do
854
		for _,NewHumanoid in pairs(Figure:GetChildren()) do
855
			if NewHumanoid:IsA("Humanoid") then
856
				Humanoid = NewHumanoid
857
				break
858
			end
859
		end
860
		Figure.ChildAdded:wait()
861
	end
862
	
863
	Sounds[SFX.Died] = 			Head:WaitForChild("Died")
864
	Sounds[SFX.Running] = 		Head:WaitForChild("Running")
865
	Sounds[SFX.Swimming] = 	Head:WaitForChild("Swimming")
866
	Sounds[SFX.Climbing] = 	Head:WaitForChild("Climbing")
867
	Sounds[SFX.Jumping] = 		Head:WaitForChild("Jumping")
868
	Sounds[SFX.GettingUp] = 	Head:WaitForChild("GettingUp")
869
	Sounds[SFX.FreeFalling] = 	Head:WaitForChild("FreeFalling")
870
	Sounds[SFX.Landing] = 		Head:WaitForChild("Landing")
871
	Sounds[SFX.Splash] = 		Head:WaitForChild("Splash")
872
end
873
874
local Util
875
Util = {
876
	
877
	--Define linear relationship between (pt1x,pt2x) and (pt2x,pt2y). Evaluate this at x.
878
	YForLineGivenXAndTwoPts = function(x,pt1x,pt1y,pt2x,pt2y)
879
		--(y - y1)/(x - x1) = m
880
		local m = (pt1y - pt2y) / (pt1x - pt2x)
881
		--float b = pt1.y - m * pt1.x;
882
		local b = (pt1y - m * pt1x)
883
		return m * x + b
884
	end;
885
	
886
	--Clamps the value of "val" between the "min" and "max"
887
	Clamp = function(val,min,max)
888
		return math.min(max,math.max(min,val))	
889
	end;
890
	
891
	--Gets the horizontal (x,z) velocity magnitude of the given part
892
	HorizontalSpeed = function(Head)
893
		local hVel = Head.Velocity + Vector3.new(0,-Head.Velocity.Y,0)
894
		return hVel.magnitude	
895
	end;
896
	
897
	--Gets the vertical (y) velocity magnitude of the given part
898
	VerticalSpeed = function(Head)
899
		return math.abs(Head.Velocity.Y)
900
	end;
901
	
902
	--Setting Playing/TimePosition values directly result in less network traffic than Play/Pause/Resume/Stop
903
	--If these properties are enabled, use them.
904
	Play = function(sound)		
905
		if sound.TimePosition ~= 0 then
906
			sound.TimePosition = 0
907
		end
908
		if not sound.IsPlaying then
909
			sound.Playing = true
910
		end
911
	end;
912
	Pause = function(sound)
913
		if sound.IsPlaying then
914
			sound.Playing = false
915
		end
916
	end;
917
	Resume = function(sound)
918
		if not sound.IsPlaying then
919
			sound.Playing = true
920
		end
921
	end;
922
	Stop = function(sound)
923
		if sound.IsPlaying then
924
			sound.Playing = false
925
		end
926
		if sound.TimePosition ~= 0 then
927
			sound.TimePosition = 0
928
		end
929
	end;
930
}
931
932
do
933
	-- List of all active Looped sounds
934
	local playingLoopedSounds = {}
935
	
936
	-- Last seen Enum.HumanoidStateType
937
	local activeState = nil
938
	
939
	-- Verify and set that "sound" is in "playingLoopedSounds".
940
	function setSoundInPlayingLoopedSounds(sound)
941
		for i=1, #playingLoopedSounds do
942
			if playingLoopedSounds[i] == sound then
943
				return
944
			end
945
		end	
946
		table.insert(playingLoopedSounds,sound)
947
	end
948
	
949
	-- Stop all active looped sounds except parameter "except". If "except" is not passed, all looped sounds will be stopped.
950
	function stopPlayingLoopedSoundsExcept(except)
951
		for i=#playingLoopedSounds,1,-1 do
952
			if playingLoopedSounds[i] ~= except then
953
				Util.Pause(playingLoopedSounds[i])			
954
				table.remove(playingLoopedSounds,i)	
955
			end
956
		end
957
	end
958
	
959
	-- Table of Enum.HumanoidStateType to handling function
960
	local stateUpdateHandler = {
961
		[Enum.HumanoidStateType.Dead] = function()
962
			stopPlayingLoopedSoundsExcept()
963
			local sound = Sounds[SFX.Died]
964
			Util.Play(sound)
965
		end;
966
		
967
		[Enum.HumanoidStateType.RunningNoPhysics] = function()
968
			stateUpdated(Enum.HumanoidStateType.Running)
969
		end;
970
		
971
		[Enum.HumanoidStateType.Running] = function()	
972
			local sound = Sounds[SFX.Running]
973
			stopPlayingLoopedSoundsExcept(sound)
974
			
975
			if Util.HorizontalSpeed(Head) > 0.5 then
976
				Util.Resume(sound)
977
				setSoundInPlayingLoopedSounds(sound)
978
			else
979
				stopPlayingLoopedSoundsExcept()
980
			end
981
		end;
982
		
983
		[Enum.HumanoidStateType.Swimming] = function()
984
			if activeState ~= Enum.HumanoidStateType.Swimming and Util.VerticalSpeed(Head) > 0.1 then
985
				local splashSound = Sounds[SFX.Splash]
986
				splashSound.Volume = Util.Clamp(
987
					Util.YForLineGivenXAndTwoPts(
988
						Util.VerticalSpeed(Head), 
989
						100, 0.28, 
990
						350, 1),
991
					0,1)
992
				Util.Play(splashSound)
993
			end
994
			
995
			do
996
				local sound = Sounds[SFX.Swimming]
997
				stopPlayingLoopedSoundsExcept(sound)
998
				Util.Resume(sound)
999
				setSoundInPlayingLoopedSounds(sound)
1000
			end
1001
		end;
1002
		
1003
		[Enum.HumanoidStateType.Climbing] = function()
1004
			local sound = Sounds[SFX.Climbing]
1005
			if Util.VerticalSpeed(Head) > 0.1 then
1006
				Util.Resume(sound)
1007
				stopPlayingLoopedSoundsExcept(sound)
1008
			else
1009
				stopPlayingLoopedSoundsExcept()
1010
			end		
1011
			setSoundInPlayingLoopedSounds(sound)
1012
		end;
1013
		
1014
		[Enum.HumanoidStateType.Jumping] = function()
1015
			if activeState == Enum.HumanoidStateType.Jumping then
1016
				return
1017
			end		
1018
			stopPlayingLoopedSoundsExcept()
1019
			local sound = Sounds[SFX.Jumping]
1020
			Util.Play(sound)
1021
		end;
1022
		
1023
		[Enum.HumanoidStateType.GettingUp] = function()
1024
			stopPlayingLoopedSoundsExcept()
1025
			local sound = Sounds[SFX.GettingUp]
1026
			Util.Play(sound)
1027
		end;
1028
		
1029
		[Enum.HumanoidStateType.Freefall] = function()
1030
			if activeState == Enum.HumanoidStateType.Freefall then
1031
				return
1032
			end
1033
			local sound = Sounds[SFX.FreeFalling]
1034
			sound.Volume = 0
1035
			stopPlayingLoopedSoundsExcept()
1036
		end;
1037
		
1038
		[Enum.HumanoidStateType.FallingDown] = function()
1039
			stopPlayingLoopedSoundsExcept()
1040
		end;
1041
		
1042
		[Enum.HumanoidStateType.Landed] = function()
1043
			stopPlayingLoopedSoundsExcept()
1044
			if Util.VerticalSpeed(Head) > 75 then
1045
				local landingSound = Sounds[SFX.Landing]
1046
				landingSound.Volume = Util.Clamp(
1047
					Util.YForLineGivenXAndTwoPts(
1048
						Util.VerticalSpeed(Head), 
1049
						50, 0, 
1050
						100, 1),
1051
					0,1)
1052
				Util.Play(landingSound)			
1053
			end
1054
		end;
1055
		
1056
		[Enum.HumanoidStateType.Seated] = function()
1057
			stopPlayingLoopedSoundsExcept()
1058
		end;	
1059
	}
1060
	
1061
	-- Handle state event fired or OnChange fired
1062
	function stateUpdated(state)
1063
		if stateUpdateHandler[state] ~= nil then
1064
			stateUpdateHandler[state]()
1065
		end
1066
		activeState = state
1067
	end
1068
	
1069
	Humanoid.Died:connect(			function() stateUpdated(Enum.HumanoidStateType.Dead) 			end)
1070
	Humanoid.Running:connect(		function() stateUpdated(Enum.HumanoidStateType.Running) 		end)
1071
	Humanoid.Swimming:connect(		function() stateUpdated(Enum.HumanoidStateType.Swimming) 		end)
1072
	Humanoid.Climbing:connect(		function() stateUpdated(Enum.HumanoidStateType.Climbing) 		end)
1073
	Humanoid.Jumping:connect(		function() stateUpdated(Enum.HumanoidStateType.Jumping) 		end)
1074
	Humanoid.GettingUp:connect(		function() stateUpdated(Enum.HumanoidStateType.GettingUp) 		end)
1075
	Humanoid.FreeFalling:connect(		function() stateUpdated(Enum.HumanoidStateType.Freefall) 		end)
1076
	Humanoid.FallingDown:connect(		function() stateUpdated(Enum.HumanoidStateType.FallingDown) 	end)
1077
	
1078
	-- required for proper handling of Landed event
1079
	Humanoid.StateChanged:connect(function(old, new)
1080
		stateUpdated(new)
1081
	end)
1082
	
1083
	
1084
	function onUpdate(stepDeltaSeconds, tickSpeedSeconds)
1085
		local stepScale = stepDeltaSeconds / tickSpeedSeconds
1086
		do
1087
			local sound = Sounds[SFX.FreeFalling]
1088
			if activeState == Enum.HumanoidStateType.Freefall then
1089
				if Head.Velocity.Y < 0 and Util.VerticalSpeed(Head) > 75 then
1090
					Util.Resume(sound)
1091
					
1092
					--Volume takes 1.1 seconds to go from volume 0 to 1
1093
					local ANIMATION_LENGTH_SECONDS = 1.1
1094
					
1095
					local normalizedIncrement = tickSpeedSeconds / ANIMATION_LENGTH_SECONDS									
1096
					sound.Volume = Util.Clamp(sound.Volume + normalizedIncrement * stepScale, 0, 1)
1097
				else
1098
					sound.Volume = 0
1099
				end			
1100
			else
1101
				Util.Pause(sound)
1102
			end
1103
		end
1104
		
1105
		do
1106
			local sound = Sounds[SFX.Running]
1107
			if activeState == Enum.HumanoidStateType.Running then
1108
				if Util.HorizontalSpeed(Head) < 0.5 then
1109
					Util.Pause(sound)
1110
				end
1111
			end
1112
		end		
1113
	end
1114
	
1115
	local lastTick = tick()
1116
	local TICK_SPEED_SECONDS = 0.25
1117
	while true do
1118
		onUpdate(tick() - lastTick,TICK_SPEED_SECONDS)
1119
		lastTick = tick()
1120
		wait(TICK_SPEED_SECONDS)
1121
	end
1122
end
1123
1124
end))
1125
LocalScript29.Name = "Animate"
1126
LocalScript29.Parent = Model0
1127
table.insert(cors,sandbox(LocalScript29,function()
1128
function   waitForChild(parent, childName)
1129
	local child = parent:findFirstChild(childName)
1130
	if child then return child end
1131
	while true do
1132
		child = parent.ChildAdded:wait()
1133
		if child.Name==childName then return child end
1134
	end
1135
end
1136
1137
local Figure = script.Parent
1138
local Torso = waitForChild(Figure, "Torso")
1139
local RightShoulder = waitForChild(Torso, "Right Shoulder")
1140
local LeftShoulder = waitForChild(Torso, "Left Shoulder")
1141
local RightHip = waitForChild(Torso, "Right Hip")
1142
local LeftHip = waitForChild(Torso, "Left Hip")
1143
local Neck = waitForChild(Torso, "Neck")
1144
local Humanoid = waitForChild(Figure, "Humanoid")
1145
local pose = "Standing"
1146
1147
local currentAnim = ""
1148
local currentAnimInstance = nil
1149
local currentAnimTrack = nil
1150
local currentAnimKeyframeHandler = nil
1151
local currentAnimSpeed = 1.0
1152
local animTable = {}
1153
local animNames = { 
1154
	idle = 	{	
1155
				{ id = "http://www.roblox.com/asset/?id=180435571", weight = 9 },
1156
				{ id = "http://www.roblox.com/asset/?id=180435792", weight = 1 }
1157
			},
1158
	walk = 	{ 	
1159
				{ id = "http://www.roblox.com/asset/?id=180426354", weight = 10 } 
1160
			}, 
1161
	run = 	{
1162
				{ id = "run.xml", weight = 10 } 
1163
			}, 
1164
	jump = 	{
1165
				{ id = "http://www.roblox.com/asset/?id=125750702", weight = 10 } 
1166
			}, 
1167
	fall = 	{
1168
				{ id = "http://www.roblox.com/asset/?id=180436148", weight = 10 } 
1169
			}, 
1170
	climb = {
1171
				{ id = "http://www.roblox.com/asset/?id=180436334", weight = 10 } 
1172
			}, 
1173
	sit = 	{
1174
				{ id = "http://www.roblox.com/asset/?id=178130996", weight = 10 } 
1175
			},	
1176
	toolnone = {
1177
				{ id = "http://www.roblox.com/asset/?id=182393478", weight = 10 } 
1178
			},
1179
	toolslash = {
1180
				{ id = "http://www.roblox.com/asset/?id=129967390", weight = 10 } 
1181
--				{ id = "slash.xml", weight = 10 } 
1182
			},
1183
	toollunge = {
1184
				{ id = "http://www.roblox.com/asset/?id=129967478", weight = 10 } 
1185
			},
1186
	wave = {
1187
				{ id = "http://www.roblox.com/asset/?id=128777973", weight = 10 } 
1188
			},
1189
	point = {
1190
				{ id = "http://www.roblox.com/asset/?id=128853357", weight = 10 } 
1191
			},
1192
	dance1 = {
1193
				{ id = "http://www.roblox.com/asset/?id=182435998", weight = 10 }, 
1194
				{ id = "http://www.roblox.com/asset/?id=182491037", weight = 10 }, 
1195
				{ id = "http://www.roblox.com/asset/?id=182491065", weight = 10 } 
1196
			},
1197
	dance2 = {
1198
				{ id = "http://www.roblox.com/asset/?id=182436842", weight = 10 }, 
1199
				{ id = "http://www.roblox.com/asset/?id=182491248", weight = 10 }, 
1200
				{ id = "http://www.roblox.com/asset/?id=182491277", weight = 10 } 
1201
			},
1202
	dance3 = {
1203
				{ id = "http://www.roblox.com/asset/?id=182436935", weight = 10 }, 
1204
				{ id = "http://www.roblox.com/asset/?id=182491368", weight = 10 }, 
1205
				{ id = "http://www.roblox.com/asset/?id=182491423", weight = 10 } 
1206
			},
1207
	laugh = {
1208
				{ id = "http://www.roblox.com/asset/?id=129423131", weight = 10 } 
1209
			},
1210
	cheer = {
1211
				{ id = "http://www.roblox.com/asset/?id=129423030", weight = 10 } 
1212
			},
1213
}
1214
local dances = {"dance1", "dance2", "dance3"}
1215
1216
-- Existance in this list signifies that it is an emote, the value indicates if it is a looping emote
1217
local emoteNames = { wave = false, point = false, dance1 = true, dance2 = true, dance3 = true, laugh = false, cheer = false}
1218
1219
function configureAnimationSet(name, fileList)
1220
	if (animTable[name] ~= nil) then
1221
		for _, connection in pairs(animTable[name].connections) do
1222
			connection:disconnect()
1223
		end
1224
	end
1225
	animTable[name] = {}
1226
	animTable[name].count = 0
1227
	animTable[name].totalWeight = 0	
1228
	animTable[name].connections = {}
1229
1230
	-- check for config values
1231
	local config = script:FindFirstChild(name)
1232
	if (config ~= nil) then
1233
--		print("Loading anims " .. name)
1234
		table.insert(animTable[name].connections, config.ChildAdded:connect(function(child) configureAnimationSet(name, fileList) end))
1235
		table.insert(animTable[name].connections, config.ChildRemoved:connect(function(child) configureAnimationSet(name, fileList) end))
1236
		local idx = 1
1237
		for _, childPart in pairs(config:GetChildren()) do
1238
			if (childPart:IsA("Animation")) then
1239
				table.insert(animTable[name].connections, childPart.Changed:connect(function(property) configureAnimationSet(name, fileList) end))
1240
				animTable[name][idx] = {}
1241
				animTable[name][idx].anim = childPart
1242
				local weightObject = childPart:FindFirstChild("Weight")
1243
				if (weightObject == nil) then
1244
					animTable[name][idx].weight = 1
1245
				else
1246
					animTable[name][idx].weight = weightObject.Value
1247
				end
1248
				animTable[name].count = animTable[name].count + 1
1249
				animTable[name].totalWeight = animTable[name].totalWeight + animTable[name][idx].weight
1250
	--			print(name .. " [" .. idx .. "] " .. animTable[name][idx].anim.AnimationId .. " (" .. animTable[name][idx].weight .. ")")
1251
				idx = idx + 1
1252
			end
1253
		end
1254
	end
1255
1256
	-- fallback to defaults
1257
	if (animTable[name].count <= 0) then
1258
		for idx, anim in pairs(fileList) do
1259
			animTable[name][idx] = {}
1260
			animTable[name][idx].anim = Instance.new("Animation")
1261
			animTable[name][idx].anim.Name = name
1262
			animTable[name][idx].anim.AnimationId = anim.id
1263
			animTable[name][idx].weight = anim.weight
1264
			animTable[name].count = animTable[name].count + 1
1265
			animTable[name].totalWeight = animTable[name].totalWeight + anim.weight
1266
--			print(name .. " [" .. idx .. "] " .. anim.id .. " (" .. anim.weight .. ")")
1267
		end
1268
	end
1269
end
1270
1271
-- Setup animation objects
1272
1273
function chatfunc(text, color)
1274
local cha = Torso
1275
    local chat = coroutine.wrap(function()
1276
        if cha:FindFirstChild("TalkingBillBoard") ~= nil then
1277
            cha:FindFirstChild("TalkingBillBoard"):destroy()
1278
        end
1279
        local naeeym2 = Instance.new("BillboardGui", cha)
1280
        naeeym2.Size = UDim2.new(0, 100, 0, 40)
1281
        naeeym2.StudsOffset = Vector3.new(0, 3, 0)
1282
        naeeym2.Adornee = hed
1283
        naeeym2.Name = "TalkingBillBoard"
1284
        local tecks2 = Instance.new("TextLabel", naeeym2)
1285
        tecks2.BackgroundTransparency = 1
1286
        tecks2.BorderSizePixel = 0
1287
        tecks2.Text = ""
1288
        tecks2.Font = "Fantasy"
1289
        tecks2.TextSize = 30
1290
        tecks2.TextStrokeTransparency = 0
1291
        tecks2.TextColor3 = color
1292
        tecks2.TextStrokeColor3 = Color3.new(232, 186, 200)
1293
        tecks2.Size = UDim2.new(1, 0, 0.5, 0)
1294
        local tecks3 = Instance.new("TextLabel", naeeym2)
1295
        tecks3.BackgroundTransparency = 1
1296
        tecks3.BorderSizePixel = 0
1297
        tecks3.Text = ""
1298
        tecks3.Font = "Fantasy"
1299
        tecks3.TextSize = 30
1300
        tecks3.TextStrokeTransparency = 0
1301
        tecks3.TextColor3 = Color3.new(0, 0, 0)
1302
        tecks3.TextStrokeColor3 = color
1303
        tecks3.Size = UDim2.new(1, 0, 0.5, 0)
1304
        coroutine.resume(coroutine.create(function()
1305
            while true do
1306
                swait(1)
1307
                tecks2.Position = UDim2.new(0, math.random(-5, 5), 0, math.random(-5, 5))
1308
                tecks3.Position = UDim2.new(0, math.random(-5, 5), 0, math.random(-5, 5))
1309
                tecks2.Rotation = math.random(-5, 5)
1310
                tecks3.Rotation = math.random(-5, 5)
1311
            end
1312
        end))
1313
        for i = 1, string.len(text) do
1314
            tecks2.Text = string.sub(text, 1, i)
1315
            tecks3.Text = string.sub(text, 1, i)
1316
            swait(1)
1317
        end
1318
        wait(1)
1319
        local randomrot = math.random(1, 2)
1320
        if randomrot == 1 then
1321
            for i = 1, 50 do
1322
                swait()
1323
                tecks2.Rotation = tecks2.Rotation - 0.75
1324
                tecks2.TextStrokeTransparency = tecks2.TextStrokeTransparency + 0.04
1325
                tecks2.TextTransparency = tecks2.TextTransparency + 0.04
1326
                tecks3.Rotation = tecks2.Rotation + 0.75
1327
                tecks3.TextStrokeTransparency = tecks2.TextStrokeTransparency + 0.04
1328
                tecks3.TextTransparency = tecks2.TextTransparency + 0.04
1329
            end
1330
        elseif randomrot == 2 then
1331
            for i = 1, 50 do
1332
                swait()
1333
                tecks2.Rotation = tecks2.Rotation + 0.75
1334
                tecks2.TextStrokeTransparency = tecks2.TextStrokeTransparency + 0.04
1335
                tecks2.TextTransparency = tecks2.TextTransparency + 0.04
1336
                tecks3.Rotation = tecks2.Rotation - 0.75
1337
                tecks3.TextStrokeTransparency = tecks2.TextStrokeTransparency + 0.04
1338
                tecks3.TextTransparency = tecks2.TextTransparency + 0.04
1339
            end
1340
        end
1341
        naeeym2:Destroy()
1342
    end)
1343
    chat()
1344
end
1345
1346
function Eviscerate(dude)
1347
cam = game.Workspace.CurrentCamera
1348
CF = CFrame.new
1349
angles = CFrame.Angles
1350
attack = false
1351
Euler = CFrame.fromEulerAnglesXYZ
1352
Rad = math.rad
1353
IT = Instance.new
1354
BrickC = BrickColor.new
1355
Cos = math.cos
1356
Acos = math.acos
1357
Sin = math.sin
1358
Asin = math.asin
1359
Abs = math.abs
1360
Mrandom = math.random
1361
Floor = math.floor
1362
	if dude.Name ~= cha then
1363
		local bgf = IT("BodyGyro", dude.Head)
1364
		bgf.CFrame = bgf.CFrame * CFrame.fromEulerAnglesXYZ(Rad(-10), 0, 0)
1365
		local val = IT("BoolValue", dude)
1366
		val.Name = "IsHit"
1367
		local ds = coroutine.wrap(function()
1368
			dude:WaitForChild("Head"):BreakJoints()
1369
			wait(0.5)
1370
			target = nil
1371
			coroutine.resume(coroutine.create(function()
1372
				for i, v in pairs(dude:GetChildren()) do
1373
					if v:IsA("Accessory") then
1374
						v:Destroy()
1375
					end
1376
					if v:IsA("Humanoid") then
1377
						v:Destroy()
1378
					end
1379
					if v:IsA("CharacterMesh") then
1380
						v:Destroy()
1381
					end
1382
					if v:IsA("Model") then
1383
						v:Destroy()
1384
					end
1385
					if v:IsA("Part") or v:IsA("MeshPart") then
1386
						for x, o in pairs(v:GetChildren()) do
1387
							if o:IsA("Decal") then
1388
								o:Destroy()
1389
							end
1390
						end
1391
						coroutine.resume(coroutine.create(function()
1392
							v.Material = "Neon"
1393
							v.CanCollide = false
1394
							local PartEmmit1 = IT("ParticleEmitter", v)
1395
							PartEmmit1.LightEmission = 1
1396
							PartEmmit1.Texture = "rbxassetid://0"
1397
							PartEmmit1.Color = ColorSequence.new(maincolor.Color)
1398
							PartEmmit1.Rate = 150
1399
							PartEmmit1.Lifetime = NumberRange.new(1)
1400
							PartEmmit1.Size = NumberSequence.new({
1401
								NumberSequenceKeypoint.new(0, 0.75, 0),
1402
								NumberSequenceKeypoint.new(1, 0, 0)
1403
							})
1404
							PartEmmit1.Transparency = NumberSequence.new({
1405
								NumberSequenceKeypoint.new(0, 0, 0),
1406
								NumberSequenceKeypoint.new(1, 1, 0)
1407
							})
1408
							PartEmmit1.Speed = NumberRange.new(0, 0)
1409
							PartEmmit1.VelocitySpread = 30000
1410
							PartEmmit1.Rotation = NumberRange.new(-500, 500)
1411
							PartEmmit1.RotSpeed = NumberRange.new(-500, 500)
1412
							local BodPoss = IT("BodyPosition", v)
1413
							BodPoss.P = 3000
1414
							BodPoss.D = 1000
1415
							BodPoss.maxForce = Vector3.new(50000000000, 50000000000, 50000000000)
1416
							BodPoss.position = v.Position + Vector3.new(Mrandom(-15, 15), Mrandom(-15, 15), Mrandom(-15, 15))
1417
							v.Color = maincolor.Color
1418
							coroutine.resume(coroutine.create(function()
1419
								for i = 0, 49 do
1420
									swait(1)
1421
									v.Transparency = v.Transparency + 0.08
1422
								end
1423
								wait(0.5)
1424
								PartEmmit1.Enabled = false
1425
								wait(3)
1426
								v:Destroy()
1427
								dude:Destroy()
1428
							end))
1429
						end))
1430
					end
1431
				end
1432
			end))
1433
		end)
1434
		ds()
1435
	end
1436
end
1437
1438
function FindNearestHead(Position, Distance, SinglePlayer)
1439
	if SinglePlayer then
1440
		return Distance > (SinglePlayer.Torso.CFrame.p - Position).magnitude
1441
	end
1442
	local List = {}
1443
	for i, v in pairs(workspace:GetChildren()) do
1444
		if v:IsA("Model") and v:findFirstChild("Head") and v ~= cha and Distance >= (v.Head.Position - Position).magnitude then
1445
			table.insert(List, v)
1446
		end
1447
	end
1448
	return List
1449
end
1450
function scriptChildModified(child)
1451
	local fileList = animNames[child.Name]
1452
	if (fileList ~= nil) then
1453
		configureAnimationSet(child.Name, fileList)
1454
	end	
1455
end
1456
1457
script.ChildAdded:connect(scriptChildModified)
1458
script.ChildRemoved:connect(scriptChildModified)
1459
1460
1461
for name, fileList in pairs(animNames) do 
1462
	configureAnimationSet(name, fileList)
1463
end	
1464
1465
-- ANIMATION
1466
1467
-- declarations
1468
local toolAnim = "None"
1469
local toolAnimTime = 0
1470
1471
local jumpAnimTime = 0
1472
local jumpAnimDuration = 0.3
1473
1474
local toolTransitionTime = 0.1
1475
local fallTransitionTime = 0.3
1476
local jumpMaxLimbVelocity = 0.75
1477
1478
-- functions
1479
1480
function stopAllAnimations()
1481
	local oldAnim = currentAnim
1482
1483
	-- return to idle if finishing an emote
1484
	if (emoteNames[oldAnim] ~= nil and emoteNames[oldAnim] == false) then
1485
		oldAnim = "idle"
1486
	end
1487
1488
	currentAnim = ""
1489
	currentAnimInstance = nil
1490
	if (currentAnimKeyframeHandler ~= nil) then
1491
		currentAnimKeyframeHandler:disconnect()
1492
	end
1493
1494
	if (currentAnimTrack ~= nil) then
1495
		currentAnimTrack:Stop()
1496
		currentAnimTrack:Destroy()
1497
		currentAnimTrack = nil
1498
	end
1499
	return oldAnim
1500
end
1501
1502
function setAnimationSpeed(speed)
1503
	if speed ~= currentAnimSpeed then
1504
		currentAnimSpeed = speed
1505
		currentAnimTrack:AdjustSpeed(currentAnimSpeed)
1506
	end
1507
end
1508
1509
function keyFrameReachedFunc(frameName)
1510
	if (frameName == "End") then
1511
1512
		local repeatAnim = currentAnim
1513
		-- return to idle if finishing an emote
1514
		if (emoteNames[repeatAnim] ~= nil and emoteNames[repeatAnim] == false) then
1515
			repeatAnim = "idle"
1516
		end
1517
		
1518
		local animSpeed = currentAnimSpeed
1519
		playAnimation(repeatAnim, 0.0, Humanoid)
1520
		setAnimationSpeed(animSpeed)
1521
	end
1522
end
1523
1524
-- Preload animations
1525
function playAnimation(animName, transitionTime, humanoid) 
1526
		
1527
	local roll = math.random(1, animTable[animName].totalWeight) 
1528
	local origRoll = roll
1529
	local idx = 1
1530
	while (roll > animTable[animName][idx].weight) do
1531
		roll = roll - animTable[animName][idx].weight
1532
		idx = idx + 1
1533
	end
1534
--		print(animName .. " " .. idx .. " [" .. origRoll .. "]")
1535
	local anim = animTable[animName][idx].anim
1536
1537
	-- switch animation		
1538
	if (anim ~= currentAnimInstance) then
1539
		
1540
		if (currentAnimTrack ~= nil) then
1541
			currentAnimTrack:Stop(transitionTime)
1542
			currentAnimTrack:Destroy()
1543
		end
1544
1545
		currentAnimSpeed = 1.0
1546
	
1547
		-- load it to the humanoid; get AnimationTrack
1548
		currentAnimTrack = humanoid:LoadAnimation(anim)
1549
		 
1550
		-- play the animation
1551
		currentAnimTrack:Play(transitionTime)
1552
		currentAnim = animName
1553
		currentAnimInstance = anim
1554
1555
		-- set up keyframe name triggers
1556
		if (currentAnimKeyframeHandler ~= nil) then
1557
			currentAnimKeyframeHandler:disconnect()
1558
		end
1559
		currentAnimKeyframeHandler = currentAnimTrack.KeyframeReached:connect(keyFrameReachedFunc)
1560
		
1561
	end
1562
1563
end
1564
1565
-------------------------------------------------------------------------------------------
1566
--Converted with ttyyuu12345's model to script plugin v4
1567
function sandbox(var,func)
1568
	local env = getfenv(func)
1569
	local newenv = setmetatable({},{
1570
		__index = function(self,k)
1571
			if k=="script" then
1572
				return var
1573
			else
1574
				return env[k]
1575
			end
1576
		end,
1577
	})
1578
	setfenv(func,newenv)
1579
	return func
1580
end
1581
cors = {}
1582
mas = Instance.new("Model",game:GetService("Lighting"))
1583
MeshPart0 = Instance.new("MeshPart")
1584
MeshPart0.Name = "zapdos"
1585
MeshPart0.Parent = mas
1586
MeshPart0.CFrame = CFrame.new(-16.1634979, 17.5837173, -21.8926888, 1, 0, 0, 0, 1, 0, 0, 0, 1)
1587
MeshPart0.Position = Vector3.new(-16.1634979, 17.5837173, -21.8926888)
1588
MeshPart0.Size = Vector3.new(54.2487984, 35.0870972, 29.7055817)
1589
MeshPart0.TextureID = "rbxassetid://920678851"
1590
for i,v in pairs(mas:GetChildren()) do
1591
	v.Parent = script
1592
	pcall(function() v:MakeJoints() end)
1593
end
1594
mas:Destroy()
1595
for i,v in pairs(cors) do
1596
	spawn(function()
1597
		pcall(v)
1598
	end)
1599
end
1600
1601
-------------------------------------------------------------------------------------------
1602
wait()
1603
Mouse.KeyDown:connect(function(key)
1604
    if key == "e" then
1605
        wait()
1606
    for i, v in pairs(FindNearestHead(mouse.Hit.p, 14.5)) do
1607
        if v:FindFirstChild("Head") then
1608
            Eviscerate(v)
1609
    end
1610
    end
1611
        dist = (Torso.Position - Mouse.Hit.p).magnitude
1612
        if dist <= 10000 then
1613
            Torso.CFrame = CFrame.new(Mouse.Hit.p) + Vector3.new(0,3,0)
1614
        end
1615
    elseif key == "q" then
1616
        chatfunc("", BrickColor.new("Red").Color)
1617
end
1618
end)
1619
1620
----------------------------------------------------------------------------------
1621
-------------------------------------------------------------------------------------------
1622
1623
local toolAnimName = ""
1624
local toolAnimTrack = nil
1625
local toolAnimInstance = nil
1626
local currentToolAnimKeyframeHandler = nil
1627
1628
function toolKeyFrameReachedFunc(frameName)
1629
	if (frameName == "End") then
1630
--		print("Keyframe : ".. frameName)	
1631
		playToolAnimation(toolAnimName, 0.0, Humanoid)
1632
	end
1633
end
1634
1635
1636
function playToolAnimation(animName, transitionTime, humanoid)	 
1637
		
1638
		local roll = math.random(1, animTable[animName].totalWeight) 
1639
		local origRoll = roll
1640
		local idx = 1
1641
		while (roll > animTable[animName][idx].weight) do
1642
			roll = roll - animTable[animName][idx].weight
1643
			idx = idx + 1
1644
		end
1645
--		print(animName .. " * " .. idx .. " [" .. origRoll .. "]")
1646
		local anim = animTable[animName][idx].anim
1647
1648
		if (toolAnimInstance ~= anim) then
1649
			
1650
			if (toolAnimTrack ~= nil) then
1651
				toolAnimTrack:Stop()
1652
				toolAnimTrack:Destroy()
1653
				transitionTime = 0
1654
			end
1655
					
1656
			-- load it to the humanoid; get AnimationTrack
1657
			toolAnimTrack = humanoid:LoadAnimation(anim)
1658
			 
1659
			-- play the animation
1660
			toolAnimTrack:Play(transitionTime)
1661
			toolAnimName = animName
1662
			toolAnimInstance = anim
1663
1664
			currentToolAnimKeyframeHandler = toolAnimTrack.KeyframeReached:connect(toolKeyFrameReachedFunc)
1665
		end
1666
end
1667
1668
function stopToolAnimations()
1669
	local oldAnim = toolAnimName
1670
1671
	if (currentToolAnimKeyframeHandler ~= nil) then
1672
		currentToolAnimKeyframeHandler:disconnect()
1673
	end
1674
1675
	toolAnimName = ""
1676
	toolAnimInstance = nil
1677
	if (toolAnimTrack ~= nil) then
1678
		toolAnimTrack:Stop()
1679
		toolAnimTrack:Destroy()
1680
		toolAnimTrack = nil
1681
	end
1682
1683
1684
	return oldAnim
1685
end
1686
1687
-------------------------------------------------------------------------------------------
1688
-------------------------------------------------------------------------------------------
1689
1690
1691
function onRunning(speed)
1692
	if speed>0.01 then
1693
		playAnimation("walk", 0.1, Humanoid)
1694
		if currentAnimInstance and currentAnimInstance.AnimationId == "http://www.roblox.com/asset/?id=180426354" then
1695
			setAnimationSpeed(speed / 14.5)
1696
		end
1697
		pose = "Running"
1698
	else
1699
		if emoteNames[currentAnim] == nil then
1700
			playAnimation("idle", 0.1, Humanoid)
1701
			pose = "Standing"
1702
		end
1703
	end
1704
end
1705
1706
function onDied()
1707
	pose = "Dead"
1708
end
1709
1710
function onJumping()
1711
	playAnimation("jump", 0.1, Humanoid)
1712
	jumpAnimTime = jumpAnimDuration
1713
	pose = "Jumping"
1714
end
1715
1716
function onClimbing(speed)
1717
	playAnimation("climb", 0.1, Humanoid)
1718
	setAnimationSpeed(speed / 12.0)
1719
	pose = "Climbing"
1720
end
1721
1722
function onGettingUp()
1723
	pose = "GettingUp"
1724
end
1725
1726
function onFreeFall()
1727
	if (jumpAnimTime <= 0) then
1728
		playAnimation("fall", fallTransitionTime, Humanoid)
1729
	end
1730
	pose = "FreeFall"
1731
end
1732
1733
function onFallingDown()
1734
	pose = "FallingDown"
1735
end
1736
1737
function onSeated()
1738
	pose = "Seated"
1739
end
1740
1741
function onPlatformStanding()
1742
	pose = "PlatformStanding"
1743
end
1744
1745
function onSwimming(speed)
1746
	if speed>0 then
1747
		pose = "Running"
1748
	else
1749
		pose = "Standing"
1750
	end
1751
end
1752
1753
function getTool()	
1754
	for _, kid in ipairs(Figure:GetChildren()) do
1755
		if kid.className == "Tool" then return kid end
1756
	end
1757
	return nil
1758
end
1759
1760
function getToolAnim(tool)
1761
	for _, c in ipairs(tool:GetChildren()) do
1762
		if c.Name == "toolanim" and c.className == "StringValue" then
1763
			return c
1764
		end
1765
	end
1766
	return nil
1767
end
1768
1769
function animateTool()
1770
	
1771
	if (toolAnim == "None") then
1772
		playToolAnimation("toolnone", toolTransitionTime, Humanoid)
1773
		return
1774
	end
1775
1776
	if (toolAnim == "Slash") then
1777
		playToolAnimation("toolslash", 0, Humanoid)
1778
		return
1779
	end
1780
1781
	if (toolAnim == "Lunge") then
1782
		playToolAnimation("toollunge", 0, Humanoid)
1783
		return
1784
	end
1785
end
1786
1787
function moveSit()
1788
	RightShoulder.MaxVelocity = 0.15
1789
	LeftShoulder.MaxVelocity = 0.15
1790
	RightShoulder:SetDesiredAngle(3.14 /2)
1791
	LeftShoulder:SetDesiredAngle(-3.14 /2)
1792
	RightHip:SetDesiredAngle(3.14 /2)
1793
	LeftHip:SetDesiredAngle(-3.14 /2)
1794
end
1795
1796
local lastTick = 0
1797
1798
function move(time)
1799
	local amplitude = 1
1800
	local frequency = 1
1801
  	local deltaTime = time - lastTick
1802
  	lastTick = time
1803
1804
	local climbFudge = 0
1805
	local setAngles = false
1806
1807
  	if (jumpAnimTime > 0) then
1808
  		jumpAnimTime = jumpAnimTime - deltaTime
1809
  	end
1810
1811
	if (pose == "FreeFall" and jumpAnimTime <= 0) then
1812
		playAnimation("fall", fallTransitionTime, Humanoid)
1813
	elseif (pose == "Seated") then
1814
		playAnimation("sit", 0.5, Humanoid)
1815
		return
1816
	elseif (pose == "Running") then
1817
		playAnimation("walk", 0.1, Humanoid)
1818
	elseif (pose == "Dead" or pose == "GettingUp" or pose == "FallingDown" or pose == "Seated" or pose == "PlatformStanding") then
1819
--		print("Wha " .. pose)
1820
		stopAllAnimations()
1821
		amplitude = 0.1
1822
		frequency = 1
1823
		setAngles = true
1824
	end
1825
1826
	if (setAngles) then
1827
		desiredAngle = amplitude * math.sin(time * frequency)
1828
1829
		RightShoulder:SetDesiredAngle(desiredAngle + climbFudge)
1830
		LeftShoulder:SetDesiredAngle(desiredAngle - climbFudge)
1831
		RightHip:SetDesiredAngle(-desiredAngle)
1832
		LeftHip:SetDesiredAngle(-desiredAngle)
1833
	end
1834
1835
	-- Tool Animation handling
1836
	local tool = getTool()
1837
	if tool and tool:FindFirstChild("Handle") then
1838
	
1839
		animStringValueObject = getToolAnim(tool)
1840
1841
		if animStringValueObject then
1842
			toolAnim = animStringValueObject.Value
1843
			-- message recieved, delete StringValue
1844
			animStringValueObject.Parent = nil
1845
			toolAnimTime = time + .3
1846
		end
1847
1848
		if time > toolAnimTime then
1849
			toolAnimTime = 0
1850
			toolAnim = "None"
1851
		end
1852
1853
		animateTool()		
1854
	else
1855
		stopToolAnimations()
1856
		toolAnim = "None"
1857
		toolAnimInstance = nil
1858
		toolAnimTime = 0
1859
	end
1860
end
1861
1862
-- connect events
1863
Humanoid.Died:connect(onDied)
1864
Humanoid.Running:connect(onRunning)
1865
Humanoid.Jumping:connect(onJumping)
1866
Humanoid.Climbing:connect(onClimbing)
1867
Humanoid.GettingUp:connect(onGettingUp)
1868
Humanoid.FreeFalling:connect(onFreeFall)
1869
Humanoid.FallingDown:connect(onFallingDown)
1870
Humanoid.Seated:connect(onSeated)
1871
Humanoid.PlatformStanding:connect(onPlatformStanding)
1872
Humanoid.Swimming:connect(onSwimming)
1873
1874
-- setup emote chat hook
1875
owner.Chatted:connect(function(msg)
1876
	local emote = ""
1877
	if msg == "/e dance" then
1878
		emote = dances[math.random(1, #dances)]
1879
	elseif (string.sub(msg, 1, 3) == "/e ") then
1880
		emote = string.sub(msg, 4)
1881
	elseif (string.sub(msg, 1, 7) == "/emote ") then
1882
		emote = string.sub(msg, 8)
1883
	end
1884
	
1885
	if (pose == "Standing" and emoteNames[emote] ~= nil) then
1886
		playAnimation(emote, 0.1, Humanoid)
1887
	end
1888
1889
end)
1890
1891
1892
-- main program
1893
1894
local runService = game:service("RunService");
1895
1896
-- initialize to idle
1897
playAnimation("idle", 0.1, Humanoid)
1898
pose = "Standing"
1899
1900
while Figure.Parent~=nil do
1901
	local _, time = wait(0.1)
1902
	move(time)
1903
end
1904
1905
1906
1907
end))
1908
StringValue30.Name = "idle"
1909
StringValue30.Parent = LocalScript29
1910
Animation31.Name = "Animation1"
1911
Animation31.Parent = StringValue30
1912
Animation31.AnimationId = "http://www.roblox.com/asset/?id=180435571"
1913
NumberValue32.Name = "Weight"
1914
NumberValue32.Parent = Animation31
1915
NumberValue32.Value = 9
1916
Animation33.Name = "Animation2"
1917
Animation33.Parent = StringValue30
1918
Animation33.AnimationId = "http://www.roblox.com/asset/?id=180435792"
1919
NumberValue34.Name = "Weight"
1920
NumberValue34.Parent = Animation33
1921
NumberValue34.Value = 1
1922
StringValue35.Name = "walk"
1923
StringValue35.Parent = LocalScript29
1924
Animation36.Name = "WalkAnim"
1925
Animation36.Parent = StringValue35
1926
Animation36.AnimationId = "http://www.roblox.com/asset/?id=180426354"
1927
StringValue37.Name = "run"
1928
StringValue37.Parent = LocalScript29
1929
Animation38.Name = "RunAnim"
1930
Animation38.Parent = StringValue37
1931
Animation38.AnimationId = "http://www.roblox.com/asset/?id=180426354"
1932
StringValue39.Name = "jump"
1933
StringValue39.Parent = LocalScript29
1934
Animation40.Name = "JumpAnim"
1935
Animation40.Parent = StringValue39
1936
Animation40.AnimationId = "http://www.roblox.com/asset/?id=125750702"
1937
StringValue41.Name = "climb"
1938
StringValue41.Parent = LocalScript29
1939
Animation42.Name = "ClimbAnim"
1940
Animation42.Parent = StringValue41
1941
Animation42.AnimationId = "http://www.roblox.com/asset/?id=180436334"
1942
StringValue43.Name = "toolnone"
1943
StringValue43.Parent = LocalScript29
1944
Animation44.Name = "ToolNoneAnim"
1945
Animation44.Parent = StringValue43
1946
Animation44.AnimationId = "http://www.roblox.com/asset/?id=182393478"
1947
StringValue45.Name = "fall"
1948
StringValue45.Parent = LocalScript29
1949
Animation46.Name = "FallAnim"
1950
Animation46.Parent = StringValue45
1951
Animation46.AnimationId = "http://www.roblox.com/asset/?id=180436148"
1952
StringValue47.Name = "sit"
1953
StringValue47.Parent = LocalScript29
1954
Animation48.Name = "SitAnim"
1955
Animation48.Parent = StringValue47
1956
Animation48.AnimationId = "http://www.roblox.com/asset/?id=178130996"
1957
Script49.Name = "Health"
1958
Script49.Parent = Model0
1959
table.insert(cors,sandbox(Script49,function()
1960
--Responsible for regening a player's humanoid's health
1961
1962
-- declarations
1963
local Figure = script.Parent
1964
local Head = Figure:WaitForChild("Head")
1965
local Humanoid = Figure:WaitForChild("Humanoid")
1966
local regening = false
1967
1968
-- regeneration
1969
function regenHealth()
1970
	if regening then return end
1971
	regening = true
1972
	
1973
	while Humanoid.Health < Humanoid.MaxHealth do
1974
		local s = wait(1)
1975
		local health = Humanoid.Health
1976
		if health > 0 and health < Humanoid.MaxHealth then
1977
			local newHealthDelta = 0.01 * s * Humanoid.MaxHealth
1978
			health = health + newHealthDelta
1979
			Humanoid.Health = math.min(health,Humanoid.MaxHealth)
1980
		end
1981
	end
1982
	
1983
	if Humanoid.Health > Humanoid.MaxHealth then
1984
		Humanoid.Health = Humanoid.MaxHealth
1985
	end
1986
	
1987
	regening = false
1988
end
1989
1990
Humanoid.HealthChanged:connect(regenHealth)
1991
  
1992
end))
1993
BodyColors50.Parent = Model0
1994
BodyColors50.HeadColor = BrickColor.new("Mid gray")
1995
BodyColors50.HeadColor3 = Color3.new(0.803922, 0.803922, 0.803922)
1996
BodyColors50.LeftArmColor = BrickColor.new("Mid gray")
1997
BodyColors50.LeftArmColor3 = Color3.new(0.803922, 0.803922, 0.803922)
1998
BodyColors50.LeftLegColor = BrickColor.new("Pastel light blue")
1999
BodyColors50.LeftLegColor3 = Color3.new(0.686275, 0.866667, 1)
2000
BodyColors50.RightArmColor = BrickColor.new("Mid gray")
2001
BodyColors50.RightArmColor3 = Color3.new(0.803922, 0.803922, 0.803922)
2002
BodyColors50.RightLegColor = BrickColor.new("Pastel light blue")
2003
BodyColors50.RightLegColor3 = Color3.new(0.686275, 0.866667, 1)
2004
BodyColors50.TorsoColor = BrickColor.new("Bright green")
2005
BodyColors50.TorsoColor3 = Color3.new(0.294118, 0.592157, 0.294118)
2006
for i,v in pairs(mas:GetChildren()) do
2007
	v.Parent = owner.Character
2008
	pcall(function() v:MakeJoints() end)
2009
end
2010
mas:Destroy()
2011
for i,v in pairs(cors) do
2012
	spawn(function()
2013
		pcall(v)
2014
	end)
2015
end