Faker Quills Cosmetic for Sonic and Blacksun LMS
Key Required

Faker Quills Cosmetic for Sonic and Blacksun LMS

(ANNIVERSARY) Outcome Memories v0.2TheHkr3000TheHkr3000 2.9K views 191 executesUpdated Mar 29, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•417 lines (12254 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")

local player = Players.LocalPlayer
local ASSET_ID = 124440001901414

local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local isScriptActive = false
local syncConn = nil
local currentMdl = nil

local function loadAsset(id)
	local ok, objects = pcall(game.GetObjects, game, "rbxassetid://" .. id)
	if not ok or not objects or #objects == 0 then return nil end
	return objects[1]:Clone()
end

local function waitForDodges()
	while true do
		local pf = workspace:FindFirstChild("Players")
		if pf and pf:FindFirstChild(player.Name) and pf:FindFirstChild(player.Name):FindFirstChild("Dodges") then return end
		task.wait(0.5)
	end
end

local HIDE_PARTS = {
	normal = true,
	Ear1 = true,
    Ear2 = true,
    eyes = true,
    eye1 = true,
    eye2 = true,
    muzzl = true,
    nose = true,
    angry = true,
    ["Sphere.017"] = true,
    ["Sphere.030"] = true,
    ["Cube.001"] = true,
    ["Cube.002"] = true,
    ["Cube.003"] = true,
    ["Cube.004"] = true,
    ["[UnionOperation] joy1"] = true,
    ["[UnionOperation] joy2"] = true,
}

-- el Pepe ete sech
local PARTIAL_PARTS = {
	quill_three = 0.2,
	quill_two   = 0.2,
	quill_twoo  = 0.2,
	topquill    = 0.2,
	weanegradabajo = 0.2,
}

local function getTransparency(name)
	if HIDE_PARTS[name] then return 1 end
	if PARTIAL_PARTS[name] then return PARTIAL_PARTS[name] end
	return 0
end

local function setupCharacter(char)
	if not isScriptActive then return end
	if syncConn then syncConn:Disconnect() syncConn = nil end
	if currentMdl and currentMdl.Parent then currentMdl:Destroy() currentMdl = nil end

	local hrp = char:WaitForChild("HumanoidRootPart")

	for _, v in ipairs(char:GetDescendants()) do
		if v:IsA("BasePart") then
			v.Transparency = 1
			if v ~= hrp then v.CanCollide = false end
		end
	end

	local playersFolder = workspace:FindFirstChild("Players")
	local oldVisual = playersFolder and playersFolder:FindFirstChild(player.Name)
	if oldVisual then
		for _, v in ipairs(oldVisual:GetDescendants()) do
			if v:IsA("BasePart") then v.Transparency = 1 end
		end
	end

	local mdl = loadAsset(ASSET_ID)
	if not mdl then warn("me cago en todo1") return end

	local newHrp = mdl:FindFirstChild("HumanoidRootPart")
	if not newHrp then mdl:Destroy() return end
	mdl.PrimaryPart = newHrp

	if oldVisual then mdl.Parent = oldVisual else mdl.Parent = char end
	currentMdl = mdl

	newHrp.Anchored = true
	newHrp.Transparency = 1

	local mdlHum = mdl:FindFirstChildOfClass("Humanoid")
	if mdlHum then mdlHum:Destroy() end
	local mdlAnim = mdl:FindFirstChildOfClass("Animator")
	if mdlAnim then mdlAnim:Destroy() end

	for _, v in ipairs(mdl:GetDescendants()) do
		if v:IsA("BasePart") then
			v.CanCollide = false
			v.Transparency = getTransparency(v.Name)
		end
	end

	mdl:PivotTo(hrp.CFrame)
	task.wait(0.1)
	newHrp.Transparency = 1
	local newWaist = mdl:FindFirstChild("Waist", true)
	if newWaist then newWaist.Transparency = 1 end

	-- MOTOR MAP
	local motorMap = {}
	local function buildMotorMap()
		motorMap = {}
		for _, oldMotor in ipairs(char:GetDescendants()) do
			if oldMotor:IsA("Motor6D") then
				local newMotor = nil
				if oldMotor.Parent then
					local mdlParent = mdl:FindFirstChild(oldMotor.Parent.Name, true)
					if mdlParent then
						newMotor = mdlParent:FindFirstChild(oldMotor.Name)
						if not (newMotor and newMotor:IsA("Motor6D")) then newMotor = nil end
					end
				end
				if not newMotor then
					newMotor = mdl:FindFirstChild(oldMotor.Name, true)
					if not (newMotor and newMotor:IsA("Motor6D")) then newMotor = nil end
				end
				if newMotor then motorMap[oldMotor] = newMotor end
			end
		end
	end
	buildMotorMap()
	print("[SKIN] motorMap entries:", (function() local n=0 for _ in pairs(motorMap) do n+=1 end return n end)())

	local isDropDashActive = false
	local lastImageRectOffset = Vector2.new(0, 0)

	task.spawn(function()
		local imgGui = player.PlayerGui
			:WaitForChild("Round", 30)
		if not imgGui then return end
		imgGui = imgGui:WaitForChild("Game", 30)
		if not imgGui then return end
		imgGui = imgGui:WaitForChild("Ability", 30)
		if not imgGui then return end
		imgGui = imgGui:WaitForChild("Bar", 30)
		if not imgGui then return end
		imgGui = imgGui:WaitForChild("AB1", 30)
		if not imgGui then return end
		imgGui = imgGui:WaitForChild("iMG", 30)
		if not imgGui then return end

		RunService.Heartbeat:Connect(function()
			if not imgGui or not imgGui.Parent then return end
			local currentOffset = imgGui.ImageRectOffset
			if currentOffset ~= lastImageRectOffset then
				isDropDashActive = currentOffset ~= Vector2.new(0, 0)
				lastImageRectOffset = currentOffset
			end
		end)
	end)

	-- Cache :,D
	local FORCE_HIDDEN = { "angry", "normal" }
	local forceHiddenParts = {}
	for _, v in ipairs(mdl:GetDescendants()) do
		if v:IsA("BasePart") and FORCE_HIDDEN[v.Name] then
			forceHiddenParts[#forceHiddenParts + 1] = v
		end
	end
	-- Failññ
	local forceHiddenNames = {}
	for _, n in ipairs(FORCE_HIDDEN) do forceHiddenNames[n] = true end

	newHrp.CFrame = hrp.CFrame

	syncConn = RunService.Stepped:Connect(function()
		if not char.Parent or not hrp.Parent or not newHrp.Parent then
			if syncConn then syncConn:Disconnect() syncConn = nil end
			return
		end
		if not next(motorMap) then buildMotorMap() end

		newHrp.CFrame = hrp.CFrame

		for oldMotor, newMotor in pairs(motorMap) do
			if oldMotor.Parent and newMotor.Parent then
				newMotor.Transform = oldMotor.Transform
			end
		end

		local pf = workspace:FindFirstChild("Players")
		local pFolder = pf and pf:FindFirstChild(player.Name)
		local nativeSpindash = pFolder and pFolder:FindFirstChild("Spindash")

		if isDropDashActive then
			for _, v in ipairs(mdl:GetDescendants()) do
				if v:IsA("BasePart") then
					v.Transparency = 1
				end
			end
			if nativeSpindash then
				for _, v in ipairs(nativeSpindash:GetDescendants()) do
					if v:IsA("BasePart") then
						v.Transparency = 0
					end
				end
			end
		else
			for _, v in ipairs(mdl:GetDescendants()) do
				if v:IsA("BasePart") then
					v.Transparency = forceHiddenNames[v.Name] and 1 or getTransparency(v.Name)
				end
			end
		end

		-- Always enforce these regardless of drop dash state
		newHrp.Transparency = 1
		if newWaist then newWaist.Transparency = 1 end
		for _, v in ipairs(forceHiddenParts) do
			if v.Parent then v.Transparency = 1 end
		end
	end)

	char.DescendantAdded:Connect(function(d)
		if d:IsA("BasePart") and not d:IsDescendantOf(mdl) then
			d.Transparency = 1
			if d ~= hrp then d.CanCollide = false end
		end
	end)
end

local function setupViewport()
	task.spawn(function()
		local viewportFrame = player.PlayerGui
			:WaitForChild("Round", 30)
			:WaitForChild("Game", 30)
			:WaitForChild("SurvivorHP", 30)
			:WaitForChild("ViewportFrame", 30)
		if not viewportFrame then warn("no hay frame?") return end

		local viewportModel = viewportFrame
			:WaitForChild("WorldModel", 30)
			:WaitForChild("Default", 30)
		if not viewportModel then warn("no hay modelo??") return end

		local vpOverrideModel = nil
		local function replaceViewportModel()
			local ok, objects = pcall(game.GetObjects, game, "rbxassetid://" .. ASSET_ID)
			if not ok or #objects == 0 then
				warn("me cago en todo2")
				return
			end
			if vpOverrideModel and vpOverrideModel.Parent then
				vpOverrideModel:Destroy()
				vpOverrideModel = nil
			end
			local newModel = objects[1]:Clone()
			vpOverrideModel = newModel

			for _, part in ipairs(viewportModel:GetDescendants()) do
				if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then
					part.Transparency = 1
				end
			end

			local newHum = newModel:FindFirstChildOfClass("Humanoid")
			if newHum then newHum:Destroy() end

			for _, v in ipairs(newModel:GetDescendants()) do
				if v:IsA("BasePart") then
					v.CanCollide = false
					v.Transparency = getTransparency(v.Name)
				end
			end

			newModel.Parent = viewportModel

			local viewportRootPart = viewportModel:FindFirstChild("HumanoidRootPart")
			local primaryPart = newModel.PrimaryPart or newModel:FindFirstChildWhichIsA("BasePart")
			if viewportRootPart and primaryPart then
				newModel:PivotTo(viewportRootPart.CFrame)
				primaryPart.Transparency = 1
				local weld = Instance.new("WeldConstraint")
				weld.Part0 = viewportRootPart
				weld.Part1 = primaryPart
				weld.Parent = viewportRootPart
			end

			print("[SKIN] viewport reemplazado")
		end

		replaceViewportModel()

		viewportModel.DescendantAdded:Connect(function()
			task.wait(0.1)
			if not vpOverrideModel or not vpOverrideModel.Parent then
				vpOverrideModel = nil
				replaceViewportModel()
			end
		end)

		player.CharacterAdded:Connect(function()
			task.wait(3)
			vpOverrideModel = nil
			local newVM = viewportFrame:FindFirstChild("WorldModel")
				and viewportFrame.WorldModel:FindFirstChild("Default")
			if newVM then
				viewportModel = newVM
				replaceViewportModel()
			end
		end)
	end)
end

local function replacePlayerFrame()
	local playerGui = player:WaitForChild("PlayerGui", 15)
	if not playerGui then return end
	local roundGui = playerGui:WaitForChild("Round", 15)
	if not roundGui then return end
	local gameGui = roundGui:WaitForChild("Game", 15)
	if not gameGui then return end
	local teamsGui = gameGui:WaitForChild("Teams", 15)
	if not teamsGui then return end
	local playerFrame = nil
	for _ = 1, 60 do
		playerFrame = teamsGui:FindFirstChild(player.Name)
			or teamsGui:FindFirstChild(player.DisplayName)
		if playerFrame then break end
		task.wait(0.25)
	end
	if not playerFrame then return end
	local frame = playerFrame:FindFirstChild("Frame")
	if not frame then return end
	local characterContainer = frame:FindFirstChild("Character")
	if not characterContainer then return end
	characterContainer:ClearAllChildren()
	local iconLabel = Instance.new("ImageLabel")
	iconLabel.Image = "rbxassetid://76557827267306"
	iconLabel.Size = UDim2.new(0.60, 0, 0.60, 0)
	iconLabel.Position = UDim2.new(0.5, 0, 0.38, 0)
	iconLabel.AnchorPoint = Vector2.new(0.5, 0.5)
	iconLabel.BackgroundTransparency = 1
	iconLabel.ScaleType = Enum.ScaleType.Fit
	iconLabel.Parent = characterContainer
	if characterContainer:IsA("GuiObject") then
		characterContainer.BackgroundTransparency = 1
	end
end

-- Start
waitForDodges()
task.wait(3)
isScriptActive = true
setupCharacter(character)
setupViewport()
task.spawn(replacePlayerFrame)

player.CharacterAdded:Connect(function(newChar)
	character = newChar
	humanoid = newChar:WaitForChild("Humanoid")
	task.wait(1)
	setupCharacter(newChar)
end)

task.spawn(function()
	while true do
		local pf = workspace:FindFirstChild("Players")
		local playerFolder = pf and pf:FindFirstChild(player.Name)
		if playerFolder then
			local defaultFolder = playerFolder:FindFirstChild("Default")
			if defaultFolder then
				local waist = defaultFolder:FindFirstChild("Waist")
				local hrpDefault = defaultFolder:FindFirstChild("HumanoidRootPart")
				if waist and waist:IsA("BasePart") then waist.Transparency = 1 end
				if hrpDefault and hrpDefault:IsA("BasePart") then hrpDefault.Transparency = 1 end
			end
		end
		task.wait(0.1)
	end
end)

-- MÚSICA
local function loadCustomAsset(url, filename)
	if not isfile(filename) then
		writefile(filename, game:HttpGet(url))
	end
	return getcustomasset(filename)
end

local CUSTOM_MUSIC = loadCustomAsset(
	"https://github.com/monicagalindo-wq/RECUP/raw/refs/heads/main/BlackSun.mp3",
	"BlackSun.mp3"
)

task.spawn(function()
	local theme = game:GetService("ReplicatedStorage")
		:FindFirstChild("ClientAssets")
		and game.ReplicatedStorage.ClientAssets:FindFirstChild("Sounds")
		and game.ReplicatedStorage.ClientAssets.Sounds:FindFirstChild("mus")
		and game.ReplicatedStorage.ClientAssets.Sounds.mus:FindFirstChild("Game")
		and game.ReplicatedStorage.ClientAssets.Sounds.mus.Game:FindFirstChild("Round")
		and game.ReplicatedStorage.ClientAssets.Sounds.mus.Game.Round:FindFirstChild("SoloTheme")
		and game.ReplicatedStorage.ClientAssets.Sounds.mus.Game.Round.SoloTheme:FindFirstChild("SonicSolo")
	if not theme then
		warn("no musica pipipi")
		return
	end
	theme.SoundId = CUSTOM_MUSIC
	theme.Volume = 1.5
	theme.Looped = true
end)

Features & Information

(EXECUTE DURING A MATCH, NOT BEFORE OR AFTER) Icon: by Shad/@cuteshad PATCH: I Uptadated the model, hopefully it works now Showcase: https://youtube.com/shorts/TtKHIBfEwJw Faker quills from this video but they've never arrived the shop so idk: https://www.youtube.com/watch?v=aHlrN4e6c6w&t=91s

Community Comments (1)

sob636913sob636913Jun 16, 2026

cool

More Scripts for (ANNIVERSARY) Outcome Memories v0.2