Enter uVTOS script:

Quick uVTOS guide:
UVTOS is based on the concept of text with tags in it. (Think HTML)
Text that is not in tags is ouputted verbatim. Text that is in tags -
which begin with [ and end with ] - is interpreted by the program as
having special meaning and does not become part of the output.
(Although in many cases the tag is replaced by text.) The many types of
tags are detailed here.

Anonymous Set: [item1|item2|itemN]
The Anonymous set is the most simple tag. It consists of two or
more alternatives seperated by pipe characters. When the program
is interpreted, the tag will be replaced by one of the alterna-
tives, chosen at random. It is perfectly valid to have one or
more of the alternatives be empty, e.g. [a|b||c] or [|a|b], this
can be used to create optional items in the text.

Set Definition: [name:item1|item2|itemN]
This is a named set, basicly an reusable version of the Anony-
mous set. It assocates a name with a list of alternatives. This
name can then be placed inside a tag, such as [name], and that
tag will be replaced with one of the alternatives chosen at ran-
dom. For instance, we might write this:
[digit:0|1|2|3|4|5|6|7|8|9] I have [digit][digit] sheep!

That string would be equivalent to this one:

I have [0|1|2|3|4|5|6|7|8|9|0][0|1|2|3|4|5|6|7|8|9] sheep!

Constant Definition: [constname:setname]
A constant is just what it name implies: something fixed. When
it is defined, a constant becomes one of the alternatives from a
set, chosen at random. It can then be used again as many times
as you want. If we have a set [name:Piro|Largo|Miho], and run
this script:

"Hi, I'm [name]!" said [name].

There is a 66% chance that the character will lie. We probably
don't want this: enter constants. Constants are defined and
recalled in a manner similar to sets.

[myname:name] "Hi, I'm [myname]!" said [myname].

There you have it. Simple. You can make it shorter by using the
echo feature:

"Hi, I'm [myname:?name]" said [myname].

This will replace the constant defintion with the constant's new
value, thus saving you some space.

Casted Recall: [^constant:set]
The casted recall is very powerful. Suspose we have the [name]
set from above, but we want to do this:

"Look, it's [myname:name]! He's got a phaser!"

This has a 33% chance of being wrong since Miho is a girl's name
and thus the proper pronoun in this case for her is 'She's'. We
can fix the problem like this:

[pronoun:He|He|She]

"Look, it's [myname:name]! [^myname:pronoun]'s got a phaser!"

As you can see, a casted recall of a constant is replaced with
the item in the specified set that is in the same position as
the normal value of the constant is in it's set.
Composite Set: [+name:set1|set2|setN]
A composite set is a superset of two or more named sets. This is
handy for reasons that are too compelx for a short tutorial, but
the end result is that the namne you give will be a set contain-
ing all the items in the sets you list; you can then use it as
any other set.

Comment: [# This is a comment.]
A comment tag is simply removed from the program. Nothing spe-
cial happens, it is thus doing what comments do in programing
languages. :)
Other Semi-Important Stuff
All returns and tabs are excised from input files. If you -want-
returns and tabs, you'll need to represent them with \n and \t,
respectivly. The upside of (indeed, the reason for) this is that
you can use tabs and returns with impunity to make your tem-
plates pretty. The backslash is works pretty much universally as
an escape character; you can use it to escape characters which
would otherwise confuse the parser. Identifiers (That is, names
of constants and sets) can contain any character that won't con-
fuse the parser, including nonprinting characters, but it's
probably stupid to use such characters in your names because
they are really hard to type and read.
Copyright 2004 Bryce Schroeder, bryce@lanset.com