
Key RequiredUniversal

local plr = game.Players.LocalPlayer
local char = plr.Character or plr.CharacterAdded:Wait()
local hum = char:WaitForChild("Humanoid")
local noHealthFX = false --false or true, change this to true if you only want the morph and no additional stuff like face changes depending on health, firering's desaturating when health lowers, etc.
local chosenFace = "Default"
local variantName = "brokenspawn" --brokenspawn or firering
local subvariantName = "Default"
local officialShirt = false --false or true. change this to true if you want After Him Firering to use the cape thingy in the official sneakpeek render
--brokenspawn's subvariant: Default, MarthyrSpawn, or Day4Spawn
--firering's subvariant: Default or AfterHim
local function wipeOutStuff()
if not char then return end
for _, v in pairs(char:GetChildren()) do
if v:IsA("Accessory") or v:IsA("Shirt") or v:IsA("Pants") or v:IsA("ShirtGraphic") then
v:Destroy()
end
end
end
local function safeColor3FromFloats(r, g, b)
local function clamp(x)
if x < 0 then return 0
elseif x > 255 then return 255
else return math.floor(x + 0.5)
end
end
return Color3.fromRGB(clamp(r), clamp(g), clamp(b))
end
local function lerpColor(color1, color2, t)
return Color3.new(
color1.R + (color2.R - color1.R) * t,
color1.G + (color2.G - color1.G) * t,
color1.B + (color2.B - color1.B) * t
)
end
local function recolorParts()
if not char then return end
if variantName == "brokenspawn" then
if subvariantName == "MarthyrSpawn" then
for _, bp in ipairs(char:GetDescendants()) do
if bp:IsA("BasePart") then
bp.Color = Color3.fromRGB(17, 17, 17)
end
end
local existingPants = char:FindFirstChildOfClass("Pants")
if not existingPants then
local p = Instance.new("Pants", char)
p.PantsTemplate = "rbxassetid://18819882074"
end
elseif subvariantName == "Day4Spawn" then
local hp = hum.Health
local desat = 1 - math.clamp(hp / 100, 0, 1)
for _, bp in ipairs(char:GetDescendants()) do
if bp:IsA("BasePart") then
if bp.Name == "Torso" or bp.Name == "UpperTorso" or bp.Name == "LowerTorso" then
local gray = 202 - (52 * desat)
bp.Color = Color3.fromRGB(gray, gray, gray)
else
local gray = 248 - (88 * desat)
bp.Color = Color3.fromRGB(gray, gray, gray)
end
end
end
local existingShirt = char:FindFirstChildOfClass("Shirt")
local existingPants = char:FindFirstChildOfClass("Pants")
if hp <= 50 then
if not existingShirt then
local s = Instance.new("Shirt", char)
s.ShirtTemplate = "rbxassetid://91229862386616"
end
if not existingPants then
local p = Instance.new("Pants", char)
p.PantsTemplate = "rbxassetid://91229862386616"
end
else
if existingShirt then existingShirt:Destroy() end
if existingPants then existingPants:Destroy() end
end
else
for _, bp in ipairs(char:GetDescendants()) do
if bp:IsA("BasePart") then
if bp.Name == "Torso" or bp.Name == "UpperTorso" or bp.Name == "LowerTorso" then
bp.Color = Color3.fromRGB(202, 203, 209)
else
bp.Color = Color3.fromRGB(248, 248, 248)
end
end
end
local existingPants = char:FindFirstChildOfClass("Pants")
if not existingPants then
local p = Instance.new("Pants", char)
p.PantsTemplate = "rbxassetid://18812715099"
end
end
else
if subvariantName == "AfterHim" then
if noHealthFX then
for _, bp in ipairs(char:GetDescendants()) do
if bp:IsA("BasePart") then
if bp.Name == "Torso" or bp.Name == "UpperTorso" or bp.Name == "LowerTorso" then
bp.Color = safeColor3FromFloats(229, 174, 46)
else
bp.Color = safeColor3FromFloats(208, 123, 55)
end
end
end
else
local hp = hum.Health
local mod = math.clamp(hp / 100, 0, 1)
local desat = 1 - mod
if desat > 0 then
local torsoColor = Color3.fromRGB(229, 174, 46)
local limbColor = Color3.fromRGB(208, 123, 55)
local grayTorso = Color3.fromRGB(140, 140, 140)
local grayLimb = Color3.fromRGB(70, 70, 70)
for _, bp in ipairs(char:GetDescendants()) do
if bp:IsA("BasePart") then
if bp.Name == "Torso" or bp.Name == "UpperTorso" or bp.Name == "LowerTorso" then
bp.Color = lerpColor(torsoColor, grayTorso, desat)
else
bp.Color = lerpColor(limbColor, grayLimb, desat)
end
end
end
else
local bodyR, bodyG, bodyB = 208, 123, 55
local torR, torG, torB = 229, 174, 46
for _, bp in ipairs(char:GetDescendants()) do
if bp:IsA("BasePart") then
if bp.Name == "Torso" or bp.Name == "UpperTorso" or bp.Name == "LowerTorso" then
bp.Color = safeColor3FromFloats(torR * mod, torG * mod, torB * mod)
else
bp.Color = safeColor3FromFloats(bodyR * mod, bodyG * mod, bodyB * mod)
end
end
end
end
end
local existingShirt = char:FindFirstChildOfClass("Shirt")
local existingShirtGraphic = char:FindFirstChildOfClass("ShirtGraphic")
if officialShirt then
if existingShirt then existingShirt:Destroy() end
if not existingShirtGraphic then
local sg = Instance.new("Shirt", char)
sg.ShirtTemplate = "rbxassetid://79082321877257"
local sp = Instance.new("ShirtGraphic", char)
sp.Graphic = "rbxassetid://79353463316783"
end
else
if existingShirtGraphic then existingShirtGraphic:Destroy() end
if not existingShirt then
local s = Instance.new("Shirt", char)
s.ShirtTemplate = "rbxassetid://100658100237731"
end
end
else
if noHealthFX then
for _, bp in ipairs(char:GetDescendants()) do
if bp:IsA("BasePart") then
if bp.Name == "Torso" or bp.Name == "UpperTorso" or bp.Name == "LowerTorso" then
bp.Color = safeColor3FromFloats(239, 184, 56)
else
bp.Color = safeColor3FromFloats(218, 133, 65)
end
end
end
else
local hp = hum.Health
local mod = math.clamp(hp / 100, 0, 1)
local desat = 1 - mod
if desat > 0 then
local torsoColor = Color3.fromRGB(239, 184, 56)
local limbColor = Color3.fromRGB(218, 133, 65)
local grayTorso = Color3.fromRGB(150, 150, 150)
local grayLimb = Color3.fromRGB(80, 80, 80)
for _, bp in ipairs(char:GetDescendants()) do
if bp:IsA("BasePart") then
if bp.Name == "Torso" or bp.Name == "UpperTorso" or bp.Name == "LowerTorso" then
bp.Color = lerpColor(torsoColor, grayTorso, desat)
else
bp.Color = lerpColor(limbColor, grayLimb, desat)
end
end
end
else
local bodyR, bodyG, bodyB = 218, 133, 65
local torR, torG, torB = 239, 184, 56
for _, bp in ipairs(char:GetDescendants()) do
if bp:IsA("BasePart") then
if bp.Name == "Torso" or bp.Name == "UpperTorso" or bp.Name == "LowerTorso" then
bp.Color = safeColor3FromFloats(torR * mod, torG * mod, torB * mod)
else
bp.Color = safeColor3FromFloats(bodyR * mod, bodyG * mod, bodyB * mod)
end
end
end
end
end
local existingPants = char:FindFirstChildOfClass("Pants")
if not existingPants then
local p = Instance.new("Pants", char)
p.PantsTemplate = "rbxassetid://18816502690"
end
end
end
end
local brokenspawnFaces = {
Smile = "rbxassetid://119843958411585",
Happy = "rbxassetid://82047519860108",
Wow = "rbxassetid://107872884101860",
Shocked = "rbxassetid://127527512989972",
Default = "rbxassetid://18812397563",
Scared = "rbxassetid://18950168467",
Unwell = "rbxassetid://106051826391565",
Tired = "rbxassetid://18950162865"
}
local fireringFaces = {
Shocked = "rbxassetid://89565910291159",
Default = "rbxassetid://121665781026929",
Mad = "rbxassetid://90449712627006",
Happy = "rbxassetid://109330527602031",
Sad = "rbxassetid://138220398125082",
VerySad = "rbxassetid://137894662752659"
}
local function applyChosenFace()
if not char then return end
local h = char:FindFirstChild("Head")
if h then
local d = h:FindFirstChildWhichIsA("Decal")
if d then
d.Texture = chosenFace
end
end
end
local function pickFace(name)
if variantName == "brokenspawn" then
if subvariantName == "MarthyrSpawn" then
chosenFace = "rbxassetid://125021660606176"
else
chosenFace = brokenspawnFaces[name] or brokenspawnFaces.Default
end
else
chosenFace = fireringFaces[name] or fireringFaces.Default
end
end
local healthConn
local diedConn
local function disconnectConns()
if healthConn then
healthConn:Disconnect()
healthConn = nil
end
if diedConn then
diedConn:Disconnect()
diedConn = nil
end
end
local function updateFaceBasedOnHealth(x)
if noHealthFX then return end
local hd = char:FindFirstChild("Head")
if not hd then return end
local dec = hd:FindFirstChildWhichIsA("Decal")
if not dec then return end
if variantName == "brokenspawn" then
if subvariantName == "MarthyrSpawn" then
dec.Texture = "rbxassetid://125021660606176"
elseif subvariantName == "Day4Spawn" then
if x <= 50 then
dec.Texture = "rbxassetid://105104796113792"
else
dec.Texture = "rbxassetid://18950175783"
end
else
if x < 40 then
dec.Texture = brokenspawnFaces.Unwell
elseif x < 60 then
dec.Texture = brokenspawnFaces.Tired
elseif x < 80 then
dec.Texture = brokenspawnFaces.Scared
elseif x < 99 then
dec.Texture = brokenspawnFaces.Default
else
dec.Texture = brokenspawnFaces.Smile
end
end
else
if subvariantName == "AfterHim" then
if x < 20 then
dec.Texture = fireringFaces.Shocked
elseif x < 35 then
dec.Texture = fireringFaces.VerySad
elseif x < 50 then
dec.Texture = fireringFaces.Sad
elseif x < 70 then
dec.Texture = fireringFaces.Mad
elseif x < 99 then
dec.Texture = fireringFaces.Default
else
dec.Texture = "rbxassetid://114605237546200"
end
else
if x < 20 then
dec.Texture = fireringFaces.Shocked
elseif x < 35 then
dec.Texture = fireringFaces.VerySad
elseif x < 50 then
dec.Texture = fireringFaces.Sad
elseif x < 70 then
dec.Texture = fireringFaces.Mad
elseif x < 99 then
dec.Texture = fireringFaces.Default
else
dec.Texture = fireringFaces.Happy
end
end
end
end
local function connectHealthEvents()
disconnectConns()
healthConn = hum.HealthChanged:Connect(function(x)
if noHealthFX then
applyChosenFace()
else
updateFaceBasedOnHealth(x)
recolorParts()
end
end)
diedConn = hum.Died:Connect(function()
if variantName == "brokenspawn" and subvariantName == "Default" then
local existingPants = char:FindFirstChildOfClass("Pants")
if existingPants then
existingPants:Destroy()
end
local existingShirt = char:FindFirstChildOfClass("Shirt")
if existingShirt then
existingShirt:Destroy()
end
local p = Instance.new("Pants", char)
p.PantsTemplate = "rbxassetid://18985713079"
local s = Instance.new("Shirt", char)
s.ShirtTemplate = "rbxassetid://18985709128"
end
end)
end
local function setupCharacter()
wipeOutStuff()
recolorParts()
pickFace("Default")
if noHealthFX then
applyChosenFace()
else
updateFaceBasedOnHealth(hum.Health)
end
connectHealthEvents()
end
setupCharacter()
plr.CharacterAdded:Connect(function(nc)
char = nc
hum = char:WaitForChild("Humanoid")
task.wait(0.1)
setupCharacter()
end)
local function setNoHealthFX(v)
noHealthFX = v and true or false
recolorParts()
if noHealthFX then
applyChosenFace()
else
updateFaceBasedOnHealth(hum.Health)
end
end
local function setVariant(v)
if v == "brokenspawn" or v == "firering" then
variantName = v
subvariantName = "Default"
setupCharacter()
end
end
local function setSubvariant(v)
if v == "MarthyrSpawn" or v == "Day4Spawn" or v == "AfterHim" or v == "Default" then
subvariantName = v
setupCharacter()
end
end
local function setFaceByName(name)
chosenFace = name or "Default"
pickFace(chosenFace)
if noHealthFX then
applyChosenFace()
end
end
local function setOfficialShirt(v)
officialShirt = v and true or false
if variantName == "firering" and subvariantName == "AfterHim" then
recolorParts()
end
end
return {
setNoHealthFX = setNoHealthFX,
setVariant = setVariant,
setSubvariant = setSubvariant,
setFaceByName = setFaceByName,
setOfficialShirt = setOfficialShirt
}



nga who the fuhh drew that in the thumbnail
DEW ☠️
Mountain Dew
hi i added more brokens*'s healthfaces and fixed AfterHim firering's shirt texture.
Bro why kiss? 🥀💔
❤️
Sybau 🥀🥀
@imdisplay look Photo kiss Bro 💀🙏