Не кажется, а может и создаст. У вас два запроса с CROSS JOIN причем оба используют одну и туже таблицу.
первый запрос красивее был бы
SELECT * FROM NPC AS N
JOIN game AS g ON g.id = n.npc_id
WHERE g.type = 'npc' AND g.loc = '".$user['loc']."'
Аналогично можно обновить второй. А если вы скажете что вообще хотите получить - то может получится и слить в один.
UPD:
select COALESCE(n.title,u.login) as title, COALESCE(n.npc_id, u.user_id) as id from game as g
LEFT JOIN npc as n ON g.id = n.id AND g.type = 'npc'
LEFT JOIN users as u ON g.id = u.id AND g.type = 'user'
Попробуй вот такой запрос на базе исполнить. Если будет корректно работать - можно будет заняться фильтрацией.