I generally don't like plug-ins. I am not a strong enough coder to read others code well and understand what is going on. If I get stuck it feels like I don't even know where the problem is.
So I generally make everything myself. My released game had a simple dialog system they I stored all the dialogs in a resource file in a big dictionary. Then when I needed one I would just ask for that dictionary entry. Each dialog was set, but I could call a few different dialogs based on which characters you had, or inventory.
There was some duplicated likes of code, but not too much.