You could use the "{TXTRANDOM:}" token and pass that to the "Set a Text Value" action's "Value from file/URI" feature to pick a text file.
E.G.
Set Text [~Topic] to [{VA_DIR}\Textfiles\{TXTRANDOM:topicA;topicB;topicC;TopicETC}.txt]
Say, '{TXT:~Topic}'
Alternatively, you can use a C# snippet to put all the files in a given directory into variables, and randomly choose one of those:
Set Text [~filePath] to '{VA_DIR}\Textfiles\'
Inline C# Function: Return files in directory, wait until execution finishes
Set small int (condition) [~rand] value to the converted value of {RANDOM:1:{SMALL:~randmax}}
Set Text [~Topic] to [{TXT:~File{SMALL:~rand}}]
Say, '{TXT:~Topic}'
Where the "Return files in directory" inline C# function contains:
using System;
using System.IO;
public class VAInline
{
public void main()
{
string path = VA.GetText("~filePath");
//VA.WriteToLog("Path: " + path, "red");
if(Directory.Exists(path))
{
string [] fileEntries = Directory.GetFiles(path);
short count = 0;
foreach(string fileName in fileEntries)
{
count++;
VA.SetText("~file" + count, fileName);
//VA.WriteToLog("File" + count + ": " + fileName, "red");
}
VA.SetSmallInt("~randmax", count);
//VA.WriteToLog("Count: " + count, "red");
}
else
{
VA.WriteToLog("Path is not a valid directory", "red");
}
}
}