here's the tricky part, how would we get any npc to walk up and forcegreet? assuming he wants to do something in combat, the only thing i can think of doing it is having a global script checking NPCs for gettarget-> player with MWSE, scanning a reference a frame.
This is why we need voices, they auto-trigger. In the very simple example I linked, using the 10% chance of triggering NPC attack voice, still the real ratio of affected NPCs is high, I think that is because event chance is low, but event frequency is high, so you are never sure 100% of attacking NPCs will be affected, but the majority (those who say something=play attack voice) is.
In this particular case, as we need just one/any NPC to detect player, it could be a usable method (assuming you want to apply to hostile NPCs)