Kohne Kato gave me the idea of scripting up a little doo-dad that automaticly scrambled each word within listen range, but only the characters between the first and last letters of each word.
Here it is

CODE
list string2CharList(string str)
{
integer i;
integer len = llStringLength(str);
list ret;
for(i = 0; i < len; i++)
{
ret += llGetSubString(str,i,i);
}
return ret;
}
string charList2String(list chars)
{
return (string)chars;
}
string scrambleWordsIn(string str)
{
list words = llParseString2List(str,[" "],[]);
integer i;
integer len = llGetListLength(words);
str = "";
for(i = 0; i < len; i++)
{
llSetText((string)i,<0,1,0>,1.0);
string word = llList2String(words,i);
integer len = llStringLength(word);
if(len > 3)
{
string toScramble = llGetSubString(word,1,len - 2);
word = llDeleteSubString(word,1,len - 2);
toScramble = charList2String(llListRandomize(string2CharList(toScramble),1));
word = llInsertString(word,1,toScramble);
}
str += word + " ";
}
return str;
}
integer active = TRUE;
say(string message)
{
llSay(0,message);
}
default
{
state_entry()
{
llListen(0,"",NULL_KEY,"");
}
listen(integer c, string n, key id, string m)
{
if(active) say(scrambleWordsIn(m));
}
touch_start(integer total_number)
{
if(active)
{
say("Scrambler off.");
active = FALSE;
}
else
{
say("Scrambler on.");
active = TRUE;
}
}
}
Enjoy!

==Chris
PS. It can be a little slow depending on the length of the said text, how many spaces in the said text, and how many characters per word are in the said text. Blame it on the string2CharList() function
