tag to force the player to skip texts manually as there's no voice over, each time a text ended we checked the incrementing index value against the conversation table entry total to see if we wanted to display the next text or close the dialog interface & kill the loop.
Basic principal is some Lua tables for storing texts, animation names & so on. Then you need a couple of functions to init the dialog system, then one to update / quit the dialog system. Finally you need a called by other action block which contains something like...
if values 'dialog_index' less than or equal to values 'dialog_total'
execute a script > updateDialog()
display narration text ' <p>
pause for 150ms
jump to action part #1
end if
function check(conditionstring)
-- print("Passed String: "..conditionstring)
if conditionstring == " " then return true end
local value = {}
for x in string.gmatch(conditionstring, '([^|]+)') do --for each given condition
-- print("checking for "..x)
if string.starts(x,"!c_") then --condition is "not true"
x = string.sub(x, 4)
if not Conditions[x].ConditionValue then else return false end
elseif string.starts(x,"c_") then --condition is "true"
x = string.sub(x, 3)
if Conditions[x].ConditionValue then else return false end
elseif string.starts(x,"!v_") then --value Int is "not X"
x = string.sub(x, 4)
value[1] = nil;value[2] = nil
for w in string.gmatch(x,'([^=]+)') do table.insert(value, w); print(w) end
if Values[value[1]].Int == tonumber(value[2]) then return false else end
elseif string.starts(x,"v_") then --value Int is "X"
x = string.sub(x, 3)
value[1] = nil;value[2] = nil
for w in string.gmatch(x,'([^=]+)') do table.insert(value, w); print(w) end
if Values[value[1]].Int == tonumber(value[2]) then else return false end
elseif string.starts(x,"!vs_") then --value String is "not XXX"
x = string.sub(x, 5)
value[1] = nil;value[2] = nil
for w in string.gmatch(x,'([^=]+)') do table.insert(value, w); print(w) end
if Values[value[1]].String == value[2] then return false else end
elseif string.starts(x,"vs_") then --value String is "XXX"
x = string.sub(x, 4)
value[1] = nil;value[2] = nil
for w in string.gmatch(x,'([^=]+)') do table.insert(value, w); print(w) end
if Values[value[1]].String == value[2] then else return false end
elseif string.starts(x,"i_") then --item "XXX" is in current characters inventory
x = string.sub(x, 3)
if ininv(x) then else return false end
elseif string.starts(x,"!i_") then --item "XXX" is not in current characters inventory
x = string.sub(x, 4)
if not ininv(x) then else return false end
end
end
return true
end
function ininv(item)
local charitems = game:getLink(VGameCurrentCharacter):getLinks(VCharacterItems)
for k,v in pairs(charitems) do
if v:getName() == item then print("TRUE"); return true end
end
print("FALSE"); return false
end