GetLastSpeaker()
Determines the last creature that was communicated with.
object GetLastSpeaker();
Description
Use this in a conversation script to get the person with whom the PC is conversing. Returns OBJECT_INVALID if the caller is not a valid creature.
Remarks
If called within a conversation (e.g., as part of the "StartingConditional" script for a PC line of text AFTER the NPC has spoken previously), the function will not return the last NPC speaker, but will return OBJECT_INVALID.
The value is apparently set after the whole conversation with an NPC is completed, not after each line of conversation. This means you can't use this function during a conversation to grab the tag of the NPC that is speaking.
The above is what I found on this function in the Lexicon. The way I'm reading this is that a simple script using this function to identify the NPC in conversation and make them perform an action won't work reliably... am I right in this assessment? If so, how am I supposed to do... anything in a conversation? >.<