Quick actions

cmd+k|ctrl+k

Navigation

Languages

isa tool

Snippet info

Language

Lua

Visibility

public

Author

legacy-v1-15894

Created

2024-04-10T00:09:09.183573Z

Updated

2025-05-16T01:07:43.36455Z

-- ceat_ceat
-- original https://pastebin.com/0kCycv8u
owner = owner
NLS = NLS or require(13482937602)()
warn("isa tool by ceat_ceat")
local owner = owner or game:GetService("Players"):GetPlayerFromCharacter(script.Parent)
if not owner then return end

--------------------------------------------------------------------------------

local runservice = game:GetService("RunService")
local tweenservice = game:GetService("TweenService")
local debris = game:GetService("Debris")

--------------------------------------------------------------------------------

local BG_FPS = 30
local SHEET_WIDTH = 3
local SHEET_HEIGHT = 4
local BG_SHEETS = {
	11354963244,
	11354964204,
	11354965754,
	11354966418,
	11354967097,
	11354967782,
	11354968803,
	11354969665,
	11354970429,
	11354971277,
	11354972023,
	11354972637,
	11354973735,
	11354975010,
	11354975782,
	11354976600,
	11354977328,
	11354978770,
	11354979309,
	11354980140,
	11354981363,
	11354982342,
	11354983170,
	11354985311,
	11354986234,
	11354987285,
	11354988914,
	11354989983,
	11354991326,
	11354992376,
	11354993312,
	11354994545,
	11355005450,
	11355006370,
	11355007318,
	11355007984,
	11355009803,
	11355014437,
	11355021092,
	11355021905,
	11355023541,
	11355024677,
	11355028659,
	11355030164,
	11355031147,
	11355031710,
	11355032338,
	11355034771,
	11355035752
}

local DESCEND_TIME = 0.75
local DESCEND_FRAMES = {
	11095004996,
	11095004781,
	11095004558,
	11095004330,
	11095004170,
	11095003957,
	11095003744,
	11095003559,
	11095003386,
	11095003204,
	11095002940,
	11095002722,
	11095002486,
	11095002272,
	11095002048,
	11095001746,
	11095001539,
	11095001367,
	11095001197,
	11095001057,
	11095000849,
	11095000641,
	11095000456,
	11095000299,
	11095000182,
	11094999975,
	11094999754,
	11094999571,
	11094999346,
	11094999188,
	11094999033,
	11094998825,
	11094998601,
	11094998382,
	11094998179,
	11094997963,
	11094997792,
	11094997571
}

local KO_FPS = 30
local KO_FRAMES = {
	10862920972,
	10862921809,
	10862922668,
	10862923555,
	10862924793,
	10862941831,
	10862942751,
	10862943639,
	10862944641,
	10862945542,
	10862964867,
	10862965882,
	10862969327,
	10862972756,
	10862973801,
	10862981387,
	10862982208,
	10862983200,
	10862984100,
	10862985248,
	10863009434,
	10863011066,
	10863012152,
	10863013221,
	10863014920,
	10863020966,
	10863022697,
	10863024820
}

-- { soundid, pitch }
local MUSIC = {
	{ 13608974888, 1 },
	{ 13609022752, 1 },
	{ 13609152933, 0.5 }
}

-- { imageid, soundid, music, attacklabelcolor }
local LAYERS = {
	{ 11536844696, 8765310014, MUSIC[1], Color3.new(1, 1, 1) },
	{ 11536844555, 8765310560, MUSIC[1], Color3.new(0, 1, 0) },
	{ 11536844386, 8765311234, MUSIC[1], Color3.new(0.2, 0.4, 1) },
	{ 11536844211, 8765312042, MUSIC[1], Color3.new(1, 0, 1) },
	{ 11536844060, 8765312392, MUSIC[2], Color3.new(1, 1, 0) },
	{ 11536843409, 8765313042, MUSIC[2], Color3.new(1, 0, 0) },
	{ 11536843284, 8765313651, MUSIC[2], "RAINBOW" },
	{ 11536843179, 8765314189, MUSIC[3], "RAINBOW" }
}

local ATTACK_LABEL_FONT = Font.new("rbxasset://fonts/families/RomanAntique.json")
local ATTACK_LABEL_BG_COLORS = {
	Color3.new(1, 0, 0),
	Color3.new(0, 1, 1),
	Color3.fromRGB(85, 85, 127),
	Color3.fromRGB(255, 150, 0),
	Color3.new(0, 0, 1),
	Color3.new(1, 0, 1)
}

local ATTACK_LABEL_RAINBOW_CYCLE_TIME = 16

local ATTACK_PRESETS = {
	Modern = {
		"Instant Death Injury",
		"Direct Death",
		"State Manipulation",
		"State Reversal",
		"Soul Elimination",
		"ExplodBreak",
		"Character Disassembly",
		
		"Character Elimination",
		"Direct Elimination",
		"Combined Elimination",
		"Full Elimination",
		"Amplified Character Elimination",
		"Amplified Direct Elimination",
		"Amplified Combined Elimination",
		"Amplified Full Elimination",
		"Amplified Full Elimination + System Removal",
		
		"inf Applifed Throw",
		"Fake Dgeradation",
		"Mesh Degradation",
		"Enforced Mesh Degradation",
		"Full Mesh Degradation",
		"Mesh ID Degradation",
		"Direct Void Throw",
		"Combined Void Throw",
		
		"Fake Degradation Tampering",
		"Mesh Degradation Tampering",
		"Forced Mesh Degradation Tampering",
		"Full Mesh Degradation Tampering",
		"Forced Full Mesh Degradation Tampering",
		"Mesh ID Degradation Tampering",
		"Forced Mesh ID Degradation Tampering",
		"Void Tampering Throw",
		"Combined Void Tampering Throw",
		"Forced Void Tampering Throw",
		"Forced Combined Void Tampering Throw",
		
		"Amplified Fake Degradation Tampering",
		"Amplified Mesh Degradation Tampering",
		"Amplified Forced Mesh Degradation Tampering",
		"Amplified Enforced Mesh Degradation",
		"Amplified Full Mesh Degradation Tampering",
		"Amplified Forced Full Mesh Degradation Tampering",
		"Amplified Mesh ID Degradation Tampering",
		"Amplified Forced Mesh ID Degradation Tampering",
		"Amplified Void Tampering Throw",
		"Amplified Combined Void Tampering Throw",
		"Amplified Forced Void Tampering Throw",
		"Amplified Forced Combined Void Tampering Throw",
		
		"HYPERDeath",
		"HYPER F-Degradation",
		"HYPERDegradation",
		"HYPER E-Degradation",
		"Full HYPERDegradation",
		"ID HYPERDegradation",
		"HYPERVoid",
		"Combined HYPERVoid",
		"Esoteric Elimination",
		"Amplified Esoteric Elimination",
		"PPE Obliteration",
		"PERM Erasure",
		
		"摧ける",
		"Infinite Soulabyss"
	},
	Old = {
		"Instant Damage",
		
		"Fake Void Throw",
		
		"Two-Fold Forced Mesh Degradation Tampering",
		
		"砕けろ"
	}
}

--------------------------------------------------------------------------------

local sheetframes = SHEET_WIDTH * SHEET_HEIGHT
local totalframes = #BG_SHEETS * sheetframes
local starttime = os.clock()

local tool = Instance.new("Tool")
tool.Name = "ISA"

local handle = Instance.new("Part", tool)
handle.Size = Vector3.new(16/2, 9/2, 1)
handle.Massless = true
handle.Name = "Handle"

local music = Instance.new("Sound", handle)
music.Looped = true
music.Volume = 1
music.SoundId = "rbxassetid://" .. MUSIC[1][1]
music.Pitch = MUSIC[1][2]

local surfacegui = Instance.new("SurfaceGui", handle)
surfacegui.ClipsDescendants = true

local bgcontainer = Instance.new("Frame", surfacegui)
bgcontainer.BackgroundTransparency = 1
bgcontainer.Size = UDim2.new(1, 0, 1, 0)
bgcontainer.ZIndex = 1

local descendcontainer = Instance.new("Frame", surfacegui)
descendcontainer.BackgroundTransparency = 1
descendcontainer.Size = UDim2.new(1, 0, 1, 0)
descendcontainer.Visible = false
descendcontainer.ZIndex = 2

local kocontainer = Instance.new("Frame", surfacegui)
kocontainer.BackgroundTransparency = 1
kocontainer.Size = UDim2.new(1, 0, 1, 0)
kocontainer.Visible = false
kocontainer.ZIndex = 3

local attacklabelbackground = Instance.new("ImageLabel", surfacegui)
attacklabelbackground.BackgroundTransparency = 1
attacklabelbackground.Position = UDim2.new(0, 0, 0.15, 0)
attacklabelbackground.Size = UDim2.new(1, 0, 0.15, 0)
attacklabelbackground.Image = "rbxassetid://11096220259"
attacklabelbackground.Visible = false
attacklabelbackground.ZIndex = 2

local attacklabel = Instance.new("TextLabel", attacklabelbackground)
attacklabel.AnchorPoint = Vector2.new(0.5, 0.5)
attacklabel.BackgroundTransparency = 1
attacklabel.Position = UDim2.new(0.5, 0, 0.45, 0)
attacklabel.Size = UDim2.new(0.9, 0, 0.9, 0)
attacklabel.FontFace = ATTACK_LABEL_FONT
attacklabel.TextColor3 = Color3.new(1, 1, 1)
attacklabel.TextScaled = true
attacklabel.ZIndex = 2

local flash = Instance.new("Frame", surfacegui)
flash.Size = UDim2.new(1, 0, 1, 0)
flash.Visible = false
flash.ZIndex = 3

local bgsheets = {}
local descendframes = {}

for i, frameid in next, BG_SHEETS do
	local image = Instance.new("ImageLabel", bgcontainer)
	image.Image = "rbxassetid://" .. frameid
	image.Size = UDim2.new(SHEET_WIDTH, 0, SHEET_HEIGHT, 0)
	image.Visible = false
	bgsheets[i] = image
end

for i, frameid in next, DESCEND_FRAMES do
	local image = Instance.new("ImageLabel", descendcontainer)
	image.Image = "rbxassetid://" .. frameid
	image.Size = UDim2.new(1, 0, 1, 0)
	image.Visible = false
	descendframes[i] = image
end

for i, frameid in next, KO_FRAMES do
	local image = Instance.new("ImageLabel", kocontainer)
	image.BackgroundTransparency = 1
	image.Image = "rbxassetid://" .. frameid
	image.Size = UDim2.new(1, 0, 1, 0)
	image.Visible = false
	image.Name = i
end

local loadercontainer = Instance.new("Model", tool)

local loadplease = Instance.new("Part", loadercontainer)
loadplease.Anchored = true
loadplease.CanCollide = false
loadplease.CanTouch = false
loadplease.CanQuery = false
loadplease.CFrame = CFrame.new(0, 20, 0)
loadplease.Size = Vector3.zero
loadplease.Transparency = 1

local loaderscreengui = surfacegui:Clone()
loaderscreengui.Parent = loadplease

for _, frame in loaderscreengui:GetDescendants() do
	frame.Visible = true
end

-------------------------------------------------------------------------------

local isdescending = false
local touched
local currentlayer = 0
local currentsong = MUSIC[1]
local lastlaughtime = workspace.DistributedGameTime

local function ko()
	local laugh = Instance.new("Sound", handle)
	laugh.SoundId = "rbxassetid://8765309507"
	laugh.Volume = 3
	laugh:Play()
	debris:AddItem(laugh, 2.1)

	local attacksound = Instance.new("Sound", handle)
	attacksound.SoundId = "rbxassetid://9060378036"
	attacksound.Volume = 4
	attacksound:Play()
	debris:AddItem(attacksound, 2)

	local container = kocontainer:Clone()
	local frames = {}

	for i in next, container:GetChildren() do
		frames[i] = container:FindFirstChild(tostring(i))
	end

	container.Parent = surfacegui
	container.Visible = true
	
	task.spawn(function()
		flash.BackgroundColor3 = Color3.new(1, 0, 0)
		for i = 1, 2 do
			flash.Visible = true
			task.wait(0.075)
			flash.Visible = false
			task.wait(0.075)
		end
	end)

	for i, frame in next, frames do
		if i ~= 1 then
			frames[i - 1].Visible = false
		end
		frame.Visible = true
		task.wait(1/KO_FPS)
	end
	
	task.wait(1)
	container:Destroy()
end

local function ontouched(hit)
	if not hit:IsDescendantOf(tool.Parent) and not hit:IsDescendantOf(tool.Parent) and math.max(hit.Size.X, hit.Size.Y, hit.Size.Z) < 100 then
		pcall(game.Destroy, hit)

		if workspace.DistributedGameTime - lastlaughtime > 0.2 then
			lastlaughtime = workspace.DistributedGameTime
			ko()
		end
	end
end

tool.Equipped:Connect(function(mouse)
	local chr = tool.Parent
	touched = handle.Touched:Connect(ontouched)

	local genesis = Instance.new("Sound", handle)
	genesis.SoundId = "rbxassetid://8765309012"
	genesis.TimePosition = 1
	genesis.Volume = 3
	genesis:Play()
	debris:AddItem(genesis, 2.5)
	
	music.Playing = true
end)

tool.Unequipped:Connect(function()
	if touched then
		touched:Disconnect()
	end

	local death = Instance.new("Sound", handle)
	death.SoundId = "rbxassetid://8765308354"
	death.Volume = 3
	death:Play()
	debris:AddItem(death, 2)
	
	music.Playing = false
end)

tool.Activated:Connect(function()
	if isdescending then return end
	isdescending = true

	descendcontainer.Visible = true

	local descendsound = Instance.new("Sound", handle)
	descendsound.SoundId = "rbxassetid://9060399229"
	descendsound.Volume = 4
	descendsound:Play()
	debris:AddItem(descendsound, 2)

	local descendtime = os.clock()
	repeat
		task.wait()
		local frame = math.ceil((os.clock() - descendtime)/DESCEND_TIME*#descendframes)
		for i, image in next, descendframes do
			image.Visible = frame == i
		end
	until os.clock() - descendtime >= DESCEND_TIME

	descendcontainer.Visible = false
	isdescending = false

	currentlayer = currentlayer + 1
	if currentlayer > #LAYERS then
		currentlayer = 1
	end
	
	local layer = LAYERS[currentlayer]

	local layerimage = Instance.new("ImageLabel")
	layerimage.AnchorPoint = Vector2.new(0.5, 0.5)
	layerimage.BackgroundTransparency = 1
	layerimage.Position = UDim2.new(0.5, 0, 0.5, 0)
	layerimage.Size = UDim2.new(0, 150, 0, 150)
	layerimage.Image = "rbxassetid://" .. layer[1]
	layerimage.ScaleType = Enum.ScaleType.Fit
	layerimage.ZIndex = 5
	layerimage.Parent = surfacegui

	tool.TextureId = "rbxassetid://" .. layer[1]

	tweenservice:Create(layerimage, TweenInfo.new(1), { ImageTransparency = 1 }):Play()
	debris:AddItem(layerimage, 1)

	local voiceline = Instance.new("Sound", handle)
	voiceline.SoundId = "rbxassetid://" .. layer[2]
	voiceline.Volume = 4
	voiceline:Play()
	debris:AddItem(voiceline, 5)

	local attacksound = Instance.new("Sound", handle)
	attacksound.SoundId = "rbxassetid://9060378036"
	attacksound.Volume = 4
	attacksound:Play()
	debris:AddItem(attacksound, 2)
	
	local newlabelcolor = layer[4]
	if newlabelcolor == "RAINBOW" then
		attacklabel.TextColor3 = Color3.fromHSV((workspace.DistributedGameTime/ATTACK_LABEL_RAINBOW_CYCLE_TIME)%1, 0.8, 1)
	else
		attacklabel.TextColor3 = newlabelcolor
	end
	
	if layer[3] ~= currentsong then
		currentsong = layer[3]
		music.SoundId = "rbxassetid://" .. currentsong[1]
		music.Pitch = currentsong[2]
		music.TimePosition = 0
	end
	
	flash.BackgroundColor3 = Color3.new(1, 1, 1)
	for i = 1, 2 do
		flash.Visible = true
		task.wait(0.075)
		flash.Visible = false
		task.wait(0.075)
	end
end)

-------------------------------------------------------------------------------
-- attack label input
-------------------------------------------------------------------------------

function newattacklabel(labelclass)
	local bg = Instance.new("ImageLabel")
	bg.BackgroundTransparency = 1
	bg.Size = UDim2.new(0, 100, 0, 30)
	bg.Image = "rbxassetid://11096220259"

	local button = Instance.new(labelclass, bg)
	button.AnchorPoint = Vector2.new(0.5, 0.5)
	button.BackgroundTransparency = 1
	button.Position = UDim2.new(0.5, 0, 0.45, 0)
	button.Size = UDim2.new(1, 0, 0.9, 0)
	button.FontFace = ATTACK_LABEL_FONT
	button.TextColor3 = Color3.new(1, 1, 1)
	button.TextSize = 20
	button.Name = "Label"
	
	return bg
end

local screengui = Instance.new("ScreenGui")

local remoteevent = Instance.new("RemoteEvent", screengui)
remoteevent.Name = "SETATTACKNAME"

local inputcontainer = Instance.new("Frame", screengui)
inputcontainer.AnchorPoint = Vector2.new(1, 1)
inputcontainer.BackgroundTransparency = 1
inputcontainer.Position = UDim2.new(1, 0, 1, 0)
inputcontainer.Size = UDim2.new(0, 100, 0, 100)

local inputuilist = Instance.new("UIListLayout", inputcontainer)
inputuilist.Padding = UDim.new(0, 5)
inputuilist.FillDirection = Enum.FillDirection.Horizontal
inputuilist.HorizontalAlignment = Enum.HorizontalAlignment.Right
inputuilist.SortOrder = Enum.SortOrder.LayoutOrder
inputuilist.VerticalAlignment = Enum.VerticalAlignment.Bottom

function createselector(name, layoutorder, list)
	local bg = newattacklabel("TextButton")
	bg.LayoutOrder = layoutorder
	bg.Label.Text = name
	bg.Label.Name = "Opener"
	
	local frame = Instance.new("ScrollingFrame", bg)
	frame.AnchorPoint = Vector2.new(0, 1)
	frame.BackgroundTransparency = 1
	frame.BorderSizePixel = 0
	frame.Position = UDim2.new(0, 0, 0, -2)
	frame.Size = UDim2.new(1, 0, 10, 0)
	frame.ScrollBarThickness = 0
	frame.AutomaticCanvasSize = Enum.AutomaticSize.Y
	frame.Visible = false
	
	local uilistlayout = Instance.new("UIListLayout", frame)
	uilistlayout.SortOrder = Enum.SortOrder.Name
	uilistlayout.Padding = UDim.new(0, 2)
	
	for _, attackname in next, list do
		local attackbg = newattacklabel("TextButton")
		attackbg.Name = attackname
		attackbg.Label.Text = attackname
		attackbg.Label.TextScaled = true
		attackbg.Label.Name = "Preset"
		
		local padding = Instance.new("UIPadding", attackbg.Preset)
		padding.PaddingLeft = UDim.new(0, 10)
		padding.PaddingRight = UDim.new(0, 10)
		
		attackbg.Parent = frame
	end
	
	return bg
end

local inputbox = newattacklabel("TextBox")
inputbox.AutomaticSize = Enum.AutomaticSize.X
inputbox.Size = UDim2.new(0, 200, 0, 30)
inputbox.Label.AnchorPoint = Vector2.new(0, 0.5)
inputbox.Label.AutomaticSize = Enum.AutomaticSize.X
inputbox.Label.ClearTextOnFocus = false
inputbox.Label.Position = UDim2.new(0, 0, 0.45, 0)
inputbox.Label.PlaceholderColor3 = Color3.fromRGB(178, 178, 178)
inputbox.Label.PlaceholderText = "Input Attack Name"
inputbox.Label.Text = ""

local inputpadding = Instance.new("UIPadding", inputbox.Label)
inputpadding.PaddingLeft = UDim.new(0, 20)
inputpadding.PaddingRight = UDim.new(0, 20)
inputbox.Label.Name = "TextBox"
inputbox.Name = "InputBox"
inputbox.LayoutOrder = 3
inputbox.Parent = inputcontainer

createselector("Presets", 2, ATTACK_PRESETS.Modern).Parent = inputcontainer
createselector("Old Presets", 1, ATTACK_PRESETS.Old).Parent = inputcontainer

remoteevent.OnServerEvent:Connect(function(_, text)
	if typeof(text) ~= "string" then
		return
	end
	
	if text == "" then
		attacklabelbackground.Visible = false
		if workspace.DistributedGameTime - lastlaughtime > 0.2 then
			lastlaughtime = workspace.DistributedGameTime
			ko()
		end
		return
	end
	
	attacklabelbackground.Visible = true
	attacklabel.Text = text
	
	local attackflash = flash:Clone()
	attackflash.BackgroundColor3 = Color3.new(1, 1, 1)
	attackflash.Visible = true
	attackflash.Parent = surfacegui
	
	tweenservice:Create(attackflash, TweenInfo.new(0.5), {
		BackgroundTransparency = 1
	}):Play()
	debris:AddItem(attackflash, 0.5)
	
	local attacksound = Instance.new("Sound", handle)
	attacksound.SoundId = "rbxassetid://9060378036"
	attacksound.Volume = 4
	attacksound:Play()
	debris:AddItem(attacksound, 2)
end)

task.spawn(NLS, [[

local screengui = script.Parent
local remoteevent = screengui:WaitForChild("SETATTACKNAME")
local container = screengui:WaitForChild("Frame")

for _, inst in next, container:GetDescendants() do
	if inst.Name == "Opener" then
		local frame = inst.Parent.ScrollingFrame
		inst.MouseButton1Click:Connect(function()
			frame.Visible = not frame.Visible
		end)
	elseif inst.Name == "Preset" then
		local text = inst.Text
		inst.MouseButton1Click:Connect(function()
			remoteevent:FireServer(text)
		end)
	end
end

local inputbox = container:WaitForChild("InputBox"):WaitForChild("TextBox")
inputbox.FocusLost:Connect(function()
	remoteevent:FireServer(inputbox.Text)
end)

]], screengui)

screengui.Parent = owner:FindFirstChildOfClass("PlayerGui")

-------------------------------------------------------------------------------

tool.Parent = owner:FindFirstChildOfClass("Backpack") or Instance.new("Backpack", owner)

-------------------------------------------------------------------------------

-------------------------------------------------------------------------------

local waittime = 1/BG_FPS
local sheetidx = 1
local tileidx = 0
local attackbgcoloridx = 0
local nextattacklabeltweentime = 0

local prevsheet
while tool:IsDescendantOf(game) do
	if prevsheet then
		prevsheet.Visible = false
	end

	if sheetidx > #bgsheets then
		sheetidx = 1
	end

	local sheet = bgsheets[sheetidx]
	sheet.Visible = true

	prevsheet = sheet

	for y = 0, 3 do
		for x = 0, 2 do
			tileidx = tileidx + 1

			sheet.Position = UDim2.new(-x, 0, -y, 0)
			sheet.ImageColor3 = Color3.fromHSV(tileidx / totalframes % 1, 0.75, 1)
			
			if LAYERS[currentlayer] and LAYERS[currentlayer][4] == "RAINBOW" then
				attacklabel.TextColor3 = Color3.fromHSV((workspace.DistributedGameTime/ATTACK_LABEL_RAINBOW_CYCLE_TIME)%1, 0.8, 1)
			end
			
			if workspace.DistributedGameTime > nextattacklabeltweentime then
				attackbgcoloridx = attackbgcoloridx + 1
				if attackbgcoloridx > #ATTACK_LABEL_BG_COLORS then
					attackbgcoloridx = 1
				end

				local duration = math.random(2, 4)
				tweenservice:Create(attacklabelbackground, TweenInfo.new(duration), {
					ImageColor3 = ATTACK_LABEL_BG_COLORS[attackbgcoloridx]
				}):Play()

				nextattacklabeltweentime = workspace.DistributedGameTime + duration * 1.25
			end
			
			loadplease.CFrame = handle.CFrame * CFrame.new(0, 0, -0.6)
			
			task.wait(waittime)
		end
	end

	sheetidx = sheetidx + 1
end
INFO