I find that the plrvisible value is a bit hit and miss tbh.
Instead you can use the old "if I can see him, he can see me" approach, i.e. raycast from the player in the direction of the NPC and if the hit equals the NPC objectId then he can potentially see you. (obviously if he isn't looking in your direction then he will not react but the view cone should already deal with that bit))
In reality the NPC is a capsule shape btw so you have to work out where the centre of the capsule is in relation to the player eye position to get the angles right to work out the values for the ray cast.
Been there, done that, got all the T-Shirts!