If I was doing this, I'd think about each conversation fragment, and create a struct for those with the following properties:
Sentence as String //The string which the NPC says
FragmentDone as Boolean // Can be set true when heard. This could be looked up as a trigger condition in the story.
ReplyOption(8) as String // Reply strings the player can give.
ReplyOptionDone(8) as Boolean // Ability to mark a reply option after it has been used. This can be set true to prevent it from being asked again.
ReplyGoto(8) as Long // The conversation fragment this reply leads to.
Dim Convo(1023) as Convo