Yeah, while GetObjectByTag is supposed to be able to get the next nearest object and so on, it doesn't really seem to work. Sometimes the nearest creature to me would be excluded, which makes no sense because it should be the very first to be turned... and sometimes the creature furthest from me would be excluded, and sometimes someone in between. I suspect it might have more to do with the object's current location within the module. In any case, GetNearestObjectByTag works just like you'd think it does. Since this worked out perfectly, I've gone back and edited some of my older scripts to incorporate a few cool things, like destroying all objects of a certain tag - without the need to input the tag, if you don't know it.
I do, however, have another problem. Not so much as a problem as a frustration, actually. I don't think there are script functions that can achieve what I really want. I'd like to duplicate a party member but somehow change their dialogue file so I give them new dialogue without having to edit the original, but I can't think of any way to do this without editing the OnDialogue script, which of course I also don't want to do. Failing that, I considered making my own UTCs and copying the party member stats... but there's no way to do that apart from going over every single possibility one at a time, and even then there doesn't seem to be a way to duplicate some information, such as character level. One last thing I have considered is a usable item that will start a dialogue with the nearest creature, ignoring its natural dialogue entirely. But I'm not sure even that will get me what I want, because I think I might have to give them a new heartbeat script too.
So, any ideas would be most appreciated - or just thoughts on which of these would be the most ideal solution.