**** OLD TINTIN SCRIPTS ARE NOT 100% COMPATIBLE WITH THIS VERSION ****


It's hard to stay compatible with older versions and at the same time
improve the script parser. People who do not want to update their scripts
and figure out the differences will simply have to use the old version.


TINEXP 1.0 (tintin expressions) are as of now more clearly defined:

%0 - %9 are passed along with triggers. Actions, Aliasses, etc
&0 - &9 are passed along with functions.
$       are used for variables
@       are used for functions, the arguments are stored in &0 - &9
<000>   are used for colors
\       is used to escape a character, but doesn't always work.
{ }     are used for seperating multi word command arguments.
" "     are used for strings in #math
* ? \   are wildcards in regular expressions.



If you want to convert your scripts take notice of the following changes:

1) #LOOP #FORALL #FUNCTION now use &0-&9 instead of %0-%9.

2) #HIGHLIGHT had to be changed because this tintin version is less flexible
when it comes to the parsing of commands as the old tintin versions. Basicly
the old #high {color} {string} is now parsed as: #high {string} {color} 
(which makes much more sense don't you think?) You can load your old
highlights, but they will not be added to the highlight list, because they'll
generate a 'color code not found' error message. So you'll have to redo your
highlights, or perhaps look into the #substite command combined with the new
color codes, see #help colors

Also the way highlight deals with colors has been changed. {b light green} is
no longer valid, instead you would want to use {bold b green}, the highlights
also only use the valid VT100 codes, italic has been replaced with underscore,
since italic was never part of the protocol of VT100 terminals.

3) #FORMAT replaces many commands, I'd suggest checking it out.

4) #MESSAGE, #CONFIG, #INFO, #IGNORE, #DEBUG are all you need to configure
   tintin, changes to #config are written to file with #write.

5) The old walk code has been removed, instead you can use the old mark command
to start mapping a path. When finished you use savepath {backward/forward}
{alias name}. Next you can use #loadpath {alias} to load an alias, with #map
you can see (used to be #path) what directions are stored in the path.
With #path and #unpath you can push and pop directions from the path list,
non valid directions are allowed: #path {open door west} {open door east} for
example will add those commands to the forward and backward aliasses.
Once you've used #loadpath {alias} you can use the #walk command, this will
remove one node from the path list and execute it. This way you can walk down
the path by typing #walk repeatedly, or by using a ticker. When there are no
more moves left on the path you'll receive a message. Notice this is perfect
for automated scripts that require walking.

6) #TICK has been changed quite a bit, new commands: #TICK #UNTICK, you can
have as many tickers as you want. The old #tick commands are gone.
Syntax: #tick {name} {commands} {seconds to tick}
The name is added so you can delete it. You will no longer receive spam, but
with a little bit of creativity you can rebuild the old tintin ticker spam.

Can use #read to load this simulator, for the few muds that still have a
non random tick:

#tick {oldtick}
{
	#delay 50 #showme #10 SECONDS TO TICK!!;
	#showme #TICK!!!
}
{60}


7) #read now supports multiline triggers, it also checks the nesting level
before doing anything so you don't end up with bogus, and trims leading 
spaces/tabs. Make sure to remove non matching { }'s from #nop comments. Cause
it'll error msg with the line number to look at otherwise.


8) Can place ^ at the end of an action if you want a perfect match.
#act {^The trail leads north^} {n} {5} will not trigger on:
The trail leads northwest

   In order to make a color trigger start a trigger with ~ In order to see
   color codes the way tintin wants you to enter them type: #config CONVERT on
   when done use: #config CONVERT off.

9) Added macros, see help file on macro and unmacro

10) Finished function code, $result is now a default variable that can be used

#function dosomething {#math result 1 + 1}

say @dosomething{} will print 2, the #RESULT command has been removed.

You can still use the result variable as a normal variable, but it might get
messy if you use it in combination with #echo or functions, or both.

11) #forall now uses space seperation instead of comma seperation, added
    a helpfile as well

12) Fixed #cr for diku muds, #10 #cr should work now, test old tintin versions
    if you don't believe me.

13) Rewrote the mathematical expression interpreter used by #if and #math,
it can now deal with both strings and numbers, strings must be enclosed in " ",
and has more options, see help on math.
T and F are not currently supported, though they're just as short as 0 and 1
Can look into it if requested.

14) #pathdir is now specificly designed to hold a direction, and the opposite
direction, there was some confusion by a help file writer about this who
thought it was meant to hold a direction and the specific command to use with
that direction.

15) Defaults are no longer in a .rc file, if someone wants different defaults
they can write a command file for it.

16) Can now set the top and bottom row of the scrolling region with #split,
if some machines still cannot report the correct screen size I'll add a 
config setting for the rows/columns used. The current setup allows a top
line or a wider split line for muds with 2 line prompts. Not entirely sure
about this approach though.

17) Can now have multiple prompt triggers, the 2nd argument is the substitution
string that works the same as #substitute. the 3rd argument is the row the
line should be printed on, if left blank it picks the normal split line.
This stuff needs more work still, but works

18) Fixed suspend for tintin sessions started using a linux script

19) #sleep has been removed, use #delay.

20) Tintin is now capable of wordwrapping, fixed bug in the previous linewrap
routine that wrapped at 79 instead of 80 columns.

21) Fixed color loss bug in split mode, for muds that send wrapped lines,
probably wasn't discovered because the only muds I know about doing their
own wrapping, not surprisingly have their own vt102 split mode implementation.
But should fix some odd color losses in certain situations on some muds.

22) #system can no longer be renamed, I fixed the %0-9 issue passing along ';'
removing the $0-9 'bug fix' variable. One would be surprised how many people
are still using %0-9 in their triggers. Sort of makes me wonder how bad some
people will feel about this non backward compatable tintin version o.O

23) Settings are now inherited from the startup session when creating a new
session, so it's important to read in a config file if you don't want the
defaults before starting a new session.

24) Got rid of needing double %% or triple %%%, the script engine should
behave like php now pretty much. You can still nest using %%90 %%91 for %0
and %1 when there isn't a 9th argument.

25) Added internal color codes, help color


26) MCCP support added

27) NAWS (negotiate about window size) added

28) Scroll back buffer, with scrolling macros, home, pgup, pgdown, end, and
    a #grep command to search through the buffer added

29) cursor positioning for split mode has been fixed once and for all hopefully

31) chat has been removed, too much of a mess to deal with atm, might put
    it back if it's actually working and popular.

32) Zombie code removed, some simple, and actually working connection handling
    code added to replace it.

33 ${variable} no longer works, variables can contain numbers and alphabetic
   characters. I don't see what multi line variable names are good for, and
   the code was bugging up some stuff as well, though could be caused
   by other code I removed/rewrote

34 !<argument> will repeat the last command starting with that argument.
   score
   who all
   area
   !          --> repeats area
   !w         --> repeats who all
   !s         --> repeats score
   !ll        --> sends !ll as a command

35 You can turn on repeat on enter with the #config command

36 I'm using the following method to test speed:

  My admin char stands on the mud in debugging mode which prints the current
  time with 0.1 second precision in it's prompt.

  v1.5 and v1.86 do:

  #loop {1,2000} #act lllll%0 smile
  #act {End of area list} {nod} {9}

  v1.9 does:

  #loop {1 2000} #act lllll&0 smile
  #act {End of area list} {nod} {9}

  The area list contains about 150 areas, the characters are connected from
  the same machine, the admin char forces the character to execute the area
  command, marking the executing time in it's prompt, and the prompt being
  shown once again holding the response time when the character nods.

  Results:

  Version      Average Response time in seconds
  v1.90        0.3
  v1.86        0.9
  v1.50        0.6

37 history has been changed, default the last 1000 commands are remembered,
   you can recall commands using !<partial command prefix> or control-r
   which will give the reverse search prompt.

   Example:

   where all
   who
   area
   score
   !w   <== executes: who
   !a   <== executes: area
   !whe <== executes: where
   !    <== executes: score