По поводу SetCombatLight, можно прописать постоянный чек героя, например с самой большой армией, с помощью GetObjectPosition, но такой способ может сильно грузить. Если производительность важнее, можно попробовать REGION_ENTER_WITHOUT_STOP_TRIGGER т. е. сделать регион 5х5 под каждым монстром.
По поводу NCF, нужен рандомящий луп с командой CreateMonster где ID необходимых существ нужно внести в массив и вызывать с помощью random().