Dialogue triggering: InMyArea() vs. See()?

I have a question to dialogue triggering. In my (Ajantis) mod I use InMyArea(Player1) to check for the PC's presence. I did this on purpose because I didn't want dialogues to be skipped because Player1 wasn't visible. This lead to players complain that he initiates dialogue although the PC just went hiding / invisible. (It also initiates dialogues across areas).

So, I am thinking about replacing InMyArea(Player1) with See(Player1), but before I do something like this, I would like to know your opinion on this. Which see()/detect() trigger would you suggest that doesn't spoil CHARNAME's fight preparation but doesn't lead to a mute NPC because he never sees the PC to initiate dialogue?

Most NPCs (mod or vanilla) use the InMyArea(Player1) check only for banters with other NPCs

Like e.g.

InParty("Tiax")

InMyArea(Player1)

To make sure that the NPC with Tiax banter does not trigger when the PC is in another area.

Using InMyArea(Player1) to trigger a dialogue with PC might result in the NPC running across a large map to the PC to initiate some dialogue that is due.

So most commonly the See(Player1) or Detect(Player1) is used for talks to the PC.

But there will always be exceptions that may be required by special circumstances depending on the dialogue that is due. E.g a case where a dialogue is triggered during a fight (which is normally excluded by the CombatCounter(0) condition).