Yes but partly. Let us explore this with examples
We have a system procedure sp_who that returns the informations about the current connections, users, sessions etc. Let us create a new database named test and create sp_who inside it.
Case 1
Create database test
GO
Use test
GO
create procedure sp_who
as
select 'created in test database'
Now execute this procedure
exec test.dbo.sp_who
As you see from the result, it does not return what is expected but returns the result of what the system procedure sp_who returns.
Case 2
Create a procedure named sp_who_new in master database
Use master
GO
create procedure sp_who_new
as
select 'from master database' as sp_test
Execute this procedure in test database
use test
exec sp_who_new
Eventhough the procedure is not in the test database, SQL Server finds it in master database as the name starts with sp_ and returns the result
Now create the same procedure in test database but change the database name in the select statement
Use test
GO
create procedure sp_who_new
as
select 'from test database' as sp_test
Execute the same procedure in test database and see the result. It actually execute the procedure available in the test database eventhough the same procedure that starts with sp_ is available in master database.
So the conclusion is that only the procedures with sys owner will be executed in master database and local db's procedure will be executed if the owner is not sys.