ne passes pas par des enter frames : passe par des ecouteurs clavier.
Tu as une variable qui contient la totalite de ton dialogue.
Lorsque tu execute ta fonction parleAuNPC(); tu appelles cette variable ( ou array, ou quoi que ce soit d´autre ) et tu slice ton texte au nombre de characteres affiches par ta fenetre. tu passes en variable temporaire le nombre de fois ou tu a decoupe ton texte. Tu passes le texte decoupe dans un array temporaire [slice1, slice2, etc]
Tu construit un ecouteur clavier qui a chaque fois que <touche> est presse, va chercher la prochaine slice dans ton array, jusqu´a ce qu´il n´y en ait plus.
En ce qui concerne les questions - reponses - choix multiples, tu peux passer par un fichier XML qui codifie tout cela :
<NPCtalk>
<dialogue> blah blah </dialogue>
<question 1> ceci ou cela ?
<reponse a><dialogue>blah blah</dialogue></reponse a>
<reponse b><dialogue>blah blah</dialogue></reponse b>
</question1>
</NPCtalk>
C´est du pseudo-code - ce n´est pas cense marcher, mais te donner une idee de ce que tu peux faire ... XML te permet aussi d´imbriquer autant de questions, elles memes "enfants" de reponses a des questions "parentes" etc ...