Deltarune Mr Ant Tenna morph Updated version
Key RequiredUniversal

Deltarune Mr Ant Tenna morph Updated version

Universal Scriptimdisplayimdisplay 2.8K views 3.3K executesUpdated Oct 19, 2025
Unrated
00
Lua Script•296 lines (9101 chars)
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local Lighting = game:GetService("Lighting")
local LocalPlayer = Players.LocalPlayer

local Variant = "Tenna" --'Tenna' or 'Break'
local HatMeshID = "rbxassetid://138977266310225"
local HatTextureID = "rbxassetid://81342655410546"
local fightMusicPlaying = false
local altMusicId = 135016968989292 --retro type music idk i dont like it but its here
local fightMusicId = 95455387850059
local fightSound = Instance.new("Sound")
fightSound.Parent = game:GetService("SoundService")
fightSound.Looped = true
fightSound.Volume = 0.7
local musicEnabled = true --turn this off if you dont want music 2 play during -80 health
local selectedMusic = "main"  --change to 'alt' if you want the alt song

local Variants = {
    ["Tenna"] = {
        Shirt = "rbxassetid://102716611187263",
        Pants = "rbxassetid://122608700035056",
        BodyColor = BrickColor.new("White")
    },
    ["Break"] = {
        Shirt = "rbxassetid://86496387284917",
        Pants = "rbxassetid://115381306417030",
        BodyColor = BrickColor.new("White")
    },
}

local function createMeshPart(name, meshId, textureId, scale)
    local part = Instance.new("Part")
    part.Name = name
    part.Size = Vector3.new(1,1,1)
    part.CanCollide = false
    part.Anchored = false
    part.Transparency = 0
    local mesh = Instance.new("SpecialMesh")
    mesh.MeshType = Enum.MeshType.FileMesh
    mesh.MeshId = meshId
    mesh.TextureId = textureId
    mesh.Scale = scale or Vector3.new(1,1,1)
    mesh.Parent = part
    return part
end

local function MorphPlayer()
    local character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
    local variantData = Variants[Variant]
    if not variantData then return end
    for _, item in ipairs(character:GetChildren()) do
        if item:IsA("Accessory") or item:IsA("Hat") or item:IsA("Shirt") or item:IsA("Pants") or item:IsA("ShirtGraphic") then
            item:Destroy()
        end
    end
    local head = character:FindFirstChild("Head")
    if head then
        for _, d in ipairs(head:GetChildren()) do
            if d:IsA("Decal") then d:Destroy() end
        end
    end
    for _, part in ipairs(character:GetChildren()) do
        if part:IsA("BasePart") then
            part.BrickColor = variantData.BodyColor
        end
    end
    local shirt = Instance.new("Shirt")
    shirt.ShirtTemplate = variantData.Shirt
    shirt.Parent = character
    local pants = Instance.new("Pants")
    pants.PantsTemplate = variantData.Pants
    pants.Parent = character
    if head then
        local hat = createMeshPart("Hat", HatMeshID, HatTextureID, Vector3.new(1,1,1))
        hat.Parent = character
        local weld = Instance.new("Weld")
        weld.Part0 = head
        weld.Part1 = hat
        weld.C0 = CFrame.new(-0.10, 0.9, -0.2)
        weld.Parent = hat
    end
end

local function playSelectedMusic()
    if not musicEnabled then return end
    if fightMusicPlaying then return end
    fightMusicPlaying = true

    if selectedMusic == "main" then
        fightSound.SoundId = "rbxassetid://"..fightMusicId
    elseif selectedMusic == "alt" then
        fightSound.SoundId = "rbxassetid://"..altMusicId
    end
    
    fightSound:Play()
end

local function stopFightMusic()
    if fightMusicPlaying then
        fightSound:Stop()
        fightMusicPlaying = false
    end
end

local function onHealthChanged(current)
    if current <= 80 and not fightMusicPlaying then
        playSelectedMusic()
    end

    if current <= 1 and fightMusicPlaying then
        stopFightMusic()
    end
end

local humanoid = LocalPlayer.Character:WaitForChild("Humanoid")
humanoid.HealthChanged:Connect(onHealthChanged)

LocalPlayer.CharacterAdded:Connect(function()
    task.wait(1)
    MorphPlayer()
end)
if LocalPlayer.Character then
    task.wait(1)
    MorphPlayer()
end

local player = LocalPlayer

local gui = Instance.new("ScreenGui")
gui.Name = "dialoguesys"
gui.IgnoreGuiInset = true
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")

local box = Instance.new("ImageLabel")
box.Name = "dbox"
box.AnchorPoint = Vector2.new(0.5, 1)
box.Position = UDim2.new(0.5,0,0.95,0)
box.Size = UDim2.new(0.66,0,0.24,0)
box.BackgroundTransparency = 1
box.Image = "rbxassetid://76371994936176"
box.ScaleType = Enum.ScaleType.Fit
box.Visible = false
box.Parent = gui

local inner = Instance.new("Frame")
inner.Name = "inner"
inner.BackgroundTransparency = 1
inner.Size = UDim2.new(0.9,0,0.7,0)
inner.Position = UDim2.new(0.05,0,0.15,0)
inner.Parent = box

local textLabel = Instance.new("TextLabel")
textLabel.Name = "text"
textLabel.BackgroundTransparency = 1
textLabel.Size = UDim2.new(1,-20,1,0)
textLabel.Position = UDim2.new(0,200,0,0)
textLabel.TextColor3 = Color3.fromRGB(255,255,255)
textLabel.TextXAlignment = Enum.TextXAlignment.Left
textLabel.TextYAlignment = Enum.TextYAlignment.Top
textLabel.TextWrapped = true
textLabel.Font = Enum.Font.Arcade
textLabel.TextSize = 25
textLabel.Text = ""
textLabel.Parent = inner

local blipA = Instance.new("Sound")
blipA.SoundId = "rbxassetid://117236105724823"
blipA.Looped = true
blipA.Volume = 1
blipA.Parent = box

local blipB = Instance.new("Sound")
blipB.SoundId = "rbxassetid://98035287592527"
blipB.Looped = true
blipB.Volume = 1
blipB.Parent = box

local function pickBlipLoop()
    return (math.random() < 0.5) and blipA or blipB
end

local function ShowDialogue(message, specialSoundId)
    if not message or message == "" then return end
    box.Visible = true
    textLabel.Text = ""
    box.Position = UDim2.new(0.5,0,1.2,0)
    local inTween = TweenService:Create(box,TweenInfo.new(0.28,Enum.EasingStyle.Sine,Enum.EasingDirection.Out),{Position=UDim2.new(0.5,0,0.95,0)})
    inTween:Play()
    inTween.Completed:Wait()
    local fullText = "* "..tostring(message)
    local blipLoop = pickBlipLoop()
    if not specialSoundId then blipLoop:Play() end
    for i=1,#fullText do
        textLabel.Text = string.sub(fullText,1,i)
        task.wait(0.03)
    end
    if specialSoundId then
        if blipA.IsPlaying then blipA:Stop() end
        if blipB.IsPlaying then blipB:Stop() end
        local s = Instance.new("Sound")
        s.SoundId = "rbxassetid://"..tostring(specialSoundId)
        s.Volume = 1
        s.Looped = false
        s.Parent = box
        s:Play()
        local ended=false
        local conn
        conn = s.Ended:Connect(function()
            ended=true
            conn:Disconnect()
        end)
        local elapsed=0
        local dur=s.TimeLength or 10
        while not ended and elapsed < (dur+0.6) do
            task.wait(0.7)
            elapsed += 0.1
        end
        if s.IsPlaying then pcall(function() s:Stop() end) end
        s:Destroy()
    else
        task.wait(0.06)
        if blipLoop.IsPlaying then blipLoop:Stop() end
    end
    task.wait(1.6)
    local outTween = TweenService:Create(box,TweenInfo.new(0.28,Enum.EasingStyle.Sine,Enum.EasingDirection.In),{Position=UDim2.new(0.5,0,1.2,0)})
    outTween:Play()
    outTween.Completed:Wait()
    box.Visible=false
end

player.Chatted:Connect(function(msg)
    ShowDialogue(msg)
end)

ShowDialogue("Coming Straight From Your House!",80840335076210)
ShowDialogue("Coming!",103256925970549)
ShowDialogue("IT'S T V TIME!",97121173785008)

local function PlayerDied(character)
    local guiOverlay = Instance.new("ImageLabel")
    guiOverlay.Name = "DeathOverlay"
    guiOverlay.Size = UDim2.new(1,0,1,0)
    guiOverlay.Position = UDim2.new(0,0,0,0)
    guiOverlay.BackgroundTransparency = 1
    guiOverlay.Image = "rbxassetid://1024792661"
    guiOverlay.Parent = player:WaitForChild("PlayerGui")

    local deathSound = Instance.new("Sound")
    deathSound.SoundId = "rbxassetid://72483746820321"
    deathSound.Volume = 2
    deathSound.Parent = player:WaitForChild("PlayerGui")
    deathSound:Play()

    local flashEffect = Instance.new("ColorCorrectionEffect")
    flashEffect.Name = "flashbang"
    flashEffect.Brightness = 3
    flashEffect.Contrast = 5
    flashEffect.Saturation = 1
    flashEffect.Parent = Lighting

    local highlight = Instance.new("Highlight")
    highlight.Adornee = character
    highlight.FillColor = Color3.new(0,0,0)
    highlight.OutlineColor = Color3.new(0,0,0)
    highlight.FillTransparency = 0
    highlight.OutlineTransparency = 0
    highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
    highlight.Parent = character

    local function clearEffects()
        guiOverlay:Destroy()
        flashEffect:Destroy()
        highlight:Destroy()
    end

    LocalPlayer.CharacterAdded:Connect(function()
        task.wait(0.5)
        clearEffects()
    end)
end

LocalPlayer.CharacterAdded:Connect(function(char)
    char:WaitForChild("Humanoid").Died:Connect(function()
        PlayerDied(char)
    end)
end)
if LocalPlayer.Character then
    local humanoid = LocalPlayer.Character:FindFirstChild("Humanoid")
    if humanoid then
        humanoid.Died:Connect(function()
            PlayerDied(LocalPlayer.Character)
        end)
    end
end

Features & Information

use this if it didn't work https://scriptblox.com/script/Universal-Script-Deltarune-Tenna-simple-morph-59138 an updated version of the tv guy from deltarune chapter 3, has a dialogue system and death screen/sound. wow new update fightmusic
#morph#tenna#deltarune

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts