Я думаю, если это стандартная карта без всяких кастомных штук, то можно просто в 1 день скриптом просмотреть всех героев всех игроков, если есть некромантия - значит это некромант, призыв - значит демон и т.д., и запомнить результаты в глобальную таблицу (ключ - номер игрока, значение - фракция). А потом можно использовать её хоть по отношению к героям, хоть к замкам.