Universal Minos prime
Key RequiredUniversal Patched

Universal Minos prime

Universal ScriptSvbbbbbSvbbbbb 110 views 57 executesUpdated Aug 30, 2026
Unrated
00
Lua Script•546 lines (17259 chars)
--[[
    Minos Prime Abilities (estilo ULTRAKILL) - versão legítima
    - LocalScript padrão do Roblox (sem getgenv, writefile, HttpGet, sethiddenproperty, etc)
    - Feito para rig R6
    - Afeta apenas o próprio personagem (não força fling/teleport em outros jogadores)
    - Coloque este script em StarterPlayer > StarterPlayerScripts
]]

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local Debris = game:GetService("Debris")
local TextChatService = game:GetService("TextChatService")

local plr = Players.LocalPlayer
local char = plr.Character or plr.CharacterAdded:Wait()
local hrp = char:WaitForChild("HumanoidRootPart")
local hum = char:WaitForChild("Humanoid")
local cam = workspace.CurrentCamera

if hum.RigType ~= Enum.HumanoidRigType.R6 then
    warn("[MinosPrime] Este script foi feito para rig R6. Pode não funcionar corretamente em R15.")
end

-- // Speed e jump do personagem ao carregar o script
hum.WalkSpeed = 46
hum.JumpPower = 49

-- // Limpeza de instâncias antigas (se o script for re-executado)
pcall(function() plr.PlayerGui:FindFirstChild("MinosPrimeGui"):Destroy() end)
pcall(function() workspace:FindFirstChild("MinosVFX"):Destroy() end)

local vfxFolder = Instance.new("Folder")
vfxFolder.Name = "MinosVFX"
vfxFolder.Parent = workspace

-- // IDs de som (troque pelos seus próprios ids de áudio públicos/carregados por você)
local Sounds = {
    Die       = "rbxassetid://0",
    Judgement = "rbxassetid://0",
    Crush     = "rbxassetid://0",
    Landing   = "rbxassetid://0",
    Whoosh    = "rbxassetid://0",
    ThyEnd    = "rbxassetid://0",
    Prepare   = "rbxassetid://0",
}

local chatEnabled = true

-- // Manda a voiceline no chat do Roblox (funciona com o chat novo e o antigo)
local function sayInChat(msg)
    if not chatEnabled then return end
    local ok = pcall(function()
        if TextChatService.ChatVersion == Enum.ChatVersion.TextChatService then
            local channel = TextChatService.TextChannels:FindFirstChild("RBXGeneral")
            if channel then
                channel:SendAsync(msg)
            end
        else
            plr:Chat(msg)
        end
    end)
    if not ok then
        pcall(function() plr:Chat(msg) end)
    end
end

local function playSound(key, volume, pitch, parent)
    local id = Sounds[key]
    if not id or id == "rbxassetid://0" then return end
    local s = Instance.new("Sound")
    s.SoundId = id
    s.Volume = volume or 3
    s.PlaybackSpeed = pitch or 1
    s.Parent = parent or hrp
    s:Play()
    Debris:AddItem(s, 6)
end

-- // Shake de câmera simples (sem afetar outros jogadores)
local function cameraShake(duration, intensity)
    local startTime = tick()
    local conn
    conn = RunService.RenderStepped:Connect(function()
        local elapsed = tick() - startTime
        if elapsed > duration then
            conn:Disconnect()
            return
        end
        local falloff = 1 - (elapsed / duration)
        cam.CFrame = cam.CFrame * CFrame.new(
            (math.random() - 0.5) * intensity * falloff,
            (math.random() - 0.5) * intensity * falloff,
            0
        )
    end)
end

-- // Debris cosmético (parte só visual, não atinge outros jogadores)
local function spawnDebris(amount, cf)
    local rayResult = workspace:Raycast(cf.Position, Vector3.new(0, -50, 0))
    local material = Enum.Material.Slate
    local color = Color3.new(0.6, 0.6, 0.6)
    if rayResult and rayResult.Instance then
        material = rayResult.Instance.Material
        color = rayResult.Instance.Color
    end

    for _ = 1, amount do
        local p = Instance.new("Part")
        p.Name = "Debris"
        p.Size = Vector3.new(1, 1, 1)
        p.Material = material
        p.Color = color
        p.CFrame = cf
        p.CanCollide = false
        p.Anchored = false
        p.Parent = vfxFolder

        p.AssemblyLinearVelocity = Vector3.new(
            (math.random() - 0.5) * 40,
            math.random(5, 40),
            (math.random() - 0.5) * 40
        )

        local att0 = Instance.new("Attachment", p)
        local att1 = Instance.new("Attachment", p)
        att0.Position = Vector3.new(0, 0.5, 0)
        att1.Position = Vector3.new(0, -0.5, 0)

        local trail = Instance.new("Trail")
        trail.Attachment0 = att0
        trail.Attachment1 = att1
        trail.Lifetime = 0.6
        trail.FaceCamera = true
        trail.Color = ColorSequence.new(Color3.new(1, 1, 1))
        trail.Transparency = NumberSequence.new({
            NumberSequenceKeypoint.new(0, 0.2),
            NumberSequenceKeypoint.new(1, 1),
        })
        trail.Parent = p

        Debris:AddItem(p, 3)
    end
end

-- // Anel de choque cosmético no chão
local function shockwaveRing(cf, duration, size, color)
    local ring = Instance.new("Part")
    ring.Anchored = true
    ring.CanCollide = false
    ring.CastShadow = false
    ring.Material = Enum.Material.Neon
    ring.Color = color or Color3.fromRGB(255, 140, 0)
    ring.Shape = Enum.PartType.Cylinder
    ring.Size = Vector3.new(0.2, 1, 1)
    ring.CFrame = cf * CFrame.Angles(0, 0, math.rad(90))
    ring.Transparency = 0.3
    ring.Parent = vfxFolder

    TweenService:Create(ring, TweenInfo.new(duration, Enum.EasingStyle.Quad), {
        Size = Vector3.new(0.2, size, size),
        Transparency = 1,
    }):Play()

    Debris:AddItem(ring, duration)
end

-- // Rastro nos braços durante um dash
local function armTrail(duration, color)
    local limbs = { char:FindFirstChild("Left Arm"), char:FindFirstChild("Right Arm") }
    for _, limb in ipairs(limbs) do
        if limb then
            local att0 = Instance.new("Attachment", limb)
            local att1 = Instance.new("Attachment", limb)
            att0.Position = Vector3.new(0, limb.Size.Y / 2, 0)
            att1.Position = Vector3.new(0, -limb.Size.Y / 2, 0)

            local trail = Instance.new("Trail")
            trail.Attachment0 = att0
            trail.Attachment1 = att1
            trail.Lifetime = 0.3
            trail.FaceCamera = true
            trail.Color = ColorSequence.new(color or Color3.new(1, 1, 1))
            trail.Transparency = NumberSequence.new({
                NumberSequenceKeypoint.new(0, 0.1),
                NumberSequenceKeypoint.new(1, 1),
            })
            trail.Parent = limb

            Debris:AddItem(att0, duration)
            Debris:AddItem(att1, duration)
            Debris:AddItem(trail, duration)
        end
    end
end

-- // Aura de partículas ao redor do personagem (puramente cosmética)
local function bodyAura(duration, color)
    local att = Instance.new("Attachment", hrp)
    local emitter = Instance.new("ParticleEmitter")
    emitter.Texture = "rbxassetid://243664672" -- textura padrão de fumaça/energia do catálogo do Roblox
    emitter.Color = ColorSequence.new(color or Color3.fromRGB(255, 255, 0))
    emitter.Lifetime = NumberRange.new(0.4, 0.6)
    emitter.Rate = 40
    emitter.Speed = NumberRange.new(2, 4)
    emitter.Size = NumberSequence.new({
        NumberSequenceKeypoint.new(0, 2),
        NumberSequenceKeypoint.new(1, 0),
    })
    emitter.Transparency = NumberSequence.new({
        NumberSequenceKeypoint.new(0, 0.3),
        NumberSequenceKeypoint.new(1, 1),
    })
    emitter.Parent = att

    Debris:AddItem(att, duration)

    return att
end

-- // ================= FALA ACIMA DA CABEÇA =================

local billboard = Instance.new("BillboardGui")
billboard.Name = "MinosDialog"
billboard.Size = UDim2.fromScale(4, 2)
billboard.StudsOffset = Vector3.new(0, 2.5, 0)
billboard.AlwaysOnTop = true
billboard.Parent = char:WaitForChild("Head")

local dialogLabel = Instance.new("TextLabel")
dialogLabel.Name = "DialogText"
dialogLabel.Size = UDim2.fromScale(1, 1)
dialogLabel.BackgroundTransparency = 1
dialogLabel.Font = Enum.Font.Code
dialogLabel.TextScaled = true
dialogLabel.TextColor3 = Color3.new(1, 1, 1)
dialogLabel.TextTransparency = 1
dialogLabel.Text = ""
dialogLabel.Parent = billboard

local dialogStroke = Instance.new("UIStroke", dialogLabel)
dialogStroke.Color = Color3.new(0, 0, 0)
dialogStroke.Thickness = 2
dialogStroke.Transparency = 1

local sayId = 0
local function Say(msg, holdDuration)
    sayId += 1
    local thisId = sayId

    dialogLabel.TextTransparency = 0
    dialogStroke.Transparency = 0

    task.spawn(function()
        for i = 1, #msg do
            if sayId ~= thisId then return end
            dialogLabel.Text = string.sub(msg, 1, i)
            task.wait(0.02)
        end
        task.wait(holdDuration or 1)
        if sayId == thisId then
            TweenService:Create(dialogLabel, TweenInfo.new(1), { TextTransparency = 1 }):Play()
            TweenService:Create(dialogStroke, TweenInfo.new(1), { Transparency = 1 }):Play()
        end
    end)
end

-- // Encontra o jogador mais próximo apenas para MIRAR (não move o outro jogador)
local function getClosestPlayer(radius)
    local closest, dist = nil, radius or math.huge
    for _, other in ipairs(Players:GetPlayers()) do
        if other ~= plr and other.Character then
            local otherHrp = other.Character:FindFirstChild("HumanoidRootPart")
            if otherHrp then
                local d = (hrp.Position - otherHrp.Position).Magnitude
                if d < dist then
                    closest = otherHrp
                    dist = d
                end
            end
        end
    end
    return closest
end

local function loadAnim(id)
    local anim = Instance.new("Animation")
    anim.AnimationId = "rbxassetid://" .. tostring(id)
    return hum:LoadAnimation(anim)
end

-- // ================= GUI =================

local gui = Instance.new("ScreenGui")
gui.Name = "MinosPrimeGui"
gui.ResetOnSpawn = false
gui.Parent = plr.PlayerGui

local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.AnchorPoint = Vector2.new(0.5, 0.5)
mainFrame.Position = UDim2.fromScale(0.8, 0.5)
mainFrame.Size = UDim2.fromScale(0.2, 0.65)
mainFrame.BackgroundColor3 = Color3.new(0, 0, 0)
mainFrame.BackgroundTransparency = 0.2
mainFrame.Parent = gui

local corner = Instance.new("UICorner", mainFrame)
corner.CornerRadius = UDim.new(0, 10)
local stroke = Instance.new("UIStroke", mainFrame)
stroke.Color = Color3.new(1, 1, 1)
stroke.Thickness = 2

local layout = Instance.new("UIListLayout", mainFrame)
layout.Padding = UDim.new(0, 8)
layout.HorizontalAlignment = Enum.HorizontalAlignment.Center
layout.SortOrder = Enum.SortOrder.LayoutOrder

local padding = Instance.new("UIPadding", mainFrame)
padding.PaddingTop = UDim.new(0, 10)
padding.PaddingBottom = UDim.new(0, 10)

local function createButton(text, order)
    local btn = Instance.new("TextButton")
    btn.Name = text
    btn.Text = text
    btn.Size = UDim2.new(0.85, 0, 0, 40)
    btn.BackgroundColor3 = Color3.new(0, 0, 0)
    btn.TextColor3 = Color3.new(1, 1, 1)
    btn.Font = Enum.Font.Code
    btn.TextScaled = true
    btn.LayoutOrder = order
    btn.Parent = mainFrame

    local c = Instance.new("UICorner", btn)
    c.CornerRadius = UDim.new(0, 6)
    local s = Instance.new("UIStroke", btn)
    s.Color = Color3.new(1, 1, 1)
    s.Thickness = 1.5

    return btn
end

local function cooldownButton(btn, duration)
    btn.Active = false
    local original = btn.Text
    local remaining = duration
    task.spawn(function()
        while remaining > 0 do
            btn.Text = string.format("%.1f", remaining)
            task.wait(0.1)
            remaining -= 0.1
        end
        btn.Text = original
        btn.Active = true
    end)
end

local dieButton = createButton("Die", 1)
local judgementButton = createButton("Judgement", 2)
local crushButton = createButton("Crush", 3)
local thyEndButton = createButton("Thy End Is Now", 4)
local prepareButton = createButton("Prepare Thyself", 5)
local chatToggleButton = createButton("Chat: ON", 6)

chatToggleButton.MouseButton1Click:Connect(function()
    chatEnabled = not chatEnabled
    chatToggleButton.Text = chatEnabled and "Chat: ON" or "Chat: OFF"
end)

-- // ================= HABILIDADES =================

local dieBusy = false
dieButton.MouseButton1Click:Connect(function()
    if dieBusy then return end

    -- estilo Saitama: teleporta instantaneamente até o jogador mais próximo
    local targetHrp = getClosestPlayer(150)
    if not targetHrp then return end

    dieBusy = true

    local startCFrame = hrp.CFrame
    local targetPos = targetHrp.Position

    -- pose de "sumiço" antes do teleporte (agachar/preparar)
    playSound("Whoosh", 3)
    cameraShake(0.15, 1)
    task.wait(0.1)

    -- teleporte instantâneo (sem tween, pra parecer velocidade tipo Saitama)
    hrp.CFrame = CFrame.new(targetPos + Vector3.new(0, 3, -4), targetPos) * CFrame.Angles(0, math.rad(180), 0)

    -- efeito de rastro no ponto de partida e no ponto de chegada
    spawnDebris(6, startCFrame)
    shockwaveRing(startCFrame, 0.5, 15, Color3.fromRGB(255, 255, 255))

    playSound("Die", 4)
    sayInChat("DIE!")
    cameraShake(0.4, 2)
    spawnDebris(15, CFrame.new(targetPos))
    shockwaveRing(CFrame.new(targetPos), 0.8, 25, Color3.fromRGB(255, 60, 60))

    hum:ChangeState(Enum.HumanoidStateType.GettingUp)

    cooldownButton(dieButton, 3)
    dieBusy = false
end)

local judgementBusy = false
judgementButton.MouseButton1Click:Connect(function()
    if judgementBusy then return end
    local targetHrp = getClosestPlayer(60)
    if not targetHrp then return end

    judgementBusy = true
    playSound("Judgement", 4)
    sayInChat("JUDGEMENT!")

    -- posição de referência: 3 studs atrás/acima do alvo, sem mover o outro jogador
    local approachCFrame = targetHrp.CFrame * CFrame.new(0, 3, 5) * CFrame.Angles(math.rad(-90), 0, 0)

    local tween = TweenService:Create(hrp, TweenInfo.new(0.5, Enum.EasingStyle.Quad), {
        CFrame = approachCFrame,
    })
    tween:Play()
    tween.Completed:Wait()

    cameraShake(0.5, 2)
    spawnDebris(15, hrp.CFrame)
    shockwaveRing(hrp.CFrame, 1, 40, Color3.fromRGB(0, 200, 255))

    task.wait(0.3)
    hum:ChangeState(Enum.HumanoidStateType.GettingUp)

    cooldownButton(judgementButton, 5)
    judgementBusy = false
end)

local crushBusy = false
crushButton.MouseButton1Click:Connect(function()
    if crushBusy then return end
    crushBusy = true

    local startPos = hrp.Position
    playSound("Whoosh", 3)

    -- sobe no ar
    local upTween = TweenService:Create(hrp, TweenInfo.new(0.6, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
        CFrame = CFrame.new(startPos + Vector3.new(0, 50, 0)),
    })
    upTween:Play()
    upTween.Completed:Wait()

    task.wait(0.4)

    -- desce com impacto
    local downTween = TweenService:Create(hrp, TweenInfo.new(0.35, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {
        CFrame = CFrame.new(startPos),
    })
    downTween:Play()
    downTween.Completed:Wait()

    playSound("Crush", 5)
    sayInChat("CRUSH!")
    playSound("Landing", 3)
    cameraShake(0.5, 2.5)
    spawnDebris(20, CFrame.new(startPos))
    shockwaveRing(CFrame.new(startPos), 1, 45, Color3.fromRGB(255, 165, 0))

    hum:ChangeState(Enum.HumanoidStateType.GettingUp)

    cooldownButton(crushButton, 6)
    crushBusy = false
end)

local thyEndBusy = false
thyEndButton.MouseButton1Click:Connect(function()
    if thyEndBusy then return end
    thyEndBusy = true

    -- avança rapidamente na direção em que a câmera/personagem está olhando
    local lookDir = hrp.CFrame.LookVector
    local startPos = hrp.Position
    local endPos = startPos + (lookDir * 45)

    Say("THY END IS NOW!", 1.5)
    sayInChat("THY END IS NOW!")
    playSound("ThyEnd", 4)
    armTrail(0.5, Color3.fromRGB(255, 0, 0))
    cameraShake(0.6, 2)

    local dashTween = TweenService:Create(hrp, TweenInfo.new(0.35, Enum.EasingStyle.Linear), {
        CFrame = CFrame.new(endPos, endPos + lookDir),
    })
    dashTween:Play()
    dashTween.Completed:Wait()

    spawnDebris(18, hrp.CFrame)
    shockwaveRing(hrp.CFrame, 0.9, 35, Color3.fromRGB(255, 0, 0))

    cooldownButton(thyEndButton, 6)
    thyEndBusy = false
end)

local prepareBusy = false
prepareButton.MouseButton1Click:Connect(function()
    if prepareBusy then return end
    prepareBusy = true

    Say("PREPARE THYSELF!", 1.5)
    sayInChat("PREPARE THYSELF!")
    playSound("Prepare", 4)

    local aura = bodyAura(3, Color3.fromRGB(0, 200, 255))
    shockwaveRing(hrp.CFrame, 1.2, 30, Color3.fromRGB(0, 200, 255))
    cameraShake(0.3, 1)

    -- buff temporário só no seu próprio personagem
    local originalSpeed = hum.WalkSpeed
    local originalJump = hum.JumpPower
    hum.WalkSpeed = originalSpeed * 1.5
    hum.JumpPower = originalJump * 1.3

    task.wait(5)

    hum.WalkSpeed = originalSpeed
    hum.JumpPower = originalJump
    if aura then aura:Destroy() end

    cooldownButton(prepareButton, 10)
    prepareBusy = false
end)

-- // Reset ao morrer/respawnar
plr.CharacterAdded:Connect(function(newChar)
    char = newChar
    hrp = newChar:WaitForChild("HumanoidRootPart")
    hum = newChar:WaitForChild("Humanoid")
    billboard.Parent = newChar:WaitForChild("Head")

    hum.WalkSpeed = 46
    hum.JumpPower = 49
end)

Features & Information

Just be minos prime in every game

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts