local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer -- configs local Variant = "Sword" local UseAlternateOutfit = false local EnableShirtGraphic = true local ShirtGraphicID = "rbxassetid://11941626720" local MainFaces = { "rbxassetid://18271950515", "rbxassetid://18271950368", "rbxassetid://18271950214" } local HatMeshID = "rbxassetid://18296801214" local HatTextureID = "rbxassetid://18296801232" local BackMeshID = "rbxassetid://18296479766" local BackTextureID = "rbxassetid://18296479791" local Variants = { ["Sword"] = { Shirt = "rbxassetid://100870637153399", Pants = "rbxassetid://94021457725186", AltShirt = "rbxassetid://124426852530129", AltPants = "rbxassetid://118613073734644", BodyColor = BrickColor.new("Ghost grey"), FaceColor = Color3.fromRGB(0, 0, 0) } } 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 part.Parent = nil 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.Name = "GraceShirt" shirt.ShirtTemplate = UseAlternateOutfit and (variantData.AltShirt or variantData.Shirt) or variantData.Shirt shirt.Parent = character local pants = Instance.new("Pants") pants.Name = "GracePants" pants.PantsTemplate = UseAlternateOutfit and (variantData.AltPants or variantData.Pants) or variantData.Pants pants.Parent = character if EnableShirtGraphic and ShirtGraphicID ~= "" then local sg = Instance.new("ShirtGraphic") sg.Name = "GraceNeckGraphic" sg.Graphic = ShirtGraphicID sg.Parent = character end if head then local mainFace = Instance.new("Decal") mainFace.Name = "mainFace" mainFace.Face = Enum.NormalId.Front mainFace.Color3 = variantData.FaceColor or Color3.new(1, 1, 1) mainFace.Parent = head task.spawn(function() while character and character.Parent do for _, faceId in ipairs(MainFaces) do mainFace.Texture = faceId task.wait(0.4) end end end) end if head then local hat = createMeshPart("GraceHat", HatMeshID, HatTextureID, Vector3.new(1.0, 1.0, 1.0)) hat.Parent = character local weld = Instance.new("Weld") weld.Part0 = head weld.Part1 = hat weld.C0 = CFrame.new(0.0, 0.72, 0.10) weld.Parent = hat end local torso = character:FindFirstChild("Torso") or character:FindFirstChild("UpperTorso") if torso then local back = createMeshPart("GraceBack", BackMeshID, BackTextureID, Vector3.new(1.0, 1.0, 1.0)) back.Parent = character local weld = Instance.new("Weld") weld.Part0 = torso weld.Part1 = back weld.C0 = CFrame.new(0.0, -0.1, 0.0) * CFrame.Angles(math.rad(8), 0, 0) weld.Parent = torso end end LocalPlayer.CharacterAdded:Connect(function() task.wait(1) MorphPlayer() end) if LocalPlayer.Character then task.wait(1) MorphPlayer() end