		addHook("PlayerThink", function(player)
		if player.mo.skin == "paint_sonic"
		and not player.overlay
		player.overlay = P_SpawnMobjFromMobj(player.mo, 0, 0, 0, MT_HAT)
	end
end)
		addHook("PlayerSpawn", function(player)
		if player.mo.skin == "paint_sonic"
		player.overlay = P_SpawnMobjFromMobj(player.mo, 0, 0, 0, MT_HAT)
	end
end)

	addHook("PostThinkFrame", function()
    for player in players.iterate
		if player.mo.skin == "paint_sonic"
		player.overlay.angle = player.mo.angle + ANGLE_90
		local bapz = player.mo.z+FixedMul(15*FRACUNIT + player.mo.momz/2, sin(player.mo.height))
		local bapx = player.mo.x+FixedMul(15*FRACUNIT, cos(player.mo.angle))
		local bapy = player.mo.y+FixedMul(15*FRACUNIT, sin(player.mo.angle))
		P_MoveOrigin(player.overlay, bapx, bapy, bapz)
		end
	end
end)
