local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") -- vfx thing uhh idk local function createMatrixAura() for _, partName in {"HumanoidRootPart", "UpperTorso", "Torso"} do local part = character:FindFirstChild(partName) if part then local aura = Instance.new("ParticleEmitter") aura.Name = "MatrixAura" aura.Color = ColorSequence.new(Color3.fromRGB(0, 255, 0)) aura.LightEmission = 0.8 aura.Size = NumberSequence.new({ NumberSequenceKeypoint.new(0, 2), NumberSequenceKeypoint.new(1, 0.5) }) aura.Texture = "rbxassetid://243660364" aura.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0.1), NumberSequenceKeypoint.new(1, 1) }) aura.Rate = 180 aura.Lifetime = NumberRange.new(1, 2) aura.Speed = NumberRange.new(1, 2) aura.SpreadAngle = Vector2.new(60, 60) aura.VelocitySpread = 40 aura.ZOffset = -1.2 aura.LockedToPart = true aura.Parent = part end end end local function createSword() local model = Instance.new("Model") model.Name = "DarkheartSword" local handle = Instance.new("Part") handle.Name = "Handle" handle.Size = Vector3.new(0.2, 3.5, 0.2) handle.Material = Enum.Material.Neon handle.BrickColor = BrickColor.new("Really black") handle.CanCollide = false handle.Anchored = false local blade = Instance.new("Part") blade.Size = Vector3.new(0.4, 2.5, 0.4) blade.Material = Enum.Material.ForceField blade.BrickColor = BrickColor.new("Really red") blade.Transparency = 0.3 blade.CanCollide = false blade.Anchored = false blade.Position = handle.Position + Vector3.new(0, 1.5, 0) local weld = Instance.new("WeldConstraint") weld.Part0 = handle weld.Part1 = blade weld.Parent = handle handle.Parent = model blade.Parent = model model.PrimaryPart = handle return model end local function attachSwordTo(part) local sword = createSword() sword:SetPrimaryPartCFrame(part.CFrame * CFrame.new(0, -1.5, 0.5) * CFrame.Angles(math.rad(90), 0, 0)) sword.Parent = character local weld = Instance.new("WeldConstraint") weld.Part0 = part weld.Part1 = sword.PrimaryPart weld.Parent = sword.PrimaryPart end local function createDualSwords() local rig = humanoid.RigType if rig == Enum.HumanoidRigType.R15 then local rightHand = character:WaitForChild("RightHand", 3) local leftHand = character:WaitForChild("LeftHand", 3) if rightHand and leftHand then attachSwordTo(rightHand) attachSwordTo(leftHand) end else local rightArm = character:WaitForChild("Right Arm", 3) local leftArm = character:WaitForChild("Left Arm", 3) if rightArm and leftArm then attachSwordTo(rightArm) attachSwordTo(leftArm) end end end createMatrixAura() createDualSwords() -- Disable default animations if character:FindFirstChild("t4t_animateR6") then character.t4t_animateR6.Enabled = false elseif character:FindFirstChild("Animate") then character.Animate.Enabled = false end -- Stop all current animations local animator = humanoid:FindFirstChild("Animator") if animator then for _, track in pairs(animator:GetPlayingAnimationTracks()) do track:Stop() end end -- Emote Animations Setup local emotes = { ["/e dance1"] = {id = "rbxassetid://35654637", looped = false}, ["/e slingshot"] = {id = "rbxassetid://33248324", looped = false}, ["/e laugh"] = {id = "rbxassetid://129423131", looped = false}, ["/e wave"] = {id = "rbxassetid://128777973", looped = false}, ["/e drink"] = {id = "rbxassetid://29517689", looped = false} } local currentEmote = nil local isEmoting = false player.Chatted:Connect(function(msg) msg = msg:lower() if emotes[msg] then if currentEmote and currentEmote.IsPlaying then currentEmote:Stop() end for _, track in pairs(animator:GetPlayingAnimationTracks()) do track:Stop() end local emoteData = emotes[msg] local emoteAnimation = Instance.new("Animation") emoteAnimation.AnimationId = emoteData.id currentEmote = humanoid:LoadAnimation(emoteAnimation) currentEmote.Looped = emoteData.looped currentEmote:Play() isEmoting = true end end) -- Stop emote if the player moves (excluding rotation) game:GetService("RunService").RenderStepped:Connect(function() if isEmoting and humanoid.MoveDirection.Magnitude > 0 then if currentEmote and currentEmote.IsPlaying then currentEmote:Stop() end isEmoting = false end end) -- Jump Animation Setup local jumpAnimation = Instance.new("Animation") jumpAnimation.AnimationId = "rbxassetid://97170520" local jumpTrack = humanoid:LoadAnimation(jumpAnimation) jumpTrack.Looped = false -- Walk Animation Setup local walkAnimation = Instance.new("Animation") walkAnimation.AnimationId = "rbxassetid://92576399" local walkTrack = humanoid:LoadAnimation(walkAnimation) walkTrack.Looped = true -- Idle Animation Setup local idleAnimation = Instance.new("Animation") idleAnimation.AnimationId = "rbxassetid://73033590" local idleTrack = humanoid:LoadAnimation(idleAnimation) idleTrack.Looped = true -- Jump Animation Trigger humanoid.StateChanged:Connect(function(_, newState) if newState == Enum.HumanoidStateType.Jumping then jumpTrack:Play() jumpTrack:AdjustSpeed(1) jumpTrack.TimePosition = 0.2 elseif newState == Enum.HumanoidStateType.Landed then jumpTrack:Stop() end end) -- Walk & Idle Animation Handler game:GetService("RunService").RenderStepped:Connect(function() if isEmoting then return end local isMoving = humanoid.MoveDirection.Magnitude > 0 local isOnGround = humanoid.FloorMaterial ~= Enum.Material.Air if isMoving and isOnGround then if not walkTrack.IsPlaying then walkTrack:Play() end if idleTrack.IsPlaying then idleTrack:Stop() end else if walkTrack.IsPlaying then walkTrack:Stop() end if not idleTrack.IsPlaying and not jumpTrack.IsPlaying then idleTrack:Play() end end end)