diff --git a/functions.lua b/functions.lua index f634d7b..5840537 100644 --- a/functions.lua +++ b/functions.lua @@ -235,7 +235,10 @@ yl_speak_up.add_new_dialog = function(dialog, pname, next_id, dialog_text) end -- add a new option/answer to dialog d_id with option_text (or default "") -yl_speak_up.add_new_option = function(dialog, pname, next_id, d_id, option_text) +-- option_text (optional) the text that shall be shown as option/answer +-- target_dialog (optional) the target dialog where the player will end up when choosing +-- this option/answer +yl_speak_up.add_new_option = function(dialog, pname, next_id, d_id, option_text, target_dialog) if(not(dialog) or not(dialog.n_dialogs) or not(dialog.n_dialogs[d_id])) then return nil end @@ -271,6 +274,17 @@ yl_speak_up.add_new_option = function(dialog, pname, next_id, d_id, option_text) table.insert(yl_speak_up.npc_was_changed[ n_id ], "Dialog "..d_id..": Added new option/answer "..future_o_id..".") end + + -- create a fitting dialog result automaticly if possible + if(target_dialog and (dialog.n_dialogs[target_dialog] or target_dialog == "d_end")) then + local future_r_id = yl_speak_up.add_new_result(dialog, d_id, future_o_id) + -- actually store the new result + dialog.n_dialogs[d_id].d_options[future_o_id].o_results = {} + dialog.n_dialogs[d_id].d_options[future_o_id].o_results[future_r_id] = { + r_id = future_r_id, + r_type = "dialog", + r_value = target_dialog} + end return future_o_id end