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)