Maybe you can use a AnimationPlayer node? You could move the Camera2D around, enable/disable player input (by exposing a boolean the player script), make Label nodes visible or invisible to show dialog (or make a dialog system you can call from the AnimationPlayer), and play sounds using AudioStreamPlayer and/or AudioStreamPlayer2D.
I’m not sure how easy or hard it would be though.