I started coding this mud client a long time back ('96) when I had to use
telnet to MUD. At first it was only intended for personal use on my own MUD
(darkwiz.betterbox.net 6969) and so I never thought it would come this far.
Also didn't work on it for a LONG time, until just recently (early 2000) when
I decided to add the poll() system call. I released 1.6 and kept working on
it... don't ask me why :P Anyway, I hope you like it and that it makes your
mudding life a little bit better :)
	
To compile just go into the src/ directory and type:
	make clean
	make

This will make an executable called "mudix". You can place this file anywhere
you like, it's the only file you need. How I do it is this, I have a link to
mudix with "ln -s <path>/src/mudix /usr/bin/mudix" then to run I can do 
"mudix <userfile>" or "mudix <site> <port>". The reason I don't execute from 
the src/ directory is because MUDix creates userfiles and logfiles in the 
_current_ directory. And it makes things look messy.

Of course I should have added a configure script, I know... but it isn't
really needed for this small program (I hope :p). I did fiddle with the
autoconf tools a little, but it didn't work right away so I kept it like this.

At 4.0 I added a configure script. To compile now just type:
	./configure
	make

Good luck :)
Enigma

[]---------------------------------------------------------------------------[]
To read the HELPS press ALT-h. This will display a window with key options.
(A complete help file is yet to be made.)

Version 1.6:  -	Added support for the poll system call. If your distribution
		doesn't support the poll system call, remove -DPOLLING from
		the Makefile.
	      - Added name aliasing.
Version 1.7:  - Added variable support to aliases. Up to 10 variables are
		supported. Use %0 to %9. Example:
		    gb is aliased as: get %0 bag
		    gb potion then results in: get potion bag
Version 1.8:  - Added variable support in triggers! :) Only _ONE_ variable is
		supported (%0) any others are ignored.
		However, you can mask out more than one words in the variable.
		Example:
		    TRG: The white aura around %0's body fades.
		    RSP: say %0 is dispelled!
		This triggers on:
		    The white aura around an old wrinkled man's body fades.
		    say an old wrinkled man is dispelled!
	      - Several words surrounded by two "'s is now seen as one word.
		Example (using the gb example from above):
		    gb "all the potions lying around"
		    get all the potions lying around bag
	      - Optimized the read_desc and write_desc routines. A read of 0
		is no error anymore.
Version 1.9:  - NOTE IMPORTANT CHANGE: Strings are no longer indicated by "'s as
		stated in this README in version 1.8. You must use { } as string
		separators from this version on. This is needed to allow nested
		strings.
	      - Not all ALT-commands work anymore, some are replaced by
		command-line commands. These commands are currently available:
		    #alias Fkey {response}
		    #nmalias {alias} {response}
		    #save {userfile}
		    #trigger {trigger} {response}
	      - Added:
		    #read {filename}
		This will read a text file, and executes every line as if it
		was a command. It will look for a newline character as the end
		of the line indicator. So don't use newlines in the middle of
		your command line. 
		BEWARE: do NOT #read the same file into a file, unless you
			like loops! :P
	      - Added:
		    #delalias {alias name}
		    #deltrig number
		    #log {filename}
Version 2.0:  - Stable version (although I never saw a crash in any version :)).
Version 2.1:  - Nested name aliases work now.
	      - Added trigger levels, so #trigger changed:
		    #trigger level {trigger} {response}
		Also 2 new commands:
		    #distrig level
		    #enatrig level
		These commands enable/disable all triggers of the specified
		level.
	      - BEWARE: What used to be trigger type has now become trigger
		level. This means that in a userfile created with a version
		older than 2.1, the login triggers have to be changed from
		type 1, 2 to level -1, -2 respectively.
Version 2.2:  - A minor bug that creeped in: alt-s showed wrong index of
		triggers, fixed.
	      - Added a sample userfile called sample.usr.
	      - Soon to be added: speedpaths and sound support.
Version 2.3:  - Cleaned up the show_settings() routine and did some more 
		maintenance.
	      - Added speedpaths! :)
		Made 2 new commands for it:
		    #delpath {path name}
		    #path {path name} {path} OR #path {path name}
		#path will either make a new path (when it has 2 parameters) or
		search and executes a path (one parameter). A path is nothing
		more then a set of directions:
		    ne5s2e3u5nenen3e
		This will make your player move in the given directions. A digit
		means, walk that direction # times. So 3e would make you move
		3 east. There are times however that you want your path to open			doors also. You can use o<dir> for that... example:
		    ne5s2e3u5noenenene3e
		The "oe" in this example will be replaced by: "open e".
		However, mostly you would want to do things in your path that
		I can't all implement... because 1) it would be too much work :P
		and 2) I probably can't imagine what you'd all want! :) *G*
		So, for this purpose I put in the { } command thing. You can
		put it anywhere you like in your path, and whatever you put
		in between it will be send to the mud... example:
		    ne5s2e3u{sleep}{snore}{wake}d5e{gossip I made it!}{flex}
	      - Added a write command. 
		    #write {filename.cmd}
		This command dumps all settings in a file which can be read
		back with #read.
Version 2.4:  - Bug fix, speed paths didn't work right (forgot to test :P)
		Thanks for noticing Fal :)
Version 2.5:  - Load back lists in reversed order so that order stays the same
		over different sessions.
	      - Added signal handlers for most signals.
	      - Cleaned up some routines.	
	      - Possible lockup in scrollback fixed.
	      - Added telnet support, although VERY simple. It refuses every
		option the server sends. I will expand this later.
	      - Added TAB completion plus 2 new commands for it:
		    #tab {tab name}
		    #deltab {tab name}
		When you add a name with #tab, you can use the TAB key to
		tab complete a word. Example:
		    #tab Xyrrioqrusterosius	(exaggarating a bit here :P)
		Then when you type:
		    kill x<TAB> it will be replaced by:
		    kill Xyrrioqrusterosius
		Most MUDs already support just typing: kill x, but...
		mostly it doesn't work on players, and this way you can
		also use it within a sentence. Note however that it won't work
		if you try to TAB complete a word to insert it in the middle of
		a sentence. It only works on the end of the line...
Version 2.6:  - Due to an improvement of process_buffer() I encountered a bug
		when parsing %0 triggers... fixed.
Version 2.7:  - Added support for larger console sizes (for X). 
	      - Added ALT-A to toggle status reports.
Version 3.0:  - Stable version release; cleaned up routines and fixed some
		minor bugs.
Version 3.1:  - Triggers can trigger multiple times in one data block now.
	      - Added a new #-command:
		    #status on/off
		So you can toggle status reports from within a macro file.
Version 3.2:  - TABs show in main window and scrollback window now.
	      - Fixed a small bug in scrollback.
Version 3.3:  - Improved IAC negotiation (telnet).
 	      - Better ANSI support (currently only colors). Soon support for
		all (or most important) escape sequences will be implemented.
 	      - Input works better in X now.
Version 3.4:  - Added ALT-M to toggle character mode. This is handy for telnet
		or muds that require it. When turned on all input will be sent
		one by one.
	      - Better ANSI support.
	      - Added '|' command separator. This is useful for stacking
		commands.  Also works for stacking #-commands. Won't work
		if you are within a { } block so that you can make triggers,
		aliases, paths etc, etc. that make use of the '|'. Example:
		     #trigger 1 {%0 has arrived.} {say hi %0!|hug %0|#distrig 1}
	      - HOME and END will now move the cursor to the beginning and the
		end of the input.
	      - Added:
		    #if {expression} {commands} 
		    #delvar {variable name} 
		    #variable {variable name} {value}
		With an #if it is possible to do conditional commands. The 
		variables are used to make the expression. The #if requires a 
		very strict format, and won't work if not used right. This is 
		how it works:
		    #if {variable==value} {commands to do}
			or
		    #if {variable!=value} {commands to do}
		So, == means variable equal to value and != means variable not
		equal to value. Variable is a variable that is previously
		defined with #variable. Example:
		    #variable {immortal} {Enigma}
		    #trigger 1 {%0 has arrived.} {#if {immortal==%0} {bow|etc.}}
			or
		    #trigger 1 {%0 has arrived.} {#if {%0==immortal} {bow|etc.}}
			or
		    #trigger 1 {%0 has arrived.} {#if {%0==Enigma} {bow|etc.}}
		An #if can also be used in macro files of course.
		Correct syntax for #if (== can also be !=):
		    #if {variable==value} 
		    #if {value==variable}
		    #if {variable1==variable2}
		These examples do NOT work correctly:
		    #if {variable ==value}  (it will compare the space also) 
		    #if {variable==value }  (same)
		{} isn't needed unless the variable name or value name has a
		space in it. Also, values don't necessarily consist of strings
		(internally they do) but can also be numeric.
	      - New alt commands for showing lists.
		    Alt+1 Show triggers
		    Alt+2 Show name aliases
		    Alt+3 Show paths
		    Alt+4 Show tab completions
		    Alt+5 Show variables                                        
Version 3.5:  - Small bug fix that creeped in: Alt-c didn't ask to create
		password anymore.
Version 3.6:  - Fixed a nasty bug regarding the panel library. On some versions
		of the panel library, panel_hidden returns another value than on
		mine. In this version the return value of panel_hidden is checked
		in the initialization phase. (Thanks to Despa for pointing this
		bug out). 
Version 4.0:  - Added a configure script and set it to version 4.0.
Version 4.1:  - Copied 2 code changes from gMUDix (MUDix for X-windows which is
 		currently being developed). These changes include:

		- Better expression processing. Now it's possible to compare values
		  and variables as: > (greater than), < (lesser than), >= (greater
		  or equal), <= (lesser or equal), == (equal), and != (inequal). 
		  Also added an else construction to #if. Example: 

    		    #if {variable>=value} {commands to do} {else this is done}

	      - Better trigger processing: now you can use variables %0 to %9 in
	        a trigger. Example:

    		    #trigger 0 {%0 tells you '%1'} {gossip %0 told me %1!}
Version 4.2:  - Added a license to the source files on request :).
              - Fixed a bug with variable comparisment (7<40 was TRUE ;).
Version 4.3:  - Fixed a bug in telnet.c: by default IACs were treated as length 3, but
		should be 2.
