Animation Changer v2 Rescript
Key Required Patched

Animation Changer v2 Rescript

[⏰FASHIONABLY LATE] Die of DeathGerson_A50Gerson_A50 3.6K views 96 executesUpdated Jan 12, 2026
5.0/ 5(2 votes)
20100% Positive
Lua Script•641 lines (22861 chars)
--[[
	WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk!
]]
-- SERVICES
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local UserInputService = game:GetService("UserInputService")
local StarterGui = game:GetService("StarterGui")
local RunService = game:GetService("RunService")

local LocalPlayer = Players.LocalPlayer

-- ANIMATION VARIABLES
local animationsFolder = ReplicatedStorage:WaitForChild("Characters"):WaitForChild("Survivor"):WaitForChild("Civilian"):WaitForChild("Animations")
local ClientAnimationsLOL = LocalPlayer:WaitForChild("PlayerScripts"):WaitForChild("ClientAnimations")

-- DELETE EXISTING ANIMATIONS
local deletedCount = 0
for _, item in ipairs(animationsFolder:GetChildren()) do
	if item:IsA("Animation") then
		item:Destroy()
		deletedCount += 1
	end
end

if deletedCount > 0 then
	StarterGui:SetCore("SendNotification", {
		Title = "Animations Deleted",
		Text = "We have deleted " .. deletedCount .. " animation(s)",
		Duration = 5
	})
end

print("Deleted " .. deletedCount .. " Animation object(s) from Civilian.Animations")

ClientAnimationsLOL.Enabled = false
task.wait()
ClientAnimationsLOL.Enabled = true

-- HUMANOID VARIABLES
local character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")

-- STOP ALL CURRENT ANIMATIONS
for _, track in pairs(humanoid:GetPlayingAnimationTracks()) do
	track:Stop()
end

-- WALK/SPRINT BASE SPEED
local BASE_WALK_SPEED = 10
local BASE_SPRINT_SPEED = 26
local blendTime = 0.2

-- ANIMATION DATA
local animationSets = {
	Pursuer = {
		Zombie_1 = {Idle="108966832512824", Walk="140725165625502", Sprint="74766909298004", Special="133089990054529"},
		Default = {Idle="80974060339218", Walk="80948338059832", Sprint="86509870627165", Special="87593869628310"},
          Derp = {Idle="116882648985413", Walk="116619914860672", Sprint="99710523608673", Special="127615305496836"},
		MISO = {Idle="110261771932085", Walk="77767207227090", Sprint="84579013254629", Special="121553057496251"},
		IQuot = {Idle="129538723059546", Walk="111262064101049", Sprint="133764223100629", Special="139854803244662"},
		Bling_Pursuer = {Idle="90352838780824", Walk="137664000771043", Sprint="118293298340723", Special="87593869628310"},
		Zombie_2 = {Idle="112741812425793", Walk="89072100139011", Sprint="83943871443312", Special="130969844291143"},
		Seesaws = {Idle="105229530451214", Walk="87100633181273", Sprint="76006312248383", Special="115832056782174"},
		Classic = {Idle="98065949472006", Walk="86090280531902", Sprint="80622745059905", Special="130969844291143"},
		The_Stalker = {Idle="140579314892039", Walk="131123864457422", Sprint="113129644775079", Special="134576092674459"},
		Clawsguy = {Idle="138700567973746", Walk="96333561042064", Sprint="96136930930416", Special="115832056782174"},
		MeQuot = {Idle="123989154628992", Walk="115493664585359", Sprint="130682734432079", Special="139854803244662"},
	},
	Artful = {
           April = {Idle="77254373412973", Walk="75235038249209", Sprint="134095033246365", Special="118342888066359"},
          June = {Idle="100624453990417", Walk="95483386342031", Sprint="124249399326202", Special="118342888066359"},
		Devesto = {Idle="75370292739676", Walk="70580402939971", Sprint="91726581626277", Special="118342888066359"},
		Default = {Idle="94473571249263", Walk="102572617659889", Sprint="100948610539178", Special="118342888066359"},
		Orchestraful = {Idle="96089657207073", Walk="86166363798441", Sprint="84734698021418", Special="102942152690202"},
		Evil_Guy = {Idle="94558501077182", Walk="136960484622651", Sprint="89260818951530", Special="111012730078117"},
		SoRetro = {Idle="75829922277414", Walk="102669115888825", Sprint="131888686736060", Special="130969844291143"},
	},
	Harken = {
          June = {Idle="108635771097763", Walk="96728802843969", Sprint="83245306542616", Special="78891328741658"},
          July = {Idle="104774777136783", Sprint="126965782930774", Walk="127150434440645", Special="100130178279600"},
		Default = {Idle="104774777136783", Walk="135226521217628", Sprint="119463021776325", Special="100130178279600"},
	},
	MROB = {
		Default = {Idle="128876353799791", Walk="84523208605356", Sprint="134893121838000", Special="87593869628310"},
	},
	Killdroid = {
          June = {Idle="101177922467439", Walk="88002166671026", Sprint="109392573918323", Special="126477594063454"},
		Retrodroid = {Idle="104698935553828", Walk="134273680881474", Sprint="87612866184239", Special="104679472375564"},
          Default = {Idle="90197302481794", Walk="125969711702313", Sprint="123837551946715", Special="126477594063454"},
	},
	Badware = {
         April = {Idle="120210800379571",  Walk="79573923702453", Sprint="120893352730955", Special="87704069305565"},
		Default = {Idle="136507569552573", Walk="83428305423587", Sprint="120893352730955", Special="87704069305565"},
	},
	Other = {
          April_Civilian = {Idle="74309548749074", Walk="93557290676516", Sprint="79488319304371"},
		Civilian = {Idle="100930402371608", Walk="84388941697203", Sprint="137375023685630", Special="0"},
		None = {Idle="0", Walk="0", Sprint="0", Special="0"},
		Ghost = {Idle="110395159339100", Walk="133938914809228", Sprint="124260679864309", Special="0"},
		June_Civilian = {Idle="74309548749074", Walk="138161225743614", Sprint="79488319304371", Special="0"},
      Old_Ghost = {Idle="115569050575488", Walk="115569050575488", Sprint="115569050575488", Special="0"},
	},
}

local tabShortNames = {
	Pursuer = "PR",
	Badware = "BW",
	Harken = "H",
	MROB = "MR",
	Killdroid = "KD",
	Artful = "A",
	Other = "CV"
}

local activeSetName, activeCategory = nil, nil
local characterData = {}


-- ──────────────────────────────────────────────
-- FAVOURITES: persistent save/load via writefile
-- ──────────────────────────────────────────────
local FAVS_FILE = "anim_favourites.txt"

local favourites = {}

local function saveFavourites()
	local lines = {}
	for key in pairs(favourites) do
		table.insert(lines, key)
	end
	writefile(FAVS_FILE, table.concat(lines, "\n"))
end

local function loadFavourites()
	if isfile(FAVS_FILE) then
		local content = readfile(FAVS_FILE)
		for _, line in ipairs(string.split(content, "\n")) do
			line = line:match("^%s*(.-)%s*$") -- trim whitespace
			if line ~= "" then
				favourites[line] = true
			end
		end
	end
end

loadFavourites()

local function getFavKey(category, setName)
	return category .. "|" .. setName
end

local function isFavourited(category, setName)
	return favourites[getFavKey(category, setName)] == true
end

local function toggleFavourite(category, setName)
	local key = getFavKey(category, setName)
	if favourites[key] then
		favourites[key] = nil
	else
		favourites[key] = true
	end
	saveFavourites()
end


-- LOAD ANIMATION SET
local function loadAnimationSet(character, category, setName)
	if not character or not category or not setName then return end
	local set = animationSets[category][setName]
	if not set then return end
	local humanoid = character:FindFirstChildOfClass("Humanoid")
	if not humanoid then return end
	local animator = humanoid:FindFirstChildOfClass("Animator") or Instance.new("Animator", humanoid)
	characterData[character] = characterData[character] or {}
	local data = characterData[character]
	if data.connection then data.connection:Disconnect() end
	for _, track in pairs(data.movementTracks or {}) do
		if track and track.IsPlaying then track:Stop(blendTime) end
	end

	-- CREATE TRACKS
	local function loadAnim(animId, priority)
		if animId and animId ~= "none" and animId ~= "0" then
			local anim = Instance.new("Animation")
			anim.AnimationId = "rbxassetid://" .. animId
			local track = animator:LoadAnimation(anim)
			if priority then track.Priority = priority end
			return track
		end
	end

	data.movementTracks = {
		Idle = loadAnim(set.Idle, Enum.AnimationPriority.Core),
		Walk = loadAnim(set.Walk, Enum.AnimationPriority.Movement),
		Sprint = loadAnim(set.Sprint, Enum.AnimationPriority.Movement)
	}
	data.currentMovementTrack = nil

	if data.movementTracks.Idle then
		data.movementTracks.Idle:Play(blendTime)
		data.currentMovementTrack = data.movementTracks.Idle
	end

	-- CONNECT TO HUMANOID.RUNNING FOR REAL SPEED
	data.connection = humanoid.Running:Connect(function(speed)
		local moving = speed > 0.1
		local newTrack

		if moving and speed >= 22 then
			newTrack = data.movementTracks.Sprint
		elseif moving then
			newTrack = data.movementTracks.Walk
		else
			newTrack = data.movementTracks.Idle
		end

		-- SWITCH TRACKS
		if newTrack ~= data.currentMovementTrack then
			if data.currentMovementTrack and data.currentMovementTrack.IsPlaying then
				data.currentMovementTrack:Stop(blendTime)
			end
			if newTrack then newTrack:Play(blendTime) end
			data.currentMovementTrack = newTrack
		end

		-- ADJUST SPEED
		if data.currentMovementTrack == data.movementTracks.Walk then
			local mult = math.clamp(speed / 10, 0.5, 2)
			data.currentMovementTrack:AdjustSpeed(mult)
		elseif data.currentMovementTrack == data.movementTracks.Sprint then
			local mult = math.clamp(speed / 26, 0.8, 2.5)
			data.currentMovementTrack:AdjustSpeed(mult)
		else
			data.currentMovementTrack:AdjustSpeed(1)
		end
	end)
end

-- BLOCK CORE ANIMATIONS
local function blockCoreAnimations(character)
	if not character then return end
	local animFolder = character:FindFirstChild("Animations")
	if not animFolder then return end
	local blockList = {"Idle", "Walk", "Sprint", "Jump", "Sit", "PassiveAnimation"}
	for _, name in ipairs(blockList) do
		local anim = animFolder:FindFirstChild(name)
		if anim then
			local dummy = Instance.new("Animation")
			dummy.Name = anim.Name
			dummy.AnimationId = ""
			dummy.Parent = animFolder
			anim:Destroy()
		end
	end
end

-- HANDLE CHARACTER ADDED
LocalPlayer.CharacterAdded:Connect(function(char)
	char:WaitForChild("HumanoidRootPart", 5)
	task.wait(0.5)
	blockCoreAnimations(char)
	if activeSetName and activeCategory then
		loadAnimationSet(char, activeCategory, activeSetName)
	end
end)

if LocalPlayer.Character then
	task.delay(1, function()
		blockCoreAnimations(LocalPlayer.Character)
		if activeSetName and activeCategory then
			loadAnimationSet(LocalPlayer.Character, activeCategory, activeSetName)
		end
	end)
end

-- ──────────────────────────────────────────────
-- GUI SETUP
-- ──────────────────────────────────────────────
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "AnimationMenuGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = PlayerGui

local toggleButton = Instance.new("TextButton")
toggleButton.Size = UDim2.new(0, 60, 0, 40)
toggleButton.Position = UDim2.new(1, -70, 0.5, -20)
toggleButton.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
toggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
toggleButton.Font = Enum.Font.GothamBold
toggleButton.Text = "Menu"
toggleButton.TextScaled = true
toggleButton.Active = true
toggleButton.Draggable = true
toggleButton.Parent = screenGui
Instance.new("UICorner", toggleButton).CornerRadius = UDim.new(0, 10)

local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 340, 0, 460)
mainFrame.Position = UDim2.new(1, -360, 0, 20)
mainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Draggable = true
mainFrame.Visible = false
mainFrame.ClipsDescendants = true
mainFrame.Parent = screenGui
Instance.new("UICorner", mainFrame).CornerRadius = UDim.new(0, 14)

local titleLabel = Instance.new("TextLabel")
titleLabel.Size = UDim2.new(1, 0, 0, 36)
titleLabel.Position = UDim2.new(0, 0, 0, 0)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = "Animation Menu"
titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
titleLabel.Font = Enum.Font.GothamBold
titleLabel.TextScaled = true
titleLabel.Parent = mainFrame

local activeLabel = Instance.new("TextLabel")
activeLabel.Size = UDim2.new(1, -20, 0, 18)
activeLabel.Position = UDim2.new(0, 10, 0, 37)
activeLabel.BackgroundTransparency = 1
activeLabel.Text = "Playing: None"
activeLabel.TextColor3 = Color3.fromRGB(150, 200, 150)
activeLabel.Font = Enum.Font.Gotham
activeLabel.TextSize = 13
activeLabel.TextXAlignment = Enum.TextXAlignment.Left
activeLabel.Parent = mainFrame

local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 36, 0, 36)
closeBtn.Position = UDim2.new(1, -40, 0, 2)
closeBtn.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
closeBtn.Text = "X"
closeBtn.Font = Enum.Font.GothamBold
closeBtn.TextScaled = true
closeBtn.ZIndex = 10
closeBtn.Parent = mainFrame
Instance.new("UICorner", closeBtn).CornerRadius = UDim.new(0, 6)

local tabBar = Instance.new("ScrollingFrame")
tabBar.Size = UDim2.new(1, -20, 0, 30)
tabBar.Position = UDim2.new(0, 10, 0, 60)
tabBar.BackgroundTransparency = 1
tabBar.BorderSizePixel = 0
tabBar.ScrollBarThickness = 3
tabBar.ScrollingDirection = Enum.ScrollingDirection.X
tabBar.CanvasSize = UDim2.new(0, 0, 0, 0)
tabBar.AutomaticCanvasSize = Enum.AutomaticSize.X
tabBar.ClipsDescendants = true
tabBar.Parent = mainFrame

local tabList = Instance.new("UIListLayout")
tabList.FillDirection = Enum.FillDirection.Horizontal
tabList.VerticalAlignment = Enum.VerticalAlignment.Center
tabList.Padding = UDim.new(0, 4)
tabList.Parent = tabBar

local searchBox = Instance.new("TextBox")
searchBox.Size = UDim2.new(1, -20, 0, 28)
searchBox.Position = UDim2.new(0, 10, 0, 96)
searchBox.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
searchBox.TextColor3 = Color3.fromRGB(255, 255, 255)
searchBox.PlaceholderText = "🔍 Search animations..."
searchBox.PlaceholderColor3 = Color3.fromRGB(130, 130, 130)
searchBox.Font = Enum.Font.Gotham
searchBox.TextSize = 14
searchBox.Text = ""
searchBox.ClearTextOnFocus = false
searchBox.BorderSizePixel = 0
searchBox.Parent = mainFrame
Instance.new("UICorner", searchBox).CornerRadius = UDim.new(0, 8)

local scrollFrame = Instance.new("ScrollingFrame")
scrollFrame.Size = UDim2.new(1, -20, 1, -132)
scrollFrame.Position = UDim2.new(0, 10, 0, 130)
scrollFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
scrollFrame.BorderSizePixel = 0
scrollFrame.ScrollBarThickness = 6
scrollFrame.Parent = mainFrame
Instance.new("UICorner", scrollFrame).CornerRadius = UDim.new(0, 8)

local uiListLayout = Instance.new("UIListLayout")
uiListLayout.Padding = UDim.new(0, 6)
uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder
uiListLayout.Parent = scrollFrame

local scrollPadding = Instance.new("UIPadding")
scrollPadding.PaddingTop = UDim.new(0, 6)
scrollPadding.PaddingBottom = UDim.new(0, 6)
scrollPadding.PaddingLeft = UDim.new(0, 4)
scrollPadding.PaddingRight = UDim.new(0, 4)
scrollPadding.Parent = scrollFrame

local function updateScrollCanvas()
	scrollFrame.CanvasSize = UDim2.new(0, 0, 0, uiListLayout.AbsoluteContentSize.Y + 16)
end

uiListLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(updateScrollCanvas)

local function clearChildren(parent)
	for _, c in ipairs(parent:GetChildren()) do
		if c:IsA("GuiObject") then c:Destroy() end
	end
end

local function createAnimButton(setName, category, refreshCallback)
	local container = Instance.new("Frame")
	container.Size = UDim2.new(1, -8, 0, 38)
	container.BackgroundTransparency = 1
	container.Parent = scrollFrame

	local btn = Instance.new("TextButton")
	btn.Size = UDim2.new(1, -44, 1, 0)
	btn.Position = UDim2.new(0, 0, 0, 0)
	btn.BackgroundColor3 = (activeSetName == setName and activeCategory == category)
		and Color3.fromRGB(80, 130, 80)
		or Color3.fromRGB(50, 50, 50)
	btn.TextColor3 = Color3.fromRGB(255, 255, 255)
	btn.Font = Enum.Font.GothamBold
	btn.Text = setName
	btn.TextScaled = true
	btn.AutoButtonColor = true
	btn.BorderSizePixel = 0
	btn.Parent = container
	Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 10)

	local starBtn = Instance.new("TextButton")
	starBtn.Size = UDim2.new(0, 36, 1, 0)
	starBtn.Position = UDim2.new(1, -36, 0, 0)
	starBtn.BackgroundColor3 = isFavourited(category, setName)
		and Color3.fromRGB(200, 160, 20)
		or Color3.fromRGB(60, 60, 60)
	starBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
	starBtn.Font = Enum.Font.GothamBold
	starBtn.Text = "★"
	starBtn.TextScaled = true
	starBtn.AutoButtonColor = true
	starBtn.BorderSizePixel = 0
	starBtn.Parent = container
	Instance.new("UICorner", starBtn).CornerRadius = UDim.new(0, 10)

	btn.MouseButton1Click:Connect(function()
		activeSetName, activeCategory = setName, category
		loadAnimationSet(LocalPlayer.Character, category, setName)
		activeLabel.Text = "Playing: [" .. (tabShortNames[category] or category) .. "] " .. setName
		if refreshCallback then refreshCallback() end
	end)

	starBtn.MouseButton1Click:Connect(function()
		toggleFavourite(category, setName)
		starBtn.BackgroundColor3 = isFavourited(category, setName)
			and Color3.fromRGB(200, 160, 20)
			or Color3.fromRGB(60, 60, 60)
		if currentTabCategory == "__FAVOURITES__" then
			if refreshCallback then refreshCallback() end
		end
	end)

	return container
end

local function showCategory(category)
	currentTabCategory = category
	clearChildren(scrollFrame)
	local filter = currentSearchText:lower()
	for setName in pairs(animationSets[category]) do
		if filter == "" or setName:lower():find(filter, 1, true) then
			createAnimButton(setName, category, function()
				showCategory(category)
			end)
		end
	end
	updateScrollCanvas()
end

local function showFavourites()
	currentTabCategory = "__FAVOURITES__"
	clearChildren(scrollFrame)
	local filter = currentSearchText:lower()
	local anyFound = false

	for key, _ in pairs(favourites) do
		local sep = key:find("|")
		if sep then
			local cat = key:sub(1, sep - 1)
			local sName = key:sub(sep + 1)
			if animationSets[cat] and animationSets[cat][sName] then
				if filter == "" or sName:lower():find(filter, 1, true) or cat:lower():find(filter, 1, true) then
					local labelFrame = Instance.new("Frame")
					labelFrame.Size = UDim2.new(1, -8, 0, 38)
					labelFrame.BackgroundTransparency = 1
					labelFrame.Parent = scrollFrame

					local catLabel = Instance.new("TextLabel")
					catLabel.Size = UDim2.new(0, 50, 1, 0)
					catLabel.BackgroundColor3 = Color3.fromRGB(70, 70, 100)
					catLabel.TextColor3 = Color3.fromRGB(180, 180, 255)
					catLabel.Font = Enum.Font.GothamBold
					catLabel.Text = tabShortNames[cat] or cat:sub(1, 2)
					catLabel.TextScaled = true
					catLabel.BorderSizePixel = 0
					catLabel.Parent = labelFrame
					Instance.new("UICorner", catLabel).CornerRadius = UDim.new(0, 8)

					local btn = Instance.new("TextButton")
					btn.Size = UDim2.new(1, -96, 1, 0)
					btn.Position = UDim2.new(0, 56, 0, 0)
					btn.BackgroundColor3 = (activeSetName == sName and activeCategory == cat)
						and Color3.fromRGB(80, 130, 80)
						or Color3.fromRGB(50, 50, 50)
					btn.TextColor3 = Color3.fromRGB(255, 255, 255)
					btn.Font = Enum.Font.GothamBold
					btn.Text = sName
					btn.TextScaled = true
					btn.AutoButtonColor = true
					btn.BorderSizePixel = 0
					btn.Parent = labelFrame
					Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 10)

					local starBtn = Instance.new("TextButton")
					starBtn.Size = UDim2.new(0, 36, 1, 0)
					starBtn.Position = UDim2.new(1, -36, 0, 0)
					starBtn.BackgroundColor3 = Color3.fromRGB(200, 160, 20)
					starBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
					starBtn.Font = Enum.Font.GothamBold
					starBtn.Text = "★"
					starBtn.TextScaled = true
					starBtn.AutoButtonColor = true
					starBtn.BorderSizePixel = 0
					starBtn.Parent = labelFrame
					Instance.new("UICorner", starBtn).CornerRadius = UDim.new(0, 10)

					local capturedCat, capturedName = cat, sName
					btn.MouseButton1Click:Connect(function()
						activeSetName, activeCategory = capturedName, capturedCat
						loadAnimationSet(LocalPlayer.Character, capturedCat, capturedName)
						activeLabel.Text = "Playing: [" .. (tabShortNames[capturedCat] or capturedCat) .. "] " .. capturedName
						showFavourites()
					end)
					starBtn.MouseButton1Click:Connect(function()
						toggleFavourite(capturedCat, capturedName)
						showFavourites()
					end)

					anyFound = true
				end
			end
		end
	end

	if not anyFound then
		local emptyLabel = Instance.new("TextLabel")
		emptyLabel.Size = UDim2.new(1, -8, 0, 50)
		emptyLabel.BackgroundTransparency = 1
		emptyLabel.TextColor3 = Color3.fromRGB(130, 130, 130)
		emptyLabel.Font = Enum.Font.Gotham
		emptyLabel.Text = filter ~= "" and "No favourites match search." or "No favourites yet.\nPress ★ on any animation!"
		emptyLabel.TextScaled = true
		emptyLabel.TextWrapped = true
		emptyLabel.Parent = scrollFrame
	end

	updateScrollCanvas()
end

searchBox:GetPropertyChangedSignal("Text"):Connect(function()
	currentSearchText = searchBox.Text
	if currentTabCategory == "__FAVOURITES__" then
		showFavourites()
	elseif currentTabCategory then
		showCategory(currentTabCategory)
	end
end)

local tabButtons = {}

local function setActiveTabColor(activeTab)
	for _, tb in pairs(tabButtons) do
		tb.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
	end
	activeTab.BackgroundColor3 = Color3.fromRGB(80, 110, 180)
end

local favTabBtn = Instance.new("TextButton")
favTabBtn.Size = UDim2.new(0, 36, 0, 28)
favTabBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
favTabBtn.TextColor3 = Color3.fromRGB(255, 215, 0)
favTabBtn.Font = Enum.Font.GothamBold
favTabBtn.Text = "★"
favTabBtn.TextScaled = true
favTabBtn.AutoButtonColor = true
favTabBtn.BorderSizePixel = 0
favTabBtn.Parent = tabBar
Instance.new("UICorner", favTabBtn).CornerRadius = UDim.new(0, 6)
table.insert(tabButtons, favTabBtn)

favTabBtn.MouseButton1Click:Connect(function()
	setActiveTabColor(favTabBtn)
	showFavourites()
end)

for category in pairs(animationSets) do
	local tabBtn = Instance.new("TextButton")
	tabBtn.Size = UDim2.new(0, 36, 0, 28)
	tabBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
	tabBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
	tabBtn.Font = Enum.Font.GothamBold
	tabBtn.Text = tabShortNames[category] or category:sub(1, 2)
	tabBtn.TextScaled = true
	tabBtn.AutoButtonColor = true
	tabBtn.BorderSizePixel = 0
	tabBtn.Parent = tabBar
	Instance.new("UICorner", tabBtn).CornerRadius = UDim.new(0, 6)
	table.insert(tabButtons, tabBtn)

	local capturedCat = category
	tabBtn.MouseButton1Click:Connect(function()
		setActiveTabColor(tabBtn)
		showCategory(capturedCat)
	end)
end

toggleButton.MouseButton1Click:Connect(function()
	mainFrame.Visible = not mainFrame.Visible
end)

closeBtn.MouseButton1Click:Connect(function()
	mainFrame.Visible = false
end)

UserInputService.InputBegan:Connect(function(input, gp)
	if gp then return end
	if input.KeyCode == Enum.KeyCode.M then
		mainFrame.Visible = not mainFrame.Visible
	end
end)

Features & Information

Die of Death Animation Changer v2 Rescripted and fixed for a better experience with some aditions bug fixes and this version of animation changer its made for nostalgic ppl who whants to play die of death like in his old days Credits to: Woah_so(klingeris12), William,Taco_Fish(Eljalapeno2000)
#Die Of Death#DOD#Amimation changer#Die of death

Community Comments (16)

Gerson_A50Gerson_A50Jan 12, 2026(edited)

If you guys find a bug i will fix them If you want me to add more old things just suggest them or add it by yourself

Gerson_A50Gerson_A50Jan 12, 2026

.

emrullahsami22emrullahsami22Jan 12, 2026

good script 👍

Replying to @emrullahsami22
Gerson_A50Gerson_A50Jan 12, 2026

@emrullahsami22 ty

Gerson_A50Gerson_A50Jan 16, 2026

if you want to use the old ability animations use this script https://scriptblox.com/script/Die-of-Death-DoD-Old-Animations-Fixed-86329

vanyagamerulleevanyagamerulleeJan 25, 2026

hey, are the animations visible for everyone, or only you?

Replying to @vanyagamerullee
Gerson_A50Gerson_A50Jan 26, 2026

@vanyagamerullee yes they are

ReizeiReizeiJan 28, 2026

how to use it? searched for answer for 2 hours and found nothing :(

Replying to @Reizei
Gerson_A50Gerson_A50Jan 29, 2026

@Reizei just select your animation and thats all. if it doesnt work for you its prob the executor

Gerson_A50Gerson_A50Feb 3, 2026

hey

Gerson_A50Gerson_A50Feb 5, 2026

cheeseburger

BurgerscriptsBurgerscriptsFeb 10, 2026

You forgot to add paranoy

Replying to @Burgerscripts
Gerson_A50Gerson_A50Feb 15, 2026

@PursuerfromDod idk if its necessary because i made the script only for nostalgia

Replying to @Gerson_A50
BurgerscriptsBurgerscriptsFeb 16, 2026

@Gerson_A50 Oh

BurgerscriptsBurgerscriptsFeb 10, 2026

or am i just blind and cant see teh button

x_swordx_swordMay 5, 2026

how and what executer to execute the script

More Scripts for [⏰FASHIONABLY LATE] Die of Death