
Key RequiredUniversal

-- // COMPLETE SCRIPT - Jun Tool Dance Fixed + Full Custom Animations (Idle/Walk/Jump/Sit) \\ --
local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local Character = Player.Character or Player.CharacterAdded:Wait()
local Humanoid = Character:WaitForChild("Humanoid")
local RootPart = Character:WaitForChild("HumanoidRootPart")
local Backpack = Player:WaitForChild("Backpack")
local RunService = game:GetService("RunService")
local SoundService = game:GetService("SoundService")
local IT = Instance.new
local V3 = Vector3.new
local CF = CFrame.new
local RAD = math.rad
local IsDancing = false
local currentAnim = nil
-- Load Animator6D
if not getgenv().Animator6D or not getgenv().Animator6DStop then
loadstring(game:HttpGet("https://raw.githubusercontent.com/gObl00x/Stuff/refs/heads/main/Animator6D.lua"))()
end
-- Camera follow head
local Head = Character:WaitForChild("Head")
RunService.RenderStepped:Connect(function(dt)
local alpha = function(n) return math.clamp(n * dt * 60, 0, 1) end
Humanoid.CameraOffset = Humanoid.CameraOffset:Lerp(
(RootPart.CFrame * CF(0, 1.5, 0)):PointToObjectSpace(Head.Position),
alpha(0.15)
)
end)
-- === GLOBAL CACHE (your EffectFolder system) ===
local EffectFolder = Character:FindFirstChild("EffectFolder") or IT("Folder")
EffectFolder.Name = "EffectFolder"
EffectFolder.Parent = Character
-- Example mesh cache (optional)
local mesh = IT("SpecialMesh", EffectFolder)
mesh.MeshId = "rbxassetid://1439035575"
mesh.TextureId = "rbxassetid://1439035619"
mesh.Scale = V3(1, 1, 1.5)
mesh.Offset = V3(0, -0.4, 0)
-- Music cache (Music1 to Music19)
local Music = {}
for i = 1, 19 do
local snd = IT("Sound", EffectFolder)
snd.Name = (i == 19 and "Fright Funk") or ("Music" .. i)
Music[i] = snd
end
Music19 = Music[19] -- alias to match your original code
Music19.Volume = 0.7
Music19.Looped = true
-- Optional theme
local theme = IT("Sound", SoundService)
theme.Name = "THEME"
theme.SoundId = getcustomasset("Epik Musics/Friday Theme.mp3") -- adjust if needed
theme.Volume = 0.75
theme.Looped = true
theme:Play()
-- Load custom animation packs (your working ones - unchanged)
local AnimPaths = {}
pcall(function()
local pack = game:GetObjects("rbxassetid://11405076389")[1].R6["Run + Walk + Jump + Fall R6"]
local folder = pack:FindFirstChild("AnimSaves")
AnimPaths.Walk = folder:FindFirstChild("Walk V4")
AnimPaths.Jump = folder:FindFirstChild("Jump V2")
end)
pcall(function()
AnimPaths.Idle = game:GetObjects("rbxassetid://16600175853")[1].AnimSaves:FindFirstChild("Idle 7")
end)
pcall(function()
AnimPaths.Sit = game:GetObjects("rbxassetid://12452064144")[1]["R6 Animation Rig"].AnimSaves:FindFirstChild("SITTING")
end)
local PlayerAnims = {
Idle = {KFS = AnimPaths.Idle, IsPlaying = false},
Walk = {KFS = AnimPaths.Walk, IsPlaying = false},
Jump = {KFS = AnimPaths.Jump, IsPlaying = false},
Sit = {KFS = AnimPaths.Sit, IsPlaying = false},
}
local function playAnim(animName, looped)
if currentAnim == animName then return end
if getgenv().Animator6DStop then getgenv().Animator6DStop() end
local anim = PlayerAnims[animName]
if anim and anim.KFS then
for _, v in pairs(PlayerAnims) do v.IsPlaying = false end
anim.IsPlaying = true
currentAnim = animName
getgenv().Animator6D(anim.KFS, 1, looped or false)
print("→ Playing: " .. animName)
else
warn("Missing animation: " .. animName)
end
end
-- Start with idle
playAnim("Idle", true)
-- === YOUR ORIGINAL JUN TOOL DANCE (fixed & integrated) ===
local tool19 = IT("Tool")
tool19.Name = "Jun fight with a paralysis demon"
tool19.RequiresHandle = false
tool19.Parent = Backpack
-- Download music if not exists
if not isfile("Shinji's and juns Final battle Song.mp3") then
pcall(function()
writefile("Shinji's and juns Final battle Song.mp3", game:HttpGet("https://github.com/EpicFire8/Music/raw/refs/heads/main/Shinji's%20and%20juns%20Final%20battle%20Song.mp3"))
end)
end
-- Jun animation - using your exact line (now protected)
local animthingy26
pcall(function()
local model = game:GetObjects("rbxassetid://75515993534839")[1]
if model then
animthingy26 = model.AnimSaves:WaitForChild("iDK anymore", 5) -- timeout to avoid infinite wait
end
end)
tool19.Equipped:Connect(function()
if Character then
IsDancing = true
getgenv().jumping = nil
getgenv().moving = nil
theme:Stop()
Humanoid.WalkSpeed = 0
if animthingy26 then
getgenv().Animator6D(animthingy26, 1, true)
else
-- fallback if your anim load failed - can remove later
warn("Jun anim not loaded - using fallback idle style")
playAnim("Idle", true)
end
-- Music (your exact logic)
Music19.Parent = Character
Music19.SoundId = getcustomasset("Shinji's and juns Final battle Song.mp3")
Music19.Looped = true
Music19:Play()
end
end)
tool19.Unequipped:Connect(function()
if Music19.Parent == Character and Music19.Playing then
Humanoid.WalkSpeed = 16
IsDancing = false
if getgenv().Animator6DStop then getgenv().Animator6DStop() end
theme:Play()
Music19:Stop()
Music19.Parent = EffectFolder
end
print("Dance 19 and music stopped")
end)
-- === AUTOMATIC NORMAL ANIMATION SWITCHING (unchanged - your working part) ===
Humanoid:GetPropertyChangedSignal("MoveDirection"):Connect(function()
if IsDancing then return end
if Humanoid.MoveDirection.Magnitude > 0 then
playAnim("Walk", true)
else
playAnim("Idle", true)
end
end)
Humanoid.StateChanged:Connect(function(_, new)
if IsDancing then return end
if new == Enum.HumanoidStateType.Jumping or new == Enum.HumanoidStateType.Freefall then
playAnim("Jump", false)
elseif new == Enum.HumanoidStateType.Seated then
playAnim("Sit", true)
elseif new == Enum.HumanoidStateType.Landed then
if Humanoid.MoveDirection.Magnitude > 0 then
playAnim("Walk", true)
else
playAnim("Idle", true)
end
end
end)
print("Script loaded - equip 'Jun fight with a paralysis demon' tool to start dance")



Credits to Scripterblabla