I've never used dialog events or character events. I don't even really use charactervarintegers that much. Mostly stick to globalevents. Not too concerned with efficiency in these mod projects and it keeps my script more consistent and easier to root out problems.

I know that you can easily set Character Var Integers from the keyword editor.
ACTION SetCharacterFlag("WalkAway",0,1) 0 being the speaker index, and 1 being the integer.

And that those are easily captured in the story editor with GetVarInteger. VarInteger and CharacterFlag are the same thing, it's one of those inconsistencies between the story editor and the keyword editor.

So when you set the character flag in a node that's supposed to trip the story script for WalkAway, once the dialog ends it will query the flag and if it's 1 the character will walk away. I'm not sure if you can do that as easily with the other two types of events.


*I'm away from my editor at the moment and am going off memory, my details may be a little fuzzy.