Samsonite Ability
Key RequiredUniversal

Samsonite Ability

Universal ScriptStarGltichStarGltich 204 views 112 executesUpdated Feb 9, 2026
Unrated
00
Lua Script•306 lines (13572 chars)
local Player = game.Players.LocalPlayer
local RunService = game:GetService("RunService")
local Debris = game:GetService("Debris")

-- CONFIGURAÇÕES GERAIS
local ActiveDoors = {} 
local DomainCenter = Vector3.new(30000, 30000, 30000)
local DomainActive = false
local WalkSpeedBase = 16 
local TempSpeed = 0
local IsImmobilized = false
local M1Stack = 0
local PlayerHits = {}

-- IDs DE ÁUDIO
local SFX = {
	DOOR_SPAWN = "1253544696",
	FOOTSTEPS = "103446626057429",
	STOMP_IMPACT = "73130804959365",
	DOMAIN_AMBIENT = "91136538628178",
	WIGGLE_FINGERS = "89093850041492",
	WAVE = "1453205731",
	WARP = "115559659035777",
	GRAB_VOICE = "80125518005884", 
	GRAB_EFFECT = "86692601973391",
	BLOOD_SFX = "135417409504018",
	PUNCH_HIT = "130870990615389"
}

-- FUNÇÃO AUXILIAR: REORDENAR NÚMEROS DAS PORTAS
local function reorderDoors()
	for i, data in ipairs(ActiveDoors) do
		data.Num = i
		if data.Part and data.Part:FindFirstChild("BillboardGui") then
			data.Part.BillboardGui.TextLabel.Text = tostring(i)
		end
	end
end

-- FUNÇÃO DE SOM
local function playSFX(id, vol, duration)
	local char = Player.Character
	if char and char:FindFirstChild("HumanoidRootPart") then
		local s = Instance.new("Sound", char.HumanoidRootPart)
		s.SoundId = "rbxassetid://" .. id
		s.Volume = vol or 2
		s:Play()
		if duration then
			task.delay(duration, function() if s then s:Stop() s:Destroy() end end)
		else
			Debris:AddItem(s, 8)
		end
		return s
	end
end

-- GUI
if Player.PlayerGui:FindFirstChild("SamsoniteV5.0") then
	Player.PlayerGui["SamsoniteV5.0"]:Destroy()
end

local ScreenGui = Instance.new("ScreenGui", Player.PlayerGui)
ScreenGui.Name = "SamsoniteV5.0"
ScreenGui.ResetOnSpawn = false

-- PAINEL DE STATUS
local EffectsFrame = Instance.new("Frame", ScreenGui)
EffectsFrame.Size = UDim2.new(0, 220, 0, 300); EffectsFrame.Position = UDim2.new(0.02, 0, 0.4, 0); EffectsFrame.BackgroundTransparency = 1
local layout = Instance.new("UIListLayout", EffectsFrame); layout.Padding = UDim.new(0, 5)

local function addVisualEffect(text, color, duration)
	local label = Instance.new("TextLabel", EffectsFrame)
	label.Size = UDim2.new(1, 0, 0, 30); label.BackgroundColor3 = Color3.fromRGB(20, 20, 20); label.TextColor3 = color; label.Text = "  " .. text:upper(); label.Font = Enum.Font.SourceSansBold; label.TextSize = 16; label.TextXAlignment = Enum.TextXAlignment.Left; Instance.new("UICorner", label); Debris:AddItem(label, duration)
end

-- SISTEMA DE MOVIMENTO
task.spawn(function()
	while true do
		local char = Player.Character
		local hum = char and char:FindFirstChild("Humanoid")
		if hum and hum.MoveDirection.Magnitude > 0 and not IsImmobilized then
			playSFX(SFX.FOOTSTEPS, 1)
			task.wait(math.clamp(6.0 / hum.WalkSpeed, 0.25, 0.6))
		else
			task.wait(0.1)
		end
	end
end)

RunService.Heartbeat:Connect(function()
	local char = Player.Character
	local hum = char and char:FindFirstChild("Humanoid")
	if not hum then return end
	
	if IsImmobilized then 
		hum.WalkSpeed = 0; hum.JumpPower = 0
	elseif TempSpeed > 0 then 
		hum.WalkSpeed = TempSpeed 
	elseif DomainActive then 
		hum.WalkSpeed = 40
	else 
		hum.WalkSpeed = WalkSpeedBase + M1Stack 
	end
end)

-- ==========================================================
-- MECÂNICA M1
-- ==========================================================
local M1Btn = Instance.new("TextButton", ScreenGui)
M1Btn.Size = UDim2.new(0, 75, 0, 75); M1Btn.Position = UDim2.new(0.83, 5, 0.68, 0); M1Btn.BackgroundColor3 = Color3.fromRGB(180, 0, 0); M1Btn.Text = "M1"; M1Btn.Font = Enum.Font.SourceSansBold; M1Btn.TextSize = 24; M1Btn.TextColor3 = Color3.new(1,1,1); Instance.new("UICorner", M1Btn).CornerRadius = UDim.new(1, 0); Instance.new("UIStroke", M1Btn).Thickness = 2
local M1CdLabel = Instance.new("TextLabel", M1Btn); M1CdLabel.Size = UDim2.new(1,0,1,0); M1CdLabel.BackgroundTransparency = 1; M1CdLabel.Text = ""; M1CdLabel.TextColor3 = Color3.new(1,1,1); M1CdLabel.TextSize = 28
local onM1Cd = false

M1Btn.MouseButton1Click:Connect(function()
	if onM1Cd or IsImmobilized then return end
	onM1Cd = true
	local char = Player.Character
	local root = char.HumanoidRootPart
	local stopSpawning = false
	
	task.spawn(function()
		local startTime = tick()
		while tick() - startTime < 0.6 and not stopSpawning do
			local hb = Instance.new("Part", workspace)
			hb.Size = Vector3.new(5, 7, 5); hb.CFrame = root.CFrame * CFrame.new(0, 0, -4.5); hb.Transparency = 0.9; hb.Color = Color3.new(1, 0, 0); hb.Material = Enum.Material.SmoothPlastic; hb.CanCollide = false; hb.Anchored = true
			
			local overlapParams = OverlapParams.new(); overlapParams.FilterDescendantsInstances = {char}; overlapParams.FilterType = Enum.RaycastFilterType.Exclude
			local parts = workspace:GetPartsInPart(hb, overlapParams)
			
			for _, part in pairs(parts) do
				local enemy = part:FindFirstAncestorOfClass("Model")
				if enemy and enemy:FindFirstChild("Humanoid") then
					stopSpawning = true
					hb.Color = Color3.new(0, 1, 0); hb.Transparency = 0.6; Debris:AddItem(hb, 1.5)
					
					local punchVols = {35, 40, 50, 65, 85, 100}
					local selectedVol = punchVols[math.random(1, #punchVols)]
					playSFX(SFX.PUNCH_HIT, selectedVol)
					
					PlayerHits[enemy] = (PlayerHits[enemy] or 0) + 1
					local hits = PlayerHits[enemy]
					addVisualEffect("HIT: " .. hits .. "/6", Color3.fromRGB(255, 140, 0), 1.5)
					
					if hits >= 6 then
						PlayerHits[enemy] = 0; IsImmobilized = true
						playSFX(SFX.GRAB_EFFECT, 5, 1); playSFX(SFX.GRAB_VOICE, 6)
						addVisualEffect("☠️ GRABBED ☠️", Color3.new(1, 0, 0), 6)
						task.wait(6)
						playSFX(SFX.BLOOD_SFX, 6); IsImmobilized = false
						TempSpeed = 50; addVisualEffect("BLOODLUST", Color3.new(0, 1, 1), 2.5)
						task.delay(2.5, function() TempSpeed = 0 end)
						for _, p in pairs(game.Players:GetPlayers()) do
							if p.Character and p ~= Player then
								local h = Instance.new("Highlight", p.Character); h.FillColor = Color3.new(1, 0, 0); h.OutlineColor = Color3.new(1,1,1); Debris:AddItem(h, 2)
							end
						end
					end
					break
				end
			end
			if not stopSpawning then Debris:AddItem(hb, 0.15) end
			task.wait(0.05)
		end
	end)
	task.spawn(function()
		local t = 2.5; while t > 0 do M1CdLabel.Text = string.format("%.1f", t); task.wait(0.1); t = t - 0.1 end; M1CdLabel.Text = ""; onM1Cd = false
	end)
end)

-- ==========================================================
-- HABILIDADES
-- ==========================================================
local function createAbilityBtn(name, pos, color, cooldown, callback)
	local btn = Instance.new("TextButton", ScreenGui)
	btn.Size = UDim2.new(0, 80, 0, 80); btn.Position = pos; btn.BackgroundColor3 = Color3.fromRGB(25, 25, 25); btn.Text = name; btn.TextColor3 = color; btn.Font = Enum.Font.SourceSansBold; btn.TextSize = 14; Instance.new("UICorner", btn); Instance.new("UIStroke", btn).Color = color; Instance.new("UIStroke", btn).Thickness = 2
	local cdLabel = Instance.new("TextLabel", btn); cdLabel.Size = UDim2.new(1, 0, 1, 0); cdLabel.BackgroundTransparency = 1; cdLabel.Text = ""; cdLabel.TextColor3 = Color3.new(1, 1, 1); cdLabel.TextSize = 22
	local onCd = false
	btn.MouseButton1Click:Connect(function()
		if onCd or IsImmobilized then return end
		if callback() then
			onCd = true
			task.spawn(function()
				local t = cooldown
				while t > 0 do cdLabel.Text = string.format("%.1f", t); task.wait(0.1); t = t - 0.1 end
				cdLabel.Text = ""; onCd = false
			end)
		end
	end)
end

-- 1. DOORS (DURAÇÃO: 160 SEGUNDOS)
createAbilityBtn("DOORS", UDim2.new(0.65, 0, 0.8, 0), Color3.new(1,1,1), 10, function()
	playSFX(SFX.DOOR_SPAWN, 3)
	local colors = {Color3.new(0,1,0), Color3.new(0,0,1), Color3.new(0.5,0,1), Color3.new(1,0,1)}
	local picked = colors[math.random(1, #colors)]
	local door = Instance.new("Part", workspace)
	door.Size = Vector3.new(6, 9, 1); door.CFrame = Player.Character.HumanoidRootPart.CFrame * CFrame.new(0, 0, -5); door.Anchored = true; door.CanCollide = false; door.Color = picked; door.Material = Enum.Material.Neon
	local b = Instance.new("BillboardGui", door); b.Name = "BillboardGui"; b.Size = UDim2.new(0, 50, 0, 50); b.AlwaysOnTop = true
	local t = Instance.new("TextLabel", b); t.Size = UDim2.new(1, 0, 1, 0); t.BackgroundTransparency = 1; t.Text = ""; t.TextColor3 = Color3.new(1, 1, 1); t.Font = Enum.Font.SourceSansBold; t.TextSize = 30; Instance.new("UIStroke", t)
	local doorData = {Part = door, Pos = door.CFrame, Color = picked, Num = 0}
	table.insert(ActiveDoors, doorData)
	reorderDoors()
	
	-- Tempo solicitado: 160 segundos
	Debris:AddItem(door, 160)
	
	door.Destroying:Connect(function()
		for i, v in ipairs(ActiveDoors) do if v == doorData then table.remove(ActiveDoors, i) reorderDoors() break end end
	end)
	return true
end)

-- 2. STOMP 
createAbilityBtn("STOMP", UDim2.new(0.74, 0, 0.8, 0), Color3.fromRGB(255, 0, 150), 28, function()
	playSFX(SFX.STOMP_IMPACT, 4)
	local wave = Instance.new("Part", workspace)
	wave.Shape = Enum.PartType.Cylinder; wave.Size = Vector3.new(2, 90, 90); wave.CFrame = Player.Character.HumanoidRootPart.CFrame * CFrame.new(0, -2.5, 0) * CFrame.Angles(0, 0, math.rad(90)); wave.Anchored = true; wave.CanCollide = false; wave.Color = Color3.fromRGB(255, 0, 150); wave.Material = Enum.Material.Neon; wave.Transparency = 0.5
	task.spawn(function()
		local hits = 0; local hitMap = {}
		for i = 1, 15 do
			for _, p in pairs(workspace:GetPartBoundsInRadius(wave.Position, 45)) do
				local m = p:FindFirstAncestorOfClass("Model")
				if m and m:FindFirstChild("Humanoid") and m ~= Player.Character and not hitMap[m] then
					hitMap[m] = true; hits = hits + 1
					local h = Instance.new("Highlight", m); h.FillColor = Color3.new(1, 0, 0); Debris:AddItem(h, 1)
				end
			end
			task.wait(0.2)
		end
		wave:Destroy()
		if hits > 0 then
			TempSpeed = math.min(19 + hits, 32)
			addVisualEffect("STOMP BOOST", Color3.new(1, 0, 1), 8)
			task.delay(8, function() TempSpeed = 0 end)
		end
	end)
	return true
end)

-- 3. WAVE
createAbilityBtn("WAVE", UDim2.new(0.83, 0, 0.8, 0), Color3.fromRGB(0, 150, 255), 35, function()
	playSFX(SFX.WAVE, 3)
	local puddle = Instance.new("Part", workspace)
	puddle.Size = Vector3.new(50, 0.5, 50); puddle.Position = Player.Character.HumanoidRootPart.Position - Vector3.new(0, 2.8, 0); puddle.Anchored = true; puddle.CanCollide = false; puddle.Color = Color3.fromRGB(0, 150, 255); puddle.Material = Enum.Material.Neon; puddle.Transparency = 0.6; Debris:AddItem(puddle, 20)
	task.spawn(function()
		local et = tick() + 20
		while tick() < et do
			for _, p in pairs(workspace:GetPartBoundsInBox(puddle.CFrame, puddle.Size)) do
				local m = p:FindFirstAncestorOfClass("Model")
				if m and m:FindFirstChild("Humanoid") and m ~= Player.Character and not m:FindFirstChild("WaveMark") then
					local h = Instance.new("Highlight", m); h.Name = "WaveMark"; h.FillColor = Color3.new(0, 0.5, 1); Debris:AddItem(h, 1.5)
				end
			end
			task.wait(0.5)
		end
	end)
	return true
end)

-- 4. DOMAIN
createAbilityBtn("DOMAIN", UDim2.new(0.92, 0, 0.8, 0), Color3.new(1,0,0), 50, function()
	IsImmobilized = true; playSFX(SFX.WIGGLE_FINGERS, 3)
	addVisualEffect("DOMAIN EXPANSION", Color3.new(1, 0, 0), 2.2)
	task.wait(2.2); IsImmobilized = false; DomainActive = true
	local root = Player.Character.HumanoidRootPart; root.CFrame = CFrame.new(DomainCenter + Vector3.new(0, 10, 0))
	local floor = Instance.new("Part", workspace); floor.Size = Vector3.new(400, 2, 400); floor.Position = DomainCenter; floor.Anchored = true; floor.Color = Color3.new(0, 0, 0); local music = playSFX(SFX.DOMAIN_AMBIENT, 5); music.Looped = true
	local dInstances = {}
	for i, data in ipairs(ActiveDoors) do
		if data.Part and data.Part.Parent then
			local p = Instance.new("Part", workspace); p.Size = Vector3.new(6, 9, 1); p.Position = DomainCenter + Vector3.new(math.random(-100, 100), 6, math.random(-100, 100)); p.Anchored = true; p.Color = data.Color; p.Material = Enum.Material.Neon
			local b = Instance.new("BillboardGui", p); b.Size = UDim2.new(0, 50, 0, 50); b.AlwaysOnTop = true
			local t = Instance.new("TextLabel", b); t.Size = UDim2.new(1, 0, 1, 0); t.BackgroundTransparency = 1; t.Text = tostring(data.Num); t.TextColor3 = Color3.new(1, 1, 1); t.Font = Enum.Font.SourceSansBold; t.TextSize = 25; Instance.new("UIStroke", t)
			table.insert(dInstances, {Part = p, RealIndex = i}) 
		end
	end
	local conn; conn = RunService.Heartbeat:Connect(function()
		if not DomainActive then conn:Disconnect() return end
		for _, d in ipairs(dInstances) do
			if (root.Position - d.Part.Position).Magnitude < 12 then
				conn:Disconnect(); DomainActive = false; music:Destroy(); floor:Destroy()
				local targetDoorData = ActiveDoors[d.RealIndex]
				if targetDoorData and targetDoorData.Part then
					root.CFrame = targetDoorData.Pos
					playSFX(SFX.WARP, 3)
					targetDoorData.Part:Destroy()
					table.remove(ActiveDoors, d.RealIndex)
					reorderDoors()
				end
				IsImmobilized = true; addVisualEffect("EXITING...", Color3.new(1, 1, 1), 1); task.wait(1); IsImmobilized = false
				
				TempSpeed = 18 
				addVisualEffect("PORTAL BUFF (SPD 18)", Color3.new(0, 1, 0), 6)
				task.delay(6, function() if TempSpeed == 18 then TempSpeed = 0 end end)
				
				for _, p in pairs(game.Players:GetPlayers()) do
					if p.Character and p ~= Player then
						local h = Instance.new("Highlight", p.Character); h.FillColor = Color3.new(1, 1, 0); h.OutlineColor = Color3.new(0,0,0); Debris:AddItem(h, 3)
					end
				end
				for _, cp in ipairs(dInstances) do cp.Part:Destroy() end
				break
			end
		end
	end)
	return true
end)

Features & Information

Complete rework, just play and see.

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts