-- // 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")