I don't have a script which covers your situation exactly, but I generally wrap SetCameraFacing as a command before starting conversation, to get the timing right. So, the code for starting the new conversation in the Text Appears When script for case 14 might read:
AssignCommand(oPC, ActionDoCommand(SetCameraFacing(DIRECTION, ZOOM_OUT, PITCH)));
AssignCommand(oPC, ActionDoCommand(AssignCommand(oNPC, ActionStartConversation(oPC, "new_dialogue"))));
In the working example I have, the second line reads
AssignCommand(oPC, ActionDoCommand(ExecuteScript("start_again", oNPC)));
where the script start_again contains the ActionStartConversation, but that was only for my convenience, so I guess the above should work.