IntroMaker v1.0
---------------
by NiKoDeMoS
midctf@quakemania.com
http://www.quakemania.com/midctf/

IntroMaker is a "processor" of macro directives for generating intro messages
in QuakeC. 

Currently, IntroMaker expects a configuration file called "intro.cfg" to
design the intros. This file is sort of a "command file" which instructs the
compiler to generate the intro code. There are several functions currently
available, and will be many more the final release.

IntroMaker currently outputs the file "intro.qc". To invoke the intro, simply
link "intro.qc" in "progs.src" before "client.qc" then add a call to Intro()
in PutClientInServer(). To get an example intro.qc, simply type "intro" at
the command line.

IntroMaker takes two command line parameters:

-config <configname> specifies an alternate config file name. Any extensions
        must be included.
-outfile <outfilename> specifies an alternate file to output to. Any
        extensions must be included.

Example:

To use demo.cfg as the input file and generate server.qc, type

intro -config demo.cfg -outfile server.qc

IntroMaker has very basic error checking. It does not expand the entire line,
gathering only the information that it needs. Be careful when designing
statements. A sample .cfg file is included.

IntroMaker was designed using gnu-win32. Therefore, the DOS and Linux based
executables are from the same, exact, unmodified source.

All numbers must be in the form xx.xx. At least one leading zero is required,
so .1 should be 0.1.

All text must be enclosed in quotes. Special characters are supported, so
        "type \"help\" for help"
is a valid text string.

Any lines that don't begin with $ are ignored.

Any text after a command's parm list is exhausted will be ignored.

The following commands are recognized. [optional] <required>

$start [showfor] [delay]

This sets up the start of the intro. Every file must have one of these. 
[showfor] sets how long the first message will be displayed
[delay] sets how long before the first message is displayed
Defaults are 3.0 for show time and 0.1 for delay.

$showfor <showfor>

<showfor> sets the amount of time for the next message to be displayed. This
does not apply to the next $showtext but rather allows the next $showtext to
set up for the subsequent $showtext or $end. 

$delay <delay>

<delay> sets the delay between the next $showtext and the subsequent
$showtext and/or $end. 

$settext "<text>"

<text> sets the next message to be displayed

$showtext [showfor] [delay]

This command will display the current text. It also sets up the amount of
time and pause between the next message to be displayed. You can optionally
set these values. Please note that the [showfor] time pertains to the next
message, not the current one!
[showfor] sets the amount of time the next message will be displayed
[delay] sets the delay between this and the next message

$pan <dir> <type> <frames> <time>

This will introduce a "pan" effect. The text will scroll on/off the screen.

<dir> specifies the direction: L for left, R for right.
<type> specifies the type: I for in, O for out (O will leave you with a
        blank screen at the end).
<frames> specifies how many frames to show. The less frames, and the jerkier
        your "pan" effect. There must be less frames than the length of the
        text. 
<time> specifies the time it will take to complete. For a framerate of 30ps,
        you would specify 30 frames and 1 second. This is NOT recommended,
        you should definitely play with these values until you get the
        desired result.

Example: scroll all the way across the screen
        $pan L I 30 3
        $pan L O 30 3

Example: scroll onto screen, then back off
        $pan L I 30 3
        $pan R O 30 3

SPECIAL NOTES: $end is an implied $showtext, so if you wish to complete your
intro with a $pan command, make sure to $settext " " before the $end so it
doesn't display anything. 

$implode <frames> <time>

This will implode (collapse to the center) the current text.

<frames> is the number of frames to use. This must be no greater than half
        the characters of text.
<time> is the time it should take to complete the implosion.

$explode <frames> <time>

This will explode (expand from the center) the current text.

<frames> is the number of frames to use. This must be no greater than half
        the characters of text.
<time> is the time it should take to complete the explosion. 

$end

End controls the end of the intro. Please note that the code is generated
to display the last message for the time specified. This command implies a
special $showtext for the last message to be shown. Because of this, the
following syntax is correct:

$start 3.0 0.1
$settext "test"
$end

This will show "test" after a 0.1 delay for 3.0 seconds and then remove
itself.

Please note the following:

$start 3.0 0.1
$settext "test"
$showtext
$showfor 2.0
$delay 1.0
$settext "test2"
$end

Will NOT show the last text for 2 seconds. It will show it for 3. The
settings always apply to the message generated after the next $showtext (in
this case, the $end is an implied $showtext). The correct setting would be
this:

$start 3.0 0.1
$settext "test"
$showfor 2.0
$delay 1.0
$showtext
$settext "test2"
$end

The start sets up the times for the first message. The subsequent $showfor
and $delay set the time for the next message after the $showtext, in this
case the $end.

Some examples have been included.

Please send any feedback to
midctf@quakemania.com

Thanks!
NiKoDeMoS