local chr = owner.Character
local root = chr.HumanoidRootPart
local hum = chr.Humanoid
function joint(p0, p1, c0, c1, name)
local w = Instance.new("Weld")
w.Part0 = p0
w.Part1 = p1
w.C0 = c0
w.C1 = c1
w.Name = name
w.Parent = p0
return w
end
local NK = joint(chr.Torso, chr.Head, CFrame.new(0, 1, 0), CFrame.new(0, -0.5, 0), "Neck")
local RJ = joint(root, chr.Torso, CFrame.new(0, 0, 0), CFrame.new(0, 0, 0), "RootJoint")
local RS = joint(chr.Torso, chr:FindFirstChild("Right Arm"), CFrame.new(1.5, 0.5, 0), CFrame.new(0, 0.5, 0), "Right Shoulder")
local LS = joint(chr.Torso, chr:FindFirstChild("Left Arm"), CFrame.new(-1.5, 0.5, 0), CFrame.new(0, 0.5, 0), "Left Shoulder")
local RH = joint(root, chr:FindFirstChild("Right Leg"), CFrame.new(0.5, -1, 0), CFrame.new(0, 1, 0), "Right Hip")
local LH = joint(root, chr:FindFirstChild("Left Leg"), CFrame.new(-0.5, -1, 0), CFrame.new(0, 1, 0), "Left Hip")
local RSC0, LSC0, RHC0, LHC0, RJC0, NKC0 = RS.C0, LS.C0, RH.C0, LH.C0, RJ.C0, NK.C0
local currentAnim = 0
local exactVel = 0
local vel = 0
local animMove = true
local action
local t = 0
local animTable = {
["piston"] = function(t)
return {
["RJ"] = RJC0 * CFrame.new(-math.sin(t / 7.2) / 10, math.sin(t / 7.2) / 5, 0) * CFrame.Angles(0, 0, math.cos(t / 3.6) / 10);
["NK"] = NKC0 * CFrame.Angles(0, 0, math.sin(t / 3.6) / 9);
["RS"] = RSC0 * CFrame.new(-0.5 + -math.cos(t / 3.6) / 3, -0.3 + math.sin(t / 7.2) / 3, -0.7) * CFrame.Angles(math.rad(110), -math.sin(t / 7.2) / 15, -math.rad(65) + math.sin(t / 3.6) / 10);
["LS"] = LSC0 * CFrame.new(0.35 + math.cos(t / 3.6) / 3, -0.5 + -math.sin(t / 7.2) / 3, -0.9) * CFrame.Angles(math.rad(70) + -math.cos(t / 3.6) / 5, 0, math.rad(70));
["RH"] = RHC0 * CFrame.new(0.1 - math.sin(t / 7.2) / 10, 0, -0.5 + math.sin(t / 7.2) / 5) * CFrame.Angles(-math.rad(15) + math.sin(t / 7.2) / 10, -math.rad(25) - math.cos(t / 7.2) / 15, math.rad(5) + math.sin(t / 7.2) / 20);
["LH"] = LHC0 * CFrame.new(-0.1 + math.sin(t / 7.2) / 10, 0, -0.5 + math.sin(t / 7.2) / 5) * CFrame.Angles(-math.rad(15) + math.sin(t / 7.2) / 10, math.rad(20) + math.cos(t / 7.2) / 15, -math.rad(5) - math.sin(t / 7.2) / 20)
}
end;
["smack1"] = function(t)
return {
["RJ"] = RJC0 * CFrame.new(0, math.cos(t / 3.6) / 7, 0) * CFrame.Angles(math.rad(10) + math.sin(t / 3.6) / 10, math.rad(15), 0);
["NK"] = NKC0 * CFrame.Angles(-math.rad(15) + math.sin(t / 3.6) / 5, math.rad(20), 0);
["RS"] = RSC0 * CFrame.new(-0.05 + math.cos(t / 3.6) / 7, math.cos(t / 3.6) / 3, -0.25 + math.cos(t / 3.6) / 7) * CFrame.Angles(math.rad(120) + math.sin(t / 3.6) * 2, math.rad(7), -math.rad(15) + math.sin(t / 3.6) / 2);
["LS"] = LSC0 * CFrame.new(0.05 + -math.cos(t / 3.6) / 7, math.cos(t / 3.6) / 3, -0.25 + math.cos(t / 3.6) / 7) * CFrame.Angles(math.rad(120) + math.sin(t / 3.6) * 2, -math.rad(7), math.rad(15) + -math.sin(t / 3.6) / 2);
["RH"] = RHC0 * CFrame.new(0.1, 0, -0.5 + math.cos(t / 3.6) / 5) * CFrame.Angles(-math.rad(15) + math.cos(t / 3.6) / 10, -math.rad(15), math.rad(3));
["LH"] = LHC0 * CFrame.new(-0.1, 0, -0.5 + math.cos(t / 3.6) / 5) * CFrame.Angles(-math.rad(15) + math.cos(t / 3.6) / 10, math.rad(20), -math.rad(3))
}
end;
["smack2"] = function(t)
return {
["RJ"] = RJC0 * CFrame.new(0, math.cos(t / 3.6) / 7, 0) * CFrame.Angles(math.rad(10) + math.sin(t / 3.6) / 10, -math.rad(15), 0);
["NK"] = NKC0 * CFrame.Angles(-math.rad(15) + math.sin(t / 3.6) / 5, -math.rad(15), 0);
["RS"] = RSC0 * CFrame.new(-0.05 + math.cos(t / 3.6) / 7, math.cos(t / 3.6) / 3, -0.25 + math.cos(t / 3.6) / 7) * CFrame.Angles(math.rad(120) + math.sin(t / 3.6) * 2, math.rad(7), -math.rad(15) + math.sin(t / 3.6) / 2);
["LS"] = LSC0 * CFrame.new(0.05 + -math.cos(t / 3.6) / 7, math.cos(t / 3.6) / 3, -0.25 + math.cos(t / 3.6) / 7) * CFrame.Angles(math.rad(120) + math.sin(t / 3.6) * 2, -math.rad(7), math.rad(15) + -math.sin(t / 3.6) / 2);
["RH"] = RHC0 * CFrame.new(0.1, 0, -0.5 + math.cos(t / 3.6) / 5) * CFrame.Angles(-math.rad(15) + math.cos(t / 3.6) / 10, -math.rad(15), math.rad(3));
["LH"] = LHC0 * CFrame.new(-0.1, 0, -0.5 + math.cos(t / 3.6) / 5) * CFrame.Angles(-math.rad(15) + math.cos(t / 3.6) / 10, math.rad(20), -math.rad(3))
}
end;
["touchdown"] = function(t)
return {
["RJ"] = RJC0 * CFrame.Angles(math.rad(3), math.sin(t / 7.2) / 15, math.sin(t / 3.6) / 15);
["NK"] = NKC0 * CFrame.Angles(-math.rad(12), -math.sin(t / 7.2) / 15, -math.sin(t / 3.6) / 15 + -math.cos(t / 3.6) / 15);
["RS"] = RSC0 * CFrame.new(-0.45 + -math.sin(t / 7.2) / 4, math.sin(t / 3.6) / 3, -0.65) * CFrame.Angles(math.rad(5), -math.rad(13), -math.rad(23) + -math.cos(t / 3.6) / 8);
["LS"] = LSC0 * CFrame.new(0.45 + math.sin(t / 7.2) / 4, -math.sin(t / 3.6) / 3, -0.65) * CFrame.Angles(math.rad(3), math.rad(15), math.rad(17) + -math.cos(t / 3.6) / 8);
["RH"] = RHC0 * CFrame.new(0.1, 0, -0.5 + math.cos(t / 3.6) / 5) * CFrame.Angles(-math.rad(15) + math.cos(t / 3.6) / 10, -math.rad(15) + math.sin(t / 3.6) / 15, math.rad(7));
["LH"] = LHC0 * CFrame.new(-0.1, 0, -0.5 + math.cos(t / 3.6) / 5) * CFrame.Angles(-math.rad(15) + math.cos(t / 3.6) / 10, math.rad(17) + -math.sin(t / 3.6) / 15, -math.rad(13))
}
end;
["faint1"] = function(t)
return {
["RJ"] = RJC0 * CFrame.new(0, -.05, 0) * CFrame.Angles(-math.rad(5), 0, 0);
["NK"] = NKC0;
["RS"] = RSC0 * CFrame.new(-0.6, -0.5, -0.25) * CFrame.Angles(0, 0, -math.rad(65));
["LS"] = LSC0 * CFrame.new(0, 0.5, 0) * CFrame.Angles(-math.rad(25), -math.rad(25), -math.rad(55));
["RH"] = RHC0 * CFrame.new(0.05, 0, -0.4) * CFrame.Angles(-math.rad(7), -math.rad(5), 0);
["LH"] = LHC0 * CFrame.new(-0.05, 0, -0.4) * CFrame.Angles(-math.rad(7), math.rad(7), 0)
}
end;
["punch1"] = function(t)
return {
["RJ"] = RJC0 * CFrame.new(0, math.cos(t / 3.6) / 7, -1) * CFrame.Angles(-math.rad(45) + math.sin(t / 3.6) / 12, 0, 0);
["NK"] = NKC0 * CFrame.Angles(-math.rad(25) + -math.cos(t / 3.6) / 7, 0, 0);
["RS"] = RSC0 * CFrame.new(-0.75, -0.5, -0.25) * CFrame.Angles(math.sin(t / 3.6) / 10, 0, -math.rad(80));
["LS"] = LSC0 * CFrame.new(0.65, -0.35, 0.5) * CFrame.Angles(math.rad(15) + math.sin(t / 3.6) / 10, 0, math.rad(80));
["RH"] = RHC0 * CFrame.new(0.15, 0, -0.5 + math.cos(t / 3.6) / 5) * CFrame.Angles(-math.rad(3) + math.cos(t / 3.6) / 10, -math.rad(5) + math.sin(t / 3.6) / 2, 0);
["LH"] = LHC0 * CFrame.new(-0.15, 0, -0.5 + math.cos(t / 3.6) / 5) * CFrame.Angles(-math.rad(3) + math.cos(t / 3.6) / 10, math.rad(5) + -math.sin(t / 3.6) / 2, 0)
}
end;
["punch2"] = function(t)
return {
["RJ"] = RJC0 * CFrame.new(0, math.cos(t / 3.6) / 7, -1) * CFrame.Angles(-math.rad(45) + -math.sin(t / 3.6) / 12, 0, 0);
["NK"] = NKC0 * CFrame.Angles(-math.rad(25) + -math.cos(t / 3.6) / 7, 0, 0);
["RS"] = RSC0 * CFrame.new(-0.75, -0.5, -0.25) * CFrame.Angles(math.sin(t / 3.6) / 10, 0, -math.rad(80));
["LS"] = LSC0 * CFrame.new(0.1 + math.cos(math.sin(math.sin(math.sin(t / 28.8) * 2) * 2) * 2) / 2, 0.25 + math.cos(math.sin(math.sin(math.sin(t / 28.8) * 2) * 2) * 2) / 2, math.cos(math.sin(math.sin(math.sin(t / 28.8) * 2) * 2) * 2) / 2) * CFrame.Angles(math.rad(65) + -math.cos(t / 3.6) / 5, math.rad(5) + -math.cos(t / 3.6) / 15, -math.rad(30) + math.cos(t / 3.6) / 15 - math.cos(math.sin(math.sin(math.sin(t / 28.8) * 2) * 2) * 2));
["RH"] = RHC0 * CFrame.new(0.15, 0, -0.5 + math.cos(t / 3.6) / 5) * CFrame.Angles(-math.rad(3) + math.cos(t / 3.6) / 10, -math.rad(5) + math.sin(t / 3.6) / 2, 0);
["LH"] = LHC0 * CFrame.new(-0.15, 0, -0.5 + math.cos(t / 3.6) / 5) * CFrame.Angles(-math.rad(3) + math.cos(t / 3.6) / 10, math.rad(5) + -math.sin(t / 3.6) / 2, 0)
}
end
}
local animSequence = {
[1] = {"piston", 3},
[2] = {"smack1", 0.375},
[3] = {"smack2", 0.375},
[4] = {"smack1", 0.8},
[5] = {"touchdown", 1.75},
[6] = {"faint1", 0.0375},
[7] = {"punch1", 0.6375},
[8] = {"punch2", 7.25},
}
game:GetService("RunService").PostSimulation:Connect(function(delta)
t = t + delta * 60
if animTable[action] ~= nil then
RJ.C0 = RJ.C0:Lerp(animTable[action](t)["RJ"], 0.3)
NK.C0 = NK.C0:Lerp(animTable[action](t)["NK"], 0.3)
RS.C0 = RS.C0:Lerp(animTable[action](t)["RS"], 0.3)
LS.C0 = LS.C0:Lerp(animTable[action](t)["LS"], 0.3)
RH.C0 = RH.C0:Lerp(animTable[action](t)["RH"], 0.3)
LH.C0 = LH.C0:Lerp(animTable[action](t)["LH"], 0.3)
end
end)
while true do
currentAnim = currentAnim + 1
if animSequence[currentAnim] == nil then
currentAnim = 1
end
action = animSequence[currentAnim][1]
print(action)
task.wait(animSequence[currentAnim][2])
end
--[[while true do
action = "piston"
task.wait(3)
action = "smack1"
task.wait(.375)
action = "smack2"
task.wait(.375)
action = "smack1"
task.wait(.8)
action = "touchdown"
task.wait(1.75)
action = "faint1"
task.wait(.05)
action = "faint2"
task.wait(.05)
action = "punch1"
task.wait(.6)
action = "punch2a"
task.wait(.09)
action = "punch2b"
task.wait(.01)
action = "punch2c"
task.wait(.01)
action = "punch2d"
task.wait(.01)
action = "punch2e"
task.wait(.01)
action = "punch2f"
task.wait(1.3)
action = "punch2a"
task.wait(.09)
action = "punch2b"
task.wait(.01)
action = "punch2c"
task.wait(.01)
action = "punch2d"
task.wait(.01)
action = "punch2e"
task.wait(.01)
action = "punch2f"
task.wait(.25)
end]]