T I N T I N
                                   I I I
                 (T)he K(I)cki(N) (T)ick D(I)kumud Clie(N)t

This is version 3.0 of TINTIN. Lotsa stuff has been changed since the last
release. New features have been added. But TINTIN is still a small, fast
client special designed to help dikumud-players in their slaughtering.

======================================Me==================================
You can email me at: pjunold@daimi.aau.dk
Feel free to mail if you discover any bugs, have any probs with the prog or 
have suggestions for any new(and useful) tintin-commands then lemmie hear.

===============================Compiling TINTIN===========================
Before compiling you might wanna change some of the default values for your
tintin setup. Look at the top of the file called 'tintin.h' for more info.

I assume you have placed all the files in a directory. Then you type
'make'. After a moment there'll be a new file in the directory - 'tintin'.
OK if you the program compiled without any problems, then go to next section
and read on.

Oh no! TINTIN didn't compile at first try. No worry - there's lots of 
informations in the makefile. Editing this file should get you going.
If you know nothing about c- and unix-programming, then ask someone at your
site who does. TINTIN III is really not a complicated program, and you 
properly just have to comment or uncomment a few flags in the makefile. 
If no one at your site can help, then feel free to gimmie a mail.

========================Starting and ending TINTIN========================
The syntax for starting tintin is: tintin [commandfile]
Read more about the commandfile in the 'files' section below. Remember one
thing though. ALL ACTIONS, ALIASES AND SUBSTITUTIONS DEFINED WHEN STARTING
UP TINTIN, ARE INHERITED BY ALL SESSIONS.

If you wanna get out of tintin after starting it type: #end

=================================Basic features===========================
I'll start by explaining some of the very basic and important features:

All TINTIN commands starts with a '#'. (can be changed with #char though)
Example:
#help         <=#help is a command directed to the client and not the mud.

All TINTIN commands can be abrevated when typed.
Example:
#he           <=typing #he is the same as typing #help

All commands can be seperated with a ';'.
Example:
n;l green;s;say Dan Dare is back!    <=do these 4 commands

There are 2 ways the command-split-at-';'s can be overruled. 
1) typing '\;' on a line will be translated to a single ';'
Example:
say Hello \;)      <=say Hello ;)

2) ';'s inside a "<---->" sentence will be parsed as normal ';'s
Example:
say "hello ;) How's going?" <=say hello ;) How's going.

The last method is important when for example having an alias to execute
more commands. More on that later.

===================Connecting to a mud - the #session command==============
Command: session [[sessionname] mud-address]
Usage: #session 

This is the command you use to connect to the muds. The session that  
you startup will become the active session. That is, all commands you
type, will be send to this session.

Here's a small example to get you started: 
It shows how I log into austin diku with 2 chars and play a bit with them.

%tintin                                   <=startup tintin
#session snowy austin.daimi.aau.dk 4000   <=define a session named 'snowy',
<<usual login stuff>>                       and connect to austin diku
#session zork austin.daimi.aau.dk 4000    <=define a new session name 'zork'
<<usual login stuff>                        and connect to austin diku

When I type commands now, they are send to the char I loged in with.
I can change the active char, by typing #sessionname

#snowy                                     <=make the char in the 'snowy'
                                             session the active one.

When I type commands now, they are send to the 'snowy' char.

If I wanna send a command to a session that isn't active, without having 
the trouble to activate it, I can type #sessionname command
#zork say anybody here wanna die???    <=the 'zork' char will say this
#zork "puke mayor;kill mayor"          <=and do this..

If I wanna see the text that a session recives without switching to it, I can
type: #snoop sessionname. Remove the snoop by typing #snoop sessioname again.
#snoop zork                                <=snoop the zork session
#snoop zork                                <=unsnoop zork session

If I want all sessions to recieve same command I type: #all command
#all shout dikuMUD at 300mph or DON'T dikuMUD!  

You can get a list of all session by typing: #session. The current active 
session is marked with (active). Snooped sessions with (snooped).

====================================Alias==================================
Command: alias
Usage: #alias [aliased-command] [unaliases-command(s)]

The syntax of the #alias command is almost like alias in csh.
Use this command to define aliases. The variables &0, &1.. &9 contains
the arguments to the aliases-command as follows:
the &0 variable contains ALL the arguments.
the &1 variable contains the 1. argument
....
the &9 variable contains the 9. argument

Example: #alias nice say Hello Mr &1

typing: > nice Ole Bole 
then &0 =Ole Bole
     &1 =Ole
     &2 =Bole
Thus the alias would be evaluated to: say Hullo Mr Ole
 
If there're no variables on the right-side of the alias definition, any
arguments following the aliases-command will be appended to the unaliases-
command. 
Example:
#alias ff cast 'fireball'
>ff mayor
evaluates to: cast 'fireball' mayor

If you want an alias to execute more commands, you must use "s:

#alias ws "wake;stand"    <=remember the ';'s inside "s don't end the argument.

Other examples:
#alias eb "get bread bag;eat bread"       <=define alias
#alias eb                                 <=show alias
#alias                                    <=list all aliases
#alias put pu &1 in &2                    <=for dikuII maybe...

To delete an alias use the #unalias command.
#unalias eb                               <=delete the eb alias.

WARNING! TINTIN III doesn't check for recursive aliases! That is surpose you type
something like: #alias yo yo
and then do a: yo
then TINTIN goes into an endless loop.. #&*^@$&*^@$*^&@$#&*

 ====================================Action================================
Command: action
Usage: #action [action-text] [action-command(s)]

Use this command to define an action to take place when a particular text
appears on your screen. There're 10 variables you can use as wildcards in
the action-text. These variables are &0, &1, &2....&9. 

Examples: 

#action BLEEDING recite recall                    <=recall when you get that 
                                                    nasty BLEEDING text.

#action "are hungry" "get bread bag;eat bread"    <=auto-eat

#action "&0 has arrived." shake &0                <=shake hands with people
                                                    that arrives.
                   
#action "&0 says '&1'" "say &0 said &1"           <=repeat all says.

#action "tells you" #bell                         <=beep when you gets a tell

#action                                           <=show actions
#action ws                                        <=show action
#unaction ws                                      <=delete action

You can have tintin ignore the actions if you type '#ignore'. Turn the 
ignoring off by typing '#ignore' again.

You can see what commands TINTIN executes when an action triggers,
by typing '#echo'. Turn this feature off by typing '#echo' again.

===============================Substitutes================================
Command: #substitute     (remember you can abrevate commands....)
Usage: #substitute [text] [substitute text]

This command works a bit like #action. The purpose of this command is to
substitute text from the mud with some text you provide. You can think of 
this command, as a kind of extended gag-command. 

Examples:
Suppose you want all the occurences of the word 'Snowy' to be substituted
with 'The King'. Then you'll type: 
#subs &0Snowy&1 &0The King&1

Now suppose the mud sends you the line: Snowy har arrived.
Then your substitution would get triggered and the variables would contain:
&0 =nothing (there wasn't anything in front of the word 'Snowy')
&1 = has arrived.
Substituted into the line is then:
The King has arrived.

There IS in fact a serious purpose for this command. People using a setup like:
Home<--------SLOW modem------->School<------FAST modem------------>mud site
complain that they keep loosing their link, when the mud sends to much text too
fast(as in fights on grimne-diku for example). The problem is that their own 
modem is too slow for the transfer. People like that can use the #sub command
to reduce the amount of data transfered.

Example: (grimne diku)

#sub &0POWERMAD&1    &0PM&1
#sub &0Black&1       &0B&1
#sub &0obliterates&1 &0obr&1

if the diku sends the line: Black obliterates POWERMAD.
you'd see: B obr PM.
If you didn't want to see anything from the lines with Black you'd do a:
#sub Black .          (i never liked this dot syntax...)
and you''ll never see the lines.

Use #unsub to delete substitutions.

================================Speedwalk===================================
If you type a command consisting ONLY of letters n, e, s, w, u, d - then 
this command will be interpreted as a serie of directions you wanna go.
Example: >sswn
go south, south, west, north

IF who have problems with typing some commands that actually ONLY consists
of these words, then type'em in CAPS.

Example: (can you make up more examples than this? Gnort told me this one...)
NEWS

If you don't like this speedwalk feature at all, then you can toggle it on/off
with #speedwalk.

===================================Ticker===================================
Every 75 seconds on a standard dikumud a so called tick occures. You 
regenerate faster hp/mana/mp if you`re sleeping/resting during a tick. So it's 
pretty nice to know when the next tick occures. TINTIN helps you with that. 
When you turn the ticker on in a session, you'll get warnings just before a 
tick occures. The real ticklenght isn't 100% stable. So you have to set the 
syncronize the ticker now and then. Use #tickset for that.

commands for ticker:
#tickon              <=turns the ticker on in a session
#tickoff             <=turns the ticker off in a session
#tick                <=shows #seconds to next tick
#tickset             <=reset the ticker
#ticksize            <=set lenght of ticks. The ticklenght is not 75secs on
                       some modified dikumuds.

Here's some useful aliases/actions related to the ticker:

#alias ? #tick
#action "are hungry" "#tickset;say HA! my tickcounter is now perfectly set!"

NOTICE the #ticksay. #ticktell etc. commands from v2.0 has been removed. You
can find an example of how to implement these commands with aliases in the
coms file.

===============================Commando files===============================
When you order TINTIN to read a commandofile, TINTIN parse all the text in
the file. You can use comandofiles to keep aliases/actions in, login to a 
mud(name, password etc..) and basically all kinds of commands(unlike v2.0).
You can make the commandofiles with either a texteditor, or use the 
#writecoms commando to write out a file.

commands for files:
#read filename            <=read and execute the file.

#write filename           <=write all actions/aliases/substitutes known for 
                            current session to a file.

#writesession filename    <=write all actions/aliases/substitutes known for
                            current session BUT not enherited to a file.

=============================Repeating commands============================
You can repeat a command/commandline. The syntax is: #number command

examples:
#5 cackle
#10 "buy bread;put bread bag"        <=buy 10 breads and fill'em into a bag
#1000 shout assholes!!!!!            <=noshout yourself.

===================================History================================
TINTIN has a limited subset of the csh history features. 
#history          <=show the last 15 commands
! or !!           <=repeats the last command
!5                <=execute 5. last command
!cast             <=execute the last command in list starting with `cast`

=============================Path commands================================
TINTIN tries to keep track of your movement. That is whenever you type
either north/south/east/west/up/down, TINTIN will push the direction into
a queue(the path). 

commands for path:
#mark            <=mark beginning of path(ie reset queue)
#path            <=show the path
#return          <=go one step back in the path
#unpath          <=forget last move in the path
#action "Alas, you cannot go that way..." #unpath

real life example.. tatataaaa:
You want a fast run to the master mindflayer and back. You go to dump
and type: #mark. Then you run down and kill the master. To go back you
just type: #30 #return
You could ofcoz just as well have recalled outta there, but... Hell it's just
an example.

==============================Other commands===============================
#boss                     <=fill screen with serious looking stuff
#char new-char            <=change the tintin-char. The tintin-char is the 
                            char infront of all tintin-commands.
#help                     <= ...
#nop                      <=for comments in coms-files
#system unix-command      <=execute a unix-command
#z                        <=cut link to current session. A faaaaast way out