Tips on making an Undertale esque dialogue system?

I’m in the process of trying to make a dialogue system in the style of Undertale, where you can interact with characters and get different responses based on the choice you make while talking to them. Though, I’m unsure of where to start with this.

My idea was to make an actors system where each NPC is an actor, and a model keeps track of how they appear in the game. (Similar to how games have sprites for their characters)

Example code for an Actor:

Summary
local Class = require(game.ReplicatedStorage.Class)

local actor = Class:extend()

function actor:init()
	-- Display name for actor
	self.name = "TestActor"
	
	-- Path to the model of the actor
	self.path = workspace.NPCS.FabricFriend
	
	-- Voice that plays when the actor speaks (optional)
	self.voice = nil
end

return actor

Is this a good way of doing it? Or is there any better ways/tips to go about doing this? It’s worth noting that the Actor script doesn’t really do anything other than give the information of the Actor when requested.