Dialog System
Introduction
The dialog system for Legnds of Aria comes in various shapes. We have dialogs for npc conversations, progress bars and all things in between. In this section you will learn the structure and basics to creating your very own npc conversations for your players to enjoy. The general npc dialog system is a series of function calls where inside each of these functions is the information for the given dialog screen currently showing. Every page of the npc conversation has a npc dialog text area, and the player response area. The magic of the npc dialog system starts off with the NPCInteractionLongButton function lets look at the parts below.
--- opens up the npc dialog menu
--@param text - (string) a string containing the current message the npc is talking about
--@param npc - (gameobject) the npc currently interacting with the player
--@param player - (gameobject) the player currently interacting with this npc
--@param eventId - (string)a string identifying the event response of the dialog
--@param response - (table)a table containing response array table
function NPCInteractionLongButton(text,npc,player,eventId,response)
end
When you first interact with a npc or use the talk context menu, the npc ai script will fire up the Dialog.OpenGreetingsDialog function. This function lives inside the base_ai_npc.lua script file. Notice how the function is camel case OpenGreetingsDialog. The way dialogs are setup is by player response and response handles. All dialog functions must be named Open + Handle Name + Dialog, you will see why looking below at a basic greetings override.
--- opens up the npc greetings dialog menu
--@param user - (gameobject) the user interacting with this dialog
function Dialog.OpenGreetingsDialog(user)
text = "Welcome traveler to Eldier Village, how can I be of assistance?"
response = {}
response[1] = {}
response[1].text = "Can you tell me about chickens?"
response[1].handle = "AboutChickens"
NPCInteraction(text,this,user,"Responses",response)
end
The above example will load up and work, but we do not have a AboutChickens function made. As discussed earlier the function name is Open + AboutChickens + Dialog so lets make this function and populate it with a response. Also lets loop back to the greetings message after the player gets to this dialog response page.
--- opens up the npc aboutchickens dialog menu
--@param user - (gameobject) the user interacting with this dialog
function Dialog.OpenAboutChickensDialog(user)
text = "I like the taste of them hmm? They lay eggs, make clucking noises... saw one fly for darn near 13 seconds."
response = {}
response[1] = {}
response[1].text = "Golly Gee Mister"
response[1].handle = "Greetings"
NPCInteraction(text,this,user,"Responses",response)
end
Attaching dialogs to npcs
Every npc has a basic AI file. lets go ahead and create our new npc ai file. we will save this file in your mods scripts folder as ai_mynpcdialog.lua
ai_mynpcdialog.lua
require 'base_npc_ai'