TinTin++ Changes

TinTin++ Mud Client 2.02.40

  • Changed the symbol for the strict equality assignment/lookup of variables from \ to = due to compatibility issues. You'll get a warning if a variable or table key begins with a backslash.
  • Added support for multi-line substitutions.
  • Fixed an issue where the #split state wasn't properly carried across screen resizes.
  • You can paste multi-line triggers by first pressing ctrl-v, next paste the data, followed by pressing ctrl-enter.
  • Added #map flag autolink {on|off}. Default is on. Set to off to disable automatically linking overlapping rooms.

TinTin++ Mud Client 2.02.31

  • Added #config compact which is disabled by default. When enabled it can get rid of blank lines surrounding a gagged prompt line.
  • Added #help triggers which explains multi-line triggers.

TinTin++ Mud Client 2.02.30

  • #draw SCALED will not scale horizontally when combined with the VERTICAL flag.
  • #prompt with a row argument of 0 will behave like #substitute.
  • Updated #line gag to support #line gag [amount], you can use + or - to increase or decrease the current amount.
  • Added #map flag symbolgraphics support to #map flag mudfont. This allows displaying wilderness maps with 2 characters per room instead of 1.
  • Added #map flag fast which improves performance for very large maps.

TinTin++ Mud Client 2.02.20

  • Added -H startup option to run tintin in a nohup compatible mode.
  • Added #list {var} {explode} {<separator>}
  • Added #list {var} {collapse} {<separator>}
  • Added #info arguments [save] option that will display all arguments/matches of the most recently fired trigger.
  • Added #info matches save option that will display all matches of the most recently fired regex command, like #regex and #replace.
  • Added #map flag pancake which will display rooms on the map above and below when enabled. You can use #map color room <aaa><fff> to display rooms with a white to black color gradient.
  • Updated the cp949 to utf8 table with additional characters.

TinTin++ Mud Client 2.02.12

  • Added #cursor tab caseless and dictionary options to allow case insenstive tab completion and tab completion on the dictionary.
  • Added #log timestamp to set a strftime formatted string to prepend log output with.
  • Added support for roomsymbol lengths up to 5 characters in unicode, and 6 characters in ascii graphics mode.
  • Added the option to #map list/find to use * as a roomexit. This will make the search ignore non-pathdir exits without an exit direction.

TinTin++ Mud Client 2.02.11

  • Added #draw BALIGN to push text to the bottom.
  • Removed the #format %C option since chronological notation is no longer supported by #math.
  • Added the #info input and #info environ options.
  • Added SIGUSR and SIGHUB events. SIGHUB triggers on terminal close while tintin is still running inside.
  • Added #snoop {session} scroll {on|off} to snoop a session's scroll region, which will be printed on top of the active session's screen.
  • Changed %w to match any letter, number, or underscore instead of just letters, to make it match \w. Same for %W.
  • In #math and #if .1 is no longer a valid number, use 0.1 instead.

TinTin++ Mud Client 2.02.10

  • Added #config charset cp949 for Korean.
  • Added #list {var} filter {keep} {remove}. Keep and remove must be a regex pattern, the keep regex is ignored if {} is used, the remove regex is optional. #list indexate must be used to filter tables.
  • #info will save #info variables to info[VARIABLES] rather than info[VARIABLE]. Same for other lists.
  • % in #math now supports floating point modulo operations.
  • The SCREEN FOCUS event no longer requires #config mouse to be enabled.
  • Added support to call @function{} as @{function}{}.
  • Added the BAR drawing type.
  • Added support for 10 digit precision delays.
  • Added the READ FILE [NAME] event.
  • Changed #tick to lazily get the second argument.
  • Now allowing #showme {text} {-1} to place text on the input line without #split being enabled.

TinTin++ Mud Client 2.02.05

  • Added the #unlocal command.
  • Fixed some bugs introduced in the previous release.

TinTin++ Mud Client 2.02.04

  • Variables starting with a number are no longer supported, as per the C standard for naming variables. A warning is generated when trying to do so.
  • Implicit index lookups on undefined variables are no longer supported. If you do something like #if {&target} this needs to be changed to #if {&{target}}.
  • Added the <900> color tag which can be used in substitutions to restore the text color to the original text color.
  • Added the #edit command, used to enter edit mode and perform various edit buffer operations.
  • Updated #split to take a 5th argument to set the height of the input region, #split without an argument defaults to #split 0 1 0 0 1.
  • Added the tt++ -g startup option to startup tintin with a gui connection manager.
  • Added scriptable MXP support, see https://tintin.mudhalla.net/scripts/mxp.php

TinTin++ Mud Client 2.02.03

  • #read will now warn if there is a possibly missing semicolon.
  • Added #line multishot {number} {argument} which should make all created triggers fire the given number of times before expiring.

TinTin++ Mud Client 2.02.02

  • ctrl-v will now correctly capture ctrl-alt-f and similar combinations. ctrl-v will also allow pasting blocks of text.
  • Added #map roomflag fog. Works like #map roomflag hide but the flag is auto cleared on entrance.
  • Added #list order which sorts lists numerically.
  • Added link support to #help when mouse tracking is enabled. Still experimental.

TinTin++ Mud Client 2.02.01

  • Added the CWD field to #info system to get the Current Working Directory.
  • Added the option to use #var var[\+1] to set and retrieve a literal +1 instead of referencing the first index. This behaves like the verbatim mode and the backslash is only valid at the start of the key.
  • Added #info unicode {character} to display information about the provided character.

TinTin++ Mud Client 2.02.00

  • If you use #format %C this needs to be changed to #screen get cols
  • If you use #format %R this needs to be changed to #screen get rows
  • If you use #format %S this needs to be changed to #info session save
  • If you use ${variable}[1] this needs to be changed to ${variable[1]} to have the same behavior.
  • If you use %+ in a regex it can no longer be followed by a number.
  • Added #format %C option to store the given number using chronological notation.
  • Added #format %S option to do a spell check. Returns the number of errors found.
  • Added #format %M which prints numbers using metric suffixes, useful for very large or small numbers.
  • Added regexp support for using %+4s to match 4 spaces, or %+0..2d to match between 0 and 2 digits. Only works with letter arguments.
  • Added %a regex as an alternative for %* because %+4* is not valid
  • Added %p regex which will match printable characters.
  • Added %u regex which should match whole unicode characters.
  • Added #info session option, this data can be saved.
  • Added #map sync command which allows merging two map files.
  • Added support to #map exit to set an exit's color.
  • Added #map landmark command which works as a fast lookup alias for common destinations.
  • Added the block exit flag and room flag. Works like avoid, but also prevents movement into the room.
  • Added #map terrain option, as well as a #map flag terrain on/off option to enable or disable terrain displaying. Default for new maps is on.
  • Added a UNICODE GRAPHICS group to #map legend, this will allow you to customize most of the unicodegraphics symbols.
  • AsciiGraphics and UnicodeGraphics mapping modes now report the exit that was clicked on MAP MOUSE click events in the %2 argument.
  • Added the SCREEN MOUSE LOCATION and MAP MOUSE LOCATION events which can be used to report the mouse location in pixels if the terminal supports it. xterm needs to be compiled with --enable-dec-locator for it to be enabled.
  • Added the SWIPED N/NE/E/SE/S/SW/W/NW events. These do not work on Termux yet, but I've asked the Termux dev to enable advanced mouse mode by default.
  • Added #line capture which can be used to capture screen output to a variable.
  • Added #cursor tab {list;scrollback} {backward|forward} option.
  • Added the #cat command.
  • Added #list shuffle option to shuffle a list.
  • Added #draw huge option to draw the given text in huge letters.
  • Added #draw rain option, use tt++ -M for a demonstration.
  • Added the #class clear, load, and save options which allow saving and restoring classes from memory.
  • Added the GBK-1 charset config option which should be able to handle GB18030.
  • Added the GBK1TOUTF8 charset config option. When enabled 2 byte GBK codes are translated to unicode.
  • Added BIG5toUTF8, KOI8toUTF8, ISO1toUTF8, ISO2toUTF8 charset config options.

TinTin++ Mud Client 2.01.92

  • Now initializing a more advanced keyboard mode upon startup, if a macro stops working check if you have to redefine it to a new sequence.
  • The #buffer get command has been changed to use the new row notation standard.
  • The #split command has been changed to where it sets the number of top split lines if only one argument is given.
    The 2nd argument sets the number of bottom split lines which defaults to 1. The 3rd and 4th argument set the left and right split lines.
  • #killall gives a warning that it should be changed to #kill all
  • #forall has been removed.
  • %. and %+ should no longer be used in regular expressions. This will allow expansion of tintin's own regex syntax in the future.
    Use {.} and {.+} and {.?+} instead.
  • Added a notice for people still using $variable[] instead of *variable[]. I'll change $variable[] eventually to be identical to $variable[%*].
  • When using color names in highlights all lowercase color names will be dark by default, while capitalized color names will be light. So 'blue' is dark while 'Blue' is light. This allows using 'b Blue' for a light blue background.
  • Added the roomid field to map rooms. When using #map goto or #map run on a roomid regular expressions cannot be used. Roomid's are case sensitive, must be matched exactly, and are expected to be unique.
  • Added #map dig <exit> {{roomid}{<key>}} {NEW} support.
  • Added #map goto {{roomid}{<key>}} {DIG} support.
  • Can provide multiple ; separated commands to #map move at once. For example: #map move {n;e;s;w}
  • Added #daemon {attach|detach|kill|list|input}. See #help daemon.
  • Can launch tt++ with the -R argument to reattach.
  • Added #info MCCP option.
  • Added #scan FILE {commands} option. See #help scan.
  • Added support for starting tintin with telnet://host:port
  • Added #config {mouse tracking} {on|off|debug|info|debug info}
  • Added support for %+10w and %-10w to #format. Negative numbers subtract the given value from the screen width when wrapping.
  • Added TAB WIDTH config option and better displaying of tabs.
  • Added .. ellipsis support to define ranges in tables. It can also be used in #math to join two 32 bit integers into a 64 bit integer.
  • By default tintin does a string vs regex comparison when using == and !=. Added === and !== to do string vs string comparisons. No numeric support yet.
  • Added #screen {scroll} option, similar to #split but uses square notation to define the scroll region.
  • Added #screen {fill} option.
  • Added SCREEN ROTATE PORTRAIT and SCREEN ROTATE LANDSCAPE events. Triggers when screen dimensions change from one mode to another so they trigger on resize as well.
  • Added support for centisecond delays (0.01) and moved ticks to deciseconds (0.1).
  • Added some #bell options, see #help bell.
  • #format %X now will also take unicode characters as input. #echo %X ┓ displays 2513 and #showme \u2513 displays ┓
  • #path run no longer uses delays but uses its own timer system, you can use #path stop to stop running, and if you enter #path run again you'll continue where you stopped.
  • Added #line debug to execute given line in debug mode.
  • Added #line {oneshot} support to all triggers and variables.
  • Named delays are now automatically converted to one shot tickers. #undelay will use #untick if the argument begins with a letter.
  • Changed #map destroy to #map destroy {area|world} {arg}
  • Added {READ ERROR} and {WRITE ERROR} events.
  • #config color is now taken into account when displaying color codes, downgrading colors as needed.
  • Added the ability to prefix a draw option with a color name or color code to draw colored lines and boxes.

TinTin++ Mud Client 2.01.91

  • Made some changes to increase iOS compatibility so TinTin++ can be used with the iPhone and iPad using the iSH GNU shell emulator.
  • Added the #button command. See #help button for more information.
  • Added the #draw command. See #help draw for more information.
  • Added #config {telnet} {on|off|debug} which allows enabling or disabling telnet support. The debug option is the same as #config {debug telnet} on and will eventually replace it. To disable debug mode use #config telnet on.
  • Added #config {wordwrap {on|off|number} which allows setting a wrap with by providing a number. TinTin++ will also report this width over telnet.
  • Added ^ support to macros to make a macro only trigger at the start of input. If you want to macro a literal ^ use \^ at the start of the line.
  • Added #map update option to force an update of the vtmap. Keep in mind the vtmap will only update once every 0.1 seconds.
  • The mapper will now draw + and - symbols for muds that use nu dn eu ed exits.
  • Added #line logmode {html|plain|raw} {argument} Allows you to execute a command with a temporary logging mode.
  • Added #map map <rows> <cols> draw <square> to draw the map at the given location. This is no real alternative for using #map offset as #map offset allows mouse map events.
  • No longer saving or displaying the priority of triggers which are set to the default priority.
  • Changed #map at to also take an exit for the location argument.

TinTin++ Mud Client 2.01.90

  • There were two big problems that needed to be addressed to continue smooth development.
  • 1. In VT100 row 1 is the top line, while in tintin row 1 is the split line.
  • 2. In VT100 row, col (y, x) notation is used, while I've been favoring col, row (x, y) notation.
  • While this may seem like a minor issue, I'm utilizing VT100 more often using more complex operations, and TinTin++ was pretty much mirrored in the way it behaved. This resulted in relatively simple math becoming weird unintuitive math, making already complex code even more complex, resulting in bugs and unreadable code that required a lot of mental gymnastics to figure out.
  • Subsequently I decided on a major interface change that has resulted in several (relatively minor) compatibility issues.
  • #split stayed the way it was.
  • #showme {text} stayed the same
  • #showme {text} {0} has become invalid.
  • #showme {text} {1} prints on the top line.
  • #showme {text} {-1} prints on the bottom line / input line.
  • #showme {text} {-2} prints on the default split line.
  • #prompt {text} {substitution} stayed the same and prints on the default split line.
  • #prompt {text} {substitution} {0} has become invalid.
  • #prompt {test} {substitution} {1} writes to the top line.
  • #prompt {text} {substitution} {-1} writes to the bottom line / input line.
  • #prompt {text} {substitution} {-2} writes to the 2nd line from the bottom, which is the default split line.
  • #prompt and #showme also support an optional column argument, when no column argument is provided tintin will clear the line.
  • All code that takes {col} {row} as an argument has been changed to {row} {col}. The main reason for this change is consistency, and because I've repeatedly swapped row and col in VT100 which can be a tricky bug to track down.
  • Changed all MOUSE events to %0=row %1=col %2=-row %3=-row
  • Changed WINDOW RESIZE %0 to list rows, and %1 to list cols. %2 and %3 will list the height and width in pixels.
  • Fixed longstanding issue with the handling of long lines in the scrollback buffer.
  • Made all map search options require a perfect match. To look for a sub string one needs to use #map find {text%*} or #map find {%*text%*}
  • Added TELNET support for #port
  • Added {PORT RECEIVED MESSAGE} {PORT MESSAGE} and {PORT LOG MESSAGE} which all can be prefixed with CATCH.
  • Added TIME help file.
  • Added basic syntax highlight for lists, like #alias {bla}
  • Added basic syntax highlighting for variables, like #variable {bla}
  • #ats will call the active tintin session like #gts will call the global tintin session.
  • Changed the #map map command which now has the syntax: #map map {rows} {cols} {append|write|list|variable} {arg}
  • Added #map color hide, avoid, invis, symbol.
  • No longer sending proper telnet replies for echo due to infinite loop problems on a few muds that improperly handle telnet negotiations.
  • Added the screen command, see #help screen.
  • Added MCCP3 support.
  • Added #chat accept <buddy> [boost] option for faster file transfer. The boost value must be between 1 and 1000.
  • Added #buffer up 1 and #buffer down 1 to scroll the buffer up or down by one line. Values of 2 and higher are allowed as well with the maximum set at the screen size.
  • Improved the #map legend interface and made it easier to update by using the index number.
  • #map map now allows a very large range and when logging will use the configured log mode. This allows generating a large html map.
  • Added #map offset <row> <col> <row> <col> to define a square within which the vt map will be printed. This allows placing the vtmap on your bottom split line, left or right align it, etc.
  • Strings in #if and #math can now be defined using {string} instead of "string". The quote syntax will remain valid but should be avoided when processing unknown data.
  • Added MAP_ROOM_INFO msdp port event.
  • Added #config {PACKET PATCH {AUTO} option which currently only enables to 0.1 seconds when #split is enabled.
  • Added MAP FOLLOWED MAP event which triggers on map movement. %0 = new vnum %1 = old vnum %2 = exit name. Keep in mind that this event isn't triggered when using #map goto.

TinTin++ Mud Client 2.01.8

  • Updated the software license from GPL2 to GPL3.
  • Added the #path save <length|position> <variable> options to save the current length of the path or the current position on the path.
  • Added preliminary support for the CHARSET telnet option. Currently reporting UTF-8, BIG-5, and FANSI.
  • Added better handling of zombie processes after using #run.
  • Added automapper click events that trigger on clicking rooms on the VT map and report the room vnum.
  • Added new mudfont mode based on the braille unicode block.
  • Changed the RIVER map room flag to CURVED and added support for it in simple and mudfont mode.
  • Added #map legend reset option and fixed legend saving.
  • #map list will report the relative x y and z coordinates of the found rooms which can be used with #map jump. This update changes the table structure of the variable returned by #map list.
  • Added unicode character width detection.
  • Added #path describe to give a basic description of the mapped path. This is of particular interest for people who use a screen reader.
  • Added #config CHARSET BIG2UTF. When enabled text you receive will be translated from BIG-5 to UTF-8, and data you send will be translated from UTF-8 to BIG-5. This should allow someone to play a BIG-5 mud on an UTF-8 system. There appear to be some problems with the mapping table, which will require a Chinese speaker to fix.
  • Added support for fullwidth UTF-8 characters. This won't be working perfectly until unicode is properly standardized, currently I'm using the xterm mapping table in the assumption that other terminals will follow suit.
  • #prompt and #showme now take a 3rd argument that sets the column number at which the text is printed. The column number must be between 1 and the maximum width of the screen. If a negative number is provided the distance is measured from the right. The line isn't automatically cleared when using #showme with a column argument.
  • #map legend is now completely different and supports various default legends to choose from, namely:
                   [ASCII NESW          ]     [  1]  [ 32]
                   [UNICODE NESW        ]     [  1]  [ 32]
                   [UNICODE NESW LINE   ]     [  1]  [ 16]
                   [UNICODE NESW MISC   ]     [ 17]  [ 24]
                   [UNICODE NESW DIRS   ]     [ 25]  [ 32]
                   [UNICODE NESW TUBE   ]     [  1]  [ 32]
                   [MUDFONT BRAILLE TUBE]     [ 33]  [164]
                   [MUDFONT BRAILLE LINE]     [ 33]  [164]
                   [MUDFONT PRIVATE     ]     [ 33]  [164]
                   [MUDFONT CURVED      ]     [161]  [164]
                   [RESET               ]     [  1]  [164]
    The legend exists of 164 characters and when setting for example UNICODE NESW DIRS you're only redefining 8 characters from position 17 to position 24. Easiest is to use #map legend reset and save your map to use the defaults.
  • The -s startup option will start tt++ in screen reader mode.
  • Added #config charset FANSI option that maps code page 437 to UTF-8. Requires UTF-8 which most terminals support nowadays. You can try out fansi art at 8bit.fansi.org 4201.
  • Added #map flag unicodegraphics mode which is a more compact alternative to #map flag asciigraphics.
  • Updated %A to take a UTF-8 sequence and print the corresponding 21 bit decimal unicode value. This requires for #config CHARSET to be set to an UTF-8 mode to work.
  • Updated %a to take a 32 bit decimal value and print the corresponding unicode UTF-8 sequence. This requires for #config CHARSET to be set to an UTF-8 mode to work.
  • Added %x which takes a hexadecimal value and prints the corresponding unicode UTF-8 sequence.
  • Added %X which convers a 64 bit unsigned decimal value to a 64 bit hexadecimal value.
  • Added %D which converts a 64 bit hexadecimal value to a 64 bit unsigned decimal value.
  • Added #map flag blockgraphics mode.
  • Added KOI-8 to UTF-8 conversion support, which is enabled with #config charset koi2utf. This allows people on UTF-8 systems to play Russian muds that support KOI-8.
  • Added #map flag direction to enable/disable the showing of the direction arrow in the mapper.
  • Added #map global which allow setting the vnum of a room that contains exits for global transportation commands, like for example the recall location. This requires creating a special room, and the exit names should be the transportation commands.
  • Added #map roomflag noglobal to indicate rooms that block global transportation commands, like norecall rooms.
  • Added UNKNOWN COMMAND event, triggers on #jklfdjl and other non-existent commands.
  • Added better #! hashbang support, with %0 in the PROGRAM START event holding all unrecognized launch arguments. %1 holds the 1st argument (program name), %2 the 2nd argument, etc.
  • Added #INFO SYSTEM option, with #INFO SYSTEM SAVE saving the data to the info[SYSTEM] variable. Current variables supported are CLIENT_NAME and CLIENT_VERSION.
  • Enabled the #line substitute arguments option which can be used on startup to get the launch arguments.
  • Added CHILD LOCK config option to disable tintin #command input, useful for administrators who want to provide public tintin access with limited capabilities. Please let me know if you figure out a way to disable the child lock.
  • Added MAP UPDATED VTMAP event, triggers right after each vtmap redraw.

TinTin++ Mud Client 2.01.7

  • Added proper class nesting. When closing the active class, the last active class is activated. This change will cause trouble for scripts that don't properly close classes.
  • Added #class {class} SIZE {variable} option to store the size of a class in a given variable.
  • Added the SHORT-CLICKED mouse events. It triggers when the time between pressing and releasing the mouse button is less than 0.5 seconds. The event is not triggered when double or triple clicks occure, but will trigger on the first click of a double click, just like a triple click event will be preceded by a double click event.
  • All mouse events now report the inverse x and y position using the %2 and %3 arguments.
  • Added the LONG-CLICKED mouse event. It triggers when the time between pressing and releasing the mouse button is greater than 0.5 seconds.
  • Added #path create, destroy, goto, move, start, stop, swap, and undo which are somewhat document in #help path.
  • You can now have a position on a path, which is displayed with #path map. This allows using #path move backward when a #path walk forward is interrupted.

TinTin++ Mud Client 2.01.6

  • Added MOUSE TRACKING config option which enables mouse tracking events. While mouse tracking is enabled shift needs to be hold in order to select text with the mouse if you want to copy and paste text.
  • Added {MOVED }, {PRESSED }, {RELEASED } and {SCROLLED } mouse events. Use #INFO EVENT ON to see the full events. The row position is reported using the same method as with #prompt, negative numbers indicate the row position as measured from the top, while positive numbers indicate the row position as measured from the top, with 0 being used for the input row. For each click three events are generated, one generic one, one with the row position as measured from the top, and one with the row position as measured from the bottom. The MOVED event only triggers when the mouse is moved while a button is pressed. %0 contains the column and %1 the row.
  • Added {DOUBLE-CLICKED} and {TRIPLE-CLICKED} mouse events.
  • Fixed a problem with micro delays not getting properly sorted.
  • Added #info {events} {on} option to display messages when events are thrown. As this can get quite spammy these messages can be gagged as well. Added new #debug and #info messages for gags while at it.
  • Renamed all telnet events that block the execution of the default telnet handling code to CATCH IAC , adding several events that did not yet exist while at it. Telnet events without default handling code like MSDP and GMCP were not renamed.
  • Added better telnet loop protection for echo negotiations, including some error messages which are visible with #config {debug telnet} {on}.
  • Changed the #scan syntax to: #scan {ABORT|CSV|TSV|TXT} {filename}.
  • #scan CSV {filename} reads a comma separated file which triggers the SCAN CSV HEADER (first line) and SCAN CSV LINE (subsequent lines) events. Values containing spaces require quotes, and two quotes "" are required to escape a quote.
  • #scan TSV {filename} reads a tab separated file which triggers the SCAN TSV HEADER and SCAN TSV LINE events.
  • #scan TXT {filename} is an updated and faster version of the old #scan. The old #scan syntax is no longer supported.
  • The random number generator has been upgraded to 64 bit with each session having its own unique seed that can be set with #config {random seed}.

TinTin++ Mud Client 2.01.5

  • Added #line verbatim option.
  • Added the #cursor brace open, and #cursor brace close commands. This to easily insert the { and } characters from within a macro, which currently is rather complicated.
  • Added on|off option to #snoop
  • Added #info {list} {LIST|SAVE} option to list the content of a list or save it to a variable.
  • Aliases no longer substitutes variables and functions passed along as arguments. Use: #line sub {var;fun} {<argument>} to force variable and function substitutions.
  • Added exit weights, by default this is set to 1.000. Increase the weight to make the mapper more likely to find a route around the exit.
  • Added #map get all option to store all room information into a single variable.
  • Added the tt++ -a startup option, which is passed to the %2 variable of the PROGRAM start event.
  • Added #buffer lock {on|off} option.
  • Added \UXXXXXX escape code which takes a 6 digit hexedecimal unicode index.
  • Added \uXXXX escape code, XXXX must be a 4 digit hexadecimal unicode index, which is translated to a UTF-8 sequence.
  • @ $ * and & characters send from the server are only escaped if the key matches an existing variable. Keep in mind that ${ *{ and &{ are always escaped.
  • Added #format %S option to store the session name to the given variable.
  • Added support for <Fxxx> and <Bxxx> 12 bit color codes. F stands for foreground, B for background, xxx is hexadecimal RGB value. For example <F0F0> will print in bright green. Use <Fxxxxxx> and <Bxxxxxx> for 24 bit colors.The terminal must support truecolor for these to work.
  • #line log {filename} {text} was extremely slow, at least on cygwin, because it was opening and closing a file descriptor for each log call. Multiple logs to the same file are much faster now, with each session having its own dedicated file descriptor to speed up consecutive writes to the same log file.
  • Added config RANDOM SEED option to set a custom seed for the random number generator. Useful for machine learning scripts and some other obscure stuff.
  • Added #config INHERITANCE option. Default is on, set to off to prevent triggers from getting inherited. Configurations are still inherited from the startup session.
  • Added #config CHARSET AUTO option. TinTin++ will try to automatically detect UTF-8 and BIG5 encoding.
  • Removed dot notation support for variables. #var bla.bli blo is no longer valid, nor is $bla.bli. The code didn't add any functionality while it was causing all kinds of issues.
  • Added SCREEN READER config option, which doesn't do much, except being reported to MUD through MTTS.
  • Replaced 256 COLOR config with COLOR MODE config option, options are AUTO, NONE, ANSI, 256, or TRUE.
  • Added truecolor html logging.
  • No longer spawning blank lines with #config {command echo} off, if you want the old behavior you can set your command color to <008>.
  • Added %! as a regular expression option to prevent the auto capturing of a match. For example %!*, %!w, %!d etc. %!{ } can be used to the same effect to embed a regular expression without automatically adding paranthesis.
  • Added the %H #format option to generate a 32 bit hash for the given string.
  • Can use #end {\} to terminate tintin silently.
  • Added #scan abort option. Must be called by a trigger.

TinTin++ Mud Client 2.01.4

  • Added proper greeting handling for narrow terminals, mainly for people using tt++ with termux on an android phone.
  • Added proper backslash handling in string length calculations.
  • #unvariable takes additional arguments to unvar several variables at once. For example: #unvar {bli} {bla} {blo}
  • Added support for *{variable} to show variable/table keys. This is useful when low level data processing is needed. For example, *{+1} shows the key of the first variable.
  • Added #list {var} simplify {variable} option which saves a list (which internally is a table) as a semi-colon separated list to the provided destination variable. {{1}{bli}{2}{bla}{3}{blo}} becomes {bli;bla;blo}

TinTin++ Mud Client 2.01.3

  • Extended #map legend to allow setting custom MUD FONT characters. By default it'll point to the Unicode private use area. Keep in mind the legend is saved in your map file, so you'll have to erase the legend in your map file to get the updated version.
  • The mapper now uses UTF-8 drawing characters by default with ASCII GRAPHICS disabled.
  • Removed support for the special vtgraphics drawing mode which worked on very few terminals.
  • Verbosity is now automatically enabled for debug mode to avoid logging inconsistencies.
  • Added #port command which provides functionality similar to netcat.
  • #chat prefix should actually work now.
  • Better #math debug info when #debug VARIABLE is set to on.
  • Added support for #map exit <exit> dir <number>.
  • Added telnet events for IAC GA and IAC EOR.

TinTin++ Mud Client 2.01.2

  • Added map <radius> <variable name> {v} option to save the map output to a variable.
  • HTML log files now correctly set the charset to utf-8 or big5 if applicable.
  • Added support for local variables with the #LOCAL command. Most commands that manipulate variables will use a local variable if it has been declared.
  • Showing all connect retry attempts and seconds left. Any manual input while connecting will cancel connect retry.
  • Added #map color background option to set a background color for the map display.
  • Added optional width argument to #format %w. Also added UTF-8 support to %w.
  • Fixed compilation issue for OS X.

TinTin++ Mud Client 2.01.1

  • Added #chat prefix option.
  • Added #line quiet option to silently execute commands.
  • Added @<session name>{<substitution>} option to perform a function-like substitution in another session and retreive the result. Primarily useful for retreiving variables from another session.
  • Added the ** and // operator to #math to calculate the power and root.
  • The command history is automatically saved again.
  • Added SSL support based on KBTin code by Adam Borowski.
  • Added SESSION CREATED event.

TinTin++ Mud Client 2.01.0

  • Added better support for large variables and partially implemented infinite string support.
  • #session now takes a filename to be read as a 4th argument, if the session fails to connect the file isn't loaded.
  • Added #cursor get and set options to manipulate the input line.
  • Added support for nesting variables using . notation, with $var[a] being the equivalent of $var.a now.
  • Mapper searches are now compiled to further increase execution speeds.
  • Added the #list TOKENIZE option to turn a given string into an array of characters.
  • Added the VARIABLE UPDATE <VAR> event.
  • Semi colons are stripped when using auto tabs.

TinTin++ Mud Client 2.00.9

  • Added a #line strip option to strip color and escape codes.
  • Added SESSION TIMED OUT event.
  • Added #map exit <dir> save to store exit data in a variable.
  • Added the RECEIVED PROMPT event.
  • Added the #map flag symbolgraphics option to display the room symbol instead of a drawing symbol when in non asciigrahpics mode. Useful when mapping a wilderness world.

TinTin++ Mud Client 2.00.8

  • No advertisements for 2012, the world is about to end anyways.
  • Optimized the mapper's path finding algorithm, significantly increasing performance.
  • Added the #map vnum command to change the room's current vnum.
  • #map link now requires the 'both' argument for a two-way exit to be created.
  • Added support to #format for %f to print floating point numbers.
  • Added roomweight to the #map get and #map set options. By default the weight of a room is set to 1.0 and can be anywhere from 0.001 to 1000. The path finder will favor rooms with a low weight.
  • Added terrain as a searchable option to #map list, goto, find, and run.

TinTin++ Mud Client 2.00.7

  • Added basic low level VT100 stripping for answer back codes.
  • Added MSDP array support.
  • Added a set and get option to #map exit that stores and retrieves from a data field. It's suggested to use tables as no further field extensions are planned.
  • Added the terrain and data fields to #map set and #map get.
  • Added MTTS support which works in conjunction with #config CHARSET and #config 256 COLOR.
  • Changed #script to behave as a two argument command by default. Use braces if you want to call it with one argument.
  • Added a #line ignore option to execute a command without checking any triggers.
  • Added a 256 COLOR config option used negotiate 256 color usage with servers.
  • Added support for UTF-8 handling with #config CHARSET UTF-8 enabled.
  • Added a #config CHARSET option which can be either BIG5, UTF-8.
  • Fixed word boundary matching for highlights and substitutions.
  • No longer performing math on table keys to reduce false positives. Math is still performed when looking up an index.
  • Renamed #path map to #path show.
  • Added a #path unzip option that'll properly load speedwalks.
  • Added a #log off option. #log append and overwrite can now be called while already logging.

TinTin++ Mud Client 2.00.6

  • No longer distributing a statically linked Linux binary as it wasn't even running properly on the machine it was compiled on.
  • Fixed the bug causing a highlight to only trigger once per line.
  • Added a #line {verbose} {<commands> option which forces verbosity on the given commands.
  • Added the RECEIVED OUTPUT event with %0 containing the received output from the server. Can be used to create multi-line triggers, though execution will be relatively slow.
  • Changed the terminal initialization, if a macro stops working try re-creating it as it may have a different keycode.
  • Added #map resize <size> option to increase the maximum number of rooms.
  • Added several time events, YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, DATE mm-dd, DATE mm-dd hh:mm, TIME hh:mm, TIME hh:mm:ss. Events like YEAR 2012, MONTH 04, HOUR 13, are valid as well. %0 to %6 hold year, month, week, day, hour, minute, and second for each event.
  • Added support for automatic dd:hh:mm:ss time to second conversion.
  • Updated #replace to support regular expressions. Like with the #regex command the &1..&99 arguments can be used.

TinTin++ Mud Client 2.00.5

  • Fixed a bug with embedded variables not getting properly substitued when used in nested variables.
  • Fixed a bug with the verbose state being lost when starting a new session using an alias.
  • Added the option to provide a vnum for #map delete.
  • Added the option to create vnum specific MAP events, like MAP EXIT ROOM 41 or MAP ENTER ROOM 27.
  • Fixed the MAP EXIT ROOM event, it was reporting the next room rather than the current room for %0. %1 now holds the new room, and MAP ENTER ROOM will hold the old room in %1.
  • Fixed split settings not getting properly inherited from the startup session.

TinTin++ Mud Client 2.00.4

  • Added a better verbatim and verbosity handler to more generically deal with aliases and input triggered events.
  • Several mapper messages are no longer displayed when used in scripts.
  • #zap now takes an optional argument to zap a specific session.
  • When UTF8 is defined in tintin.h UTF8 characters should get wordwrapped correctly, still needs a #config option.
  • Added support for named MSDP events, for example IAC SB MSDP HEALTH would trigger on the HEALTH variable being updated, with %0 holding the value.
  • Added #map uninsert <direction> command which does the exact opposite of the #map insert command.
  • Added #map at <location> <command> command which executes the given commands at the given location.
  • Fixed the #path zip command.
  • Added better #prompt {line} {substitution} {0} support to print a mud prompt and pending input on the 0 line. Works well in combination with #split 0 0.
  • Added #map map 80x20 <filename> {a} option to log in append mode, by default an overwrite is performed.
  • Added the option to use #path load {n;e;s;w;u;d}
  • When using #path run {delay} you can remove pending run commands by using: #undelay PATH %d

TinTin++ Mud Client 2.00.3

  • Added MAP ENTER MAP and MAP EXIT MAP events.
  • #write now only saves triggers that do not belong to a class.
  • Lowered the buffer size to 20,000 because of crash reports.
  • Added MSDP_OPEN and MSDP_CLOSE support, as well as support for arrays.
  • #variable allows additional arguments which can be used to merge tables.
  • #list {var} create/add now allow semi-colon separated arguments.
  • When using the auto mapper, an exit's exit command will behave like an alias when following the map.
  • Statements like %+10s now ignore colors.
  • Added NOFOLLOW flag support to stop auto following of the mapper.
  • Added #map dig {dir} {<vnum>} option to dig an exit to the given vnum.
  • Added #map goto {<vnum>} {dig} option to have goto dig a room if it doesn't exist.
  • Merged the #map exit and #map exitdir commands into the #map exit command, adding options for COMMAND, DIRECTION, FLAG, NAME, and VNUM.
  • Added support for GMCP events and JSON to TINTIN conversion.
  • When path finding the path will be highlighted on the ASCII map.

TinTin++ Mud Client 2.00.2

  • Updated mapper messages to only show up on manual input.
  • Function arguments are no longer separated by spaces but by semicolons, strongly suggested to check your scripts for old functions, and update them.
  • Added BIG5 support to the parse command.
  • Removed the #suspend command, #cursor suspend is available instead.
  • Using $variable[%*] on a non existing nest now returns an empty string rather than 0 so they can be used in loops.
  • Added an optional vnum argument to #map get and #map set commands so #map goto isn't required to loop through all rooms.
  • Added a #config option to enable BIG5 support.
  • Added the #line substitute options which allows the substitution of variables, functions, colors, and escape codes in the provided command argument.

TinTin++ Mud Client 2.00.1

  • Added better \b handling.
  • #path load and #path save now load and save to variables, rather than aliases.
  • Added #map dig {<direction>} {new} option.
  • Added documentation for #map exitdir
  • Added support for loading map files edited in Windows.
  • Updated #buffer get to store in reverse if the lower bound is higher than the upper bound.
  • Fixed floating point handling issues.

TinTin++ Mud Client 2.00.0

  • Changed the substitution order of #list add so it'll work better with nested variables.
  • Added support for escaping functions using @@.
  • Trigger priorities can now have a floating point precision.
  • Added a #buffer get option to aid in creating multi-line triggers.

TinTin++ Mud Client 1.99.9

  • Fixed a math bug with negative numbers.
  • Added #buffer clear option.
  • Added PROGRAM START event.

TinTin++ Mud Client 1.99.8

  • Updated #forall and #foreach to support the semicolon ; as a list separator. Braces are still valid as well, but spaces are no longer a valid separator. Example: #foreach {bli;bla;blo blu} {var} {#showme $var}
  • Fixed mud client side crash when sending large amounts of data to a MUD.
  • Fixed mud client side crash when pasting large amounts of text.
  • Added support for $variable[%*] to return a list, other regular expressions are valid as well.
  • Fixed displaying bug with semi-colons in echos.

TinTin++ Mud Client 1.99.7

  • Updated #map list to use the same arguments as #map goto.
  • Added the #map color <field> <color> option to globally set the default room and exit colors.
  • $variable[] returns an empty string rather than 0 if the variable exists but has no nests.
  • #foreach will no longer execute when calling the statement with an empty list.
  • Added support for a desc, area, and note field to the #map set and #map get commands.
  • Added the option to provide additional arguments to #map goto and #map find, in order these options are exits, desc, area, and note.
  • #echo now supports the #echo {{format} {row}} syntax to print a line on the specified row.
  • Added %i and %I to toggle case insensitive matching in triggers.
  • When setting a trigger variables are substituted, if you want to use an actual variable so the trigger changes whenever you change the variable use $$variable.
  • Fixed a formatting error in #write.
  • Replaced #cursor {echo} {on|off} with #cursor {echo on} and #cursor {echo off}
  • #loop {min max} {commands} has been changed to #loop {min} {max} {variable} {commands}, the variable must be used instead of &0
  • #parse {string} {commands} has been changed to #parse {string} {variable} {commands}, the variable must be used instead of &0.
  • #forall {list} {commands} has been replaced with #foreach {list} {variable} {commands}
  • #format {variable} {syntax} {{arg1}{arg2}} has been changed to #format {variable} {syntax} {arg1} {arg2}
  • #echo {syntax} {{arg1}{arg2}} has been changed to #echo {syntax} {arg1} {arg2}
  • #replacestring has been changed to #replace
  • All commands require tintin regular expressions instead of wildcards, so instead of * use %*, other regex options are available as well.
  • The #REGEX command now uses tintin regular expressions, making the command behave similar to actions.
  • The #SWITCH, #CASE, #DEFAULT, #FOREACH, #BREAK, #CONTINUE, #ELSE, and #ELSEIF statements have been added and should work more or less as expected.
  • Variables can be nested using brackets and for all intents and purposes behave like associative arrays. Non existant nested variables report 0 if the base variable exists and always report 0 when the name is encapsulated in braces.
  • Using & instead of $ will report the index of a variable.
  • Using $variable[+1] will report the first nest, and $variable[-1] will report the last nest, $variable[-2] the second last nest, etc.
  • To display all nests of a variable use $variable[]
  • To check if a variable exists use: #if {&{variable}} which will report 0 if non existent. If existant it will report the index of the variable.
  • #LIST now works exclusively with nested variables. Also read #HELP VARIABLE.
  • #if {"$var" == "?var"} checks should be replaced with #if {&{var}} or #if {"$var" == "%.var"}
  • Old lists need to be converted as following: #var {friends} {{Alicia} {Bubba} {Cathie} {Kayla} {Zorro}} to #var {friends} {{Alicia}{1} {Bubba}{1}{Cathie}{1}{Kayla}{1}{Zorro}{1}}
  • Added MAP EXIT ROOM event.
  • #kill allows an optional second argument to kill specific triggers.
  • Spaces are no longer stripped in verbatim mode.
  • Improved just in time compilation, which combined with O(LogN) instead of O(N) lookup times for variables should make tintin noticably faster.

TinTin++ Mud Client 1.99.6

  • Added a patch that adds forkpty to systems that lack it.
  • Added a patch that significantly improves tab handling.

TinTin++ Mud Client 1.99.5

  • Made sourcecode c++ compatible.
  • Added an optional 2nd argument to textin to add a cumulative per line delay.
  • Added event handlers for MSDP (Mud Server Data Protocol), NEW-ENVIRON, and ZMP.
  • #sub {trigger} {.} no longer gags text, use #gag instead.
  • Substitutions now work like highlights, allowing multiple substitutions per line which are automatically substring substitutions. Strictly avoid using %0 in both subs and highlights.

TinTin++ Mud Client 1.99.4

  • Fixed 100 move map crash bug.
  • Now sending \r on enter when using #run instead of \r\n, which seems to give the best behavior.
  • Added xterm 256 color html logging.
  • Disabled default ctrl-s and ctrl-q behavior.

TinTin++ Mud Client 1.99.3

  • Highlights should work properly now.
  • Now possible to #ignore aliases.
  • Fixed verbatim mode, aliases can now be used in verbatim mode and are executed non verbatim.
  • %%w %%*, etc, should escape properly for nested triggers.
  • Can use #regex on an empty string now.
  • Possible to send NUL bytes using \x00 or \c@ using #send. This is as far as the support for non strings will go.
  • Added variables to events, see #help event for details.
  • Added a generic IAC event for telnet negotiations.
  • Now possible to use escape codes with #replace.
  • Triggers are once again properly inherited from the startup session.

TinTin++ Mud Client 1.99.2

  • Triggers are now pre-compiled, increasing execution speed significantly.
  • Aliases can now contain regular expressions as described in #help action.
  • Fixed several crash bugs introduced in version 1.99.1.
  • #map create now takes an argument to set the size of the map. If you want to resize an existing map, change the C value in the map file from 15000 to something else.

TinTin++ Mud Client 1.99.1

  • Added the \0xx escape code, where xx is an octal number.
  • Added the \cx escape code, where x is a control character. For example: \c[ is the same as \e.
  • Switched from POSIX regular expressions to PCRE (Perl Compatible Regular Expressions).
  • Updated actions, highlights, and substitutions to use PCRE. Their new syntax is:
    ^   force match of start of line.
    $   force match of end of line.
    %1-%99 lazy match of any text, available at %xx (%1-%99).
    %0 should be avoided in triggers, and if left alone lists all matches.
    { } embed a regular expression, available at %xx + 1.
    [ ] . + | ( ) ? * are treated as normal text unlessed used within braces. Keep in mind that { } is replaced with ( ) when using braces.
    Of the following the (lazy) match is available at %xx + 1
    %w match zero to any number of letters.
    %W match zero to any number of non letters.
    %d match zero to any number of digits.
    %D match zero to any number of non digits.
    %s match zero to any number of spaces.
    %S match zero to any number of non spaces.
    %? match zero or one character.
    %. match one character.
    %+ match one to any number of characters.
    %* match zero to any number of characters.
  • The following incompatibilities exist:
    [his|her] is no longer valid, use {his|her} 
    %{variable} is no longer valid, no alternative available. 
    ^ can no longer be used as end of line marker. 
    unnumbered arguments like %w and {his|her} have the match start at %1 instead of %0.

TinTin++ Mud Client 1.99

  • #showme and #echo now take a // as a suffix to stop a linefeed from being added.
  • Added the END OF PATH event.
  • #debug should give more detailed debugging information.
  • Added support for auto tab completion based on the scroll back buffer.
  • Added auto tab config option to set the amount of scroll back lines used for auto tab completion.
  • The 'd' format option is now used to print an integer, mainly to enable the + option for standard digit formatting.
  • Added <g00> to <g23> xterm 256 color codes to support the greyscale colors.
  • Added #while {var} {command} to run while loops.
  • The #loop command used with one argument no longer works like a while loop.
  • The $loop, $parse, and $forall variables are no longer automatically set.
  • The #write command now partly formats.
  • Changed the %t #format option to use a strftime format to create time stamps.
  • When leaving a map the last room is set, which can be returned to with #map return. The last room is stored when saving a map, and #map return will work as well after reading in a map.
  • The echo command will no longer trigger actions.
  • #map map now takes an optional (x)x(y) size argument, ie 80x25. It also takes an optinal filename argument to log the map output to file, useful for people who want to use tail -f -s 0.1 to have the map in another window.
  • Added the static roomflag which makes it easier to deal with overlapping rooms.
  • Added breadth first support for the map drawing routine, based on code by Bryan Turner.
  • Added support for 3 letter room symbols.
  • Variables passed along as an alias argument now go by value instead of by reference.
  • Added the asciivnums flag to toggle displaying room vnums in the ascii map.
  • Added #map jump {x} {y} to goto rooms using coordinates relative to the user's current room.
  • Added #script {var} {command} option, should speak for itself.
  • Can now escape variables using 2 or more dollar signs.
  • When using #map find, run, and goto and there are multiple matching rooms the nearest room will be returned.
  • Added the #map exitcmd and #map exitdir commands.
  • ctrl-c now clears the input instead of exiting the program.
  • ctrl-d will now exit tintin++ when used with no input.
  • Changed #config {echo command} to #config {command echo}
  • Added the #config {command color} {<000>} option.
  • #map insert now allows adding a roomflag as the 2nd argument.
  • It's now possible to use strings in the map legenda, mainly for terminals supporting UTF-8.
  • Void rooms now work with unusual exits as well.
  • Added some unlisted map commands to the #map and #help listing.
  • Verbatim mode now only works on manual input, actions and macros will have their commands processed normally.
  • #map map now accepts a given radius.
  • #config packet patch now takes a floating point seconds argument instead of milli seconds. The valid input range is between 0.00 and 10.00 seconds.
  • Added the {RECEIVED INPUT} event.
  • alt-d will now delete one word forwards.
  • Added #path zip, to compress a created path into a speedwalk.
  • \[ and \] no longer work, use the \x codes provided in #help escape.
  • Rewrote the tintin19.txt file, now holds a brief introduction to tintin.
  • The home and end key are now used for cursor movement instead of the scrollback buffer.
  • It's now possible to use \x codes and \b (backspace) in macros.
  • Pressing ctrl-r (history search) while searching will place the found command in the input field.
  • alt-b and alt-f should now have the proper readline behavior.
  • The command history is no longer automatically saved to file.
  • Added the #history read, and #history write options.
  • Braces in trigger arguments are now translated to \x codes.
  • Added the #line {gag|log} option to replace #gagline and #logline commands.
  • Added the 'program termination' and 'received line' events.

TinTin++ Mud Client 1.98

  • Added the #cursor enter option.
  • Fixed a bug that allowed erasing files with #chat.
  • Fixed a crash bug in the chat negotiation routine.
  • Lowered the maximum chat read size to avoid buffer overflows.
  • Fixed a bug with alias parsing and several other issues.
  • Added 'dark' as a valid color name in highlights.
  • Added the 'color patch' config option for muds with awkward color handling.
  • Added the option to use %00 to %99.
  • You must now escape using %%0 rather than %%90.
  • Added the #path run {delay} option.
  • Highlight now colors all matches on a line.
  • Functions now only use %00 to %90, &0 to &9 no longer works. Keep in mind to replace &0 with %1, &1 with %2, since %0 holds all arguments passed to a function.
  • Macros no longer trigger with config convert meta enabled.
  • Added the regexp command to use regexp string comparisons.
  • Text is no longer line wrapped when word wrap is disabled. This should make pasting easier with hopefully no downsides.
  • Added prefix history searching when using page-up/down with something typed in the command line.
  • Added the %w option for the format command to wordwrap the given line, which is stored as a list.
  • Added the #run command which allows running applications from within TinTin++ and subsequently add most mud client functionality such as triggers.
  • Added packet defragmentation at the socket level.
  • Added the #script command that works much like the #system command except that all output, generally created with an echo or print command, is parsed as TinTin++ commands. This allows enhancing TinTin++ with php, python, perl, ruby, and various other scripting languages. Some basic examples are given in #help script.
  • Added #map explore and #map travel options.
  • Added #map insert command to easily insert a (void) room.

TinTin++ Mud Client 1.97

  • Improved telnet negotiations to allow logging in on ISCA BBS and globalvillage BBS.
  • Commas are now stripped from numbers in the math commands
  • Added support for 64 bit floating point math.
  • Can now use dice rolls and other math operations in delays
  • Added -e as a startup option to launch the mud client with a command
  • Added #config {log level} {low|high} which is a hidden config option. Defaults to high, when set to low the mud client will log raw mud output.
  • Added #buffer find option, which works much like grep but instead places the scrollback buffer at the given search string.
  • Can now add lists of keywords between square brackets divided by seperators in actions, for example [his|her|its]. The actual text is stored in the next %0-9. Cannot be used for highlights.
  • Added #list fnd option to search a list, returns the index if found, otherwise zero.
  • Added automapping support which primarily uses the #map command. An introduction to using the automapper is available at the online map help file.
  • Wrote a custom input handler, it emulates readline with a couple of improvements.
  • Added the #cursor command to be used in combination with macros.
  • Added a history command and a command history.
  • ctrl-v will now meta convert the next input character. Useful for writing macros.
  • Added 256 xterm color support. Simply use <aaa> to <fff> with RGB values. Background colors are set with <AAA>> to <FFF>
  • Can no longer use commas in #loop, when using #loop with one argument it will be treated as a while loop
  • Highlight now allows <###> color codes for 256 color support.
  • Pathdirs for ne se sw and nw are now set by default. #pathdir now uses a 3rd argument for its spatial coordinates. If you have any pathdirs in you command files its best to remove them and redo them based on the new default pathdirs.
  • Added a basic event system, check #event
  • Seperated gags and subs, #sub {line} {.} will eventually no longer gag text. People using #write will have to update their scripts.
  • Merged all path commands into one generic #path command. Anyone using paths will have to update their scripts.
  • WinTin++ now uses putty instead of rxvt as its terminal emulator.
  • Added ./tt++ [-t title] option to set the title bar.
  • Added IPv6 support.
  • You can now display a list item with $variable[index].
  • You can now update a list item with #variable {variable[index]} {text}. The #math and #replace commands will work as well.
  • Added the {clr} and {srt} options to #list.
  • #session now correctly uses the : #session {name} {host} {port} syntax.
  • Can now use %0 (all args) and %1 to %9 in functions. I'll likely obsolete &0 to &9 eventually which wasn't as good an idea as it seemed at the time.
  • Increased the maximum internal buffer size from 10KB to 50KB.
  • Set the maximum recursive level from 50 to 10000 iterations.
  • Delay can now be used with 3 arguments, in which case the #tick syntax needs to be used.
  • Added the #undelay command to remove pending delays.

TinTin++ Mud Client 1.96

  • Added #session {-|+|number} option to switch between sessions.
  • Added #return which used in an #if check allows bailing out of a semicolon separated command string. If used in a #function you can also add an argument to it to set the $result variable.
  • Ending an output command with \ will escape the EOL which won't be appended. Same for #showme.
  • Added negotiating of EOR (end of record) You can use #config {debug telnet} {on} to see if your mud supports it.
  • IAC GA and EOR will now be seen as prompt markers. Most merc muds allow turning on the GO AHEAD option. This is useful with #config {packet patch} set to somewhere between 500 and 1000.
  • Added better support for chinese characters, use ./configure --enable-big5 to enable.
  • Pressing ctrl-c while connecting will abort the connection instead of the program.
  • Rewrote the original mud master aka zChat p2p support and added it back in. Use #chat init <port> to launch it, #chat help for a list of commands.
  • Added a command to manage lists, see #help list.
  • Added protection from infinite loops, won't work on all systems.
  • You can now use \x?? where ?? is a hexadecimal number. This is useful for inserting special characters.
  • #debug {list} log will write debugging information to the log file without spamming you. Useful to track down crash bugs.
  • Added %D %M %Y to #format to print the day month year.
  • Added the #parse command to parse strings.
  • The body of a by braces surrounded variable name will be parsed first, allowing variables as variable names.
  • Now matching arguments in triggers like the old TinTin++ did. %0 to %9 will capture the smallest possible amount of text instead of the biggest.
  • Can now better capture prompts on muds sending GA with #config {debug telnet} enabled.
  • Added a #buffer lock option which is bound to the scroll lock key on startup.
  • Removed old code allowing to use " " instead of braces. Might break some scripts
  • TinTin++ now enables character mode with local echo off and SGA enabled allowing it to be used on bbs systems
  • Added #send to send data directly to the mud.
  • Can now chat message people using their ip.
  • Added support for complex multi word aliasses which work the same as substitutions.
  • #kill now accepts additional arguments to kill a specific list.
    #kill actions for example.
  • Added #chat send command. Allows sending raw data for custom scripted chat functionality.

TinTin++ Mud Client 1.95

  • The last command, mostly quit or #end, is cleared when starting TinTin++
  • Replaced the #debugtelnet command with a hidden #config {DEBUG TELNET} option.
  • Added another hidden config option: CONVERT META. If you type: #config convert on, key presses will be translated into macro readable input. It's should be a piece of cake to create macros now. Don't forget to type #config convert off once done because macro's won't work with this option enabled.
  • Added the #class command, see the help file for details.
  • If a trigger starts with a tilde (better known as: ~) color codes must be matched.
  • The #writebuffer command has been removed, #buffer {write} {filename} is the new way to go about it.
  • With #config {CONVERT META} set to ON incoming text will have it's meta characters translated, this to aid in making color triggers.
  • #split 0 0 will create an input line without the split line. Useful for people who don't use #prompt.
  • #delay now works in the startup session.
  • #class <classname> read <filename>, now only reads in stuff that belongs to the given class name. This change requires you to have #class {name} {open} and #class {name} {close} in the file you want to read, but allows keeping all the class stuff in one file.
  • Removed excessive color usage when displaying triggers which was resulting in crashes.
  • Added the #scan <filename> command. Useful to read in ansi logs. #config log is now set to RAW (ansi) per default.
  • Added basic prompt handling for macro's
  • Can now use #showme {text} {row}, with a row number given. The {row} works the same as in #prompt.
  • Can use #echo {{format} {row}} {{arguments}} as well.
  • Got rid of the code seperating high and low priority actions, gagged lines have been triggering anyways for a while. All actions are executed first.
  • Removed antisubstitutions since there seems little reason to ever need them. Mainly to keep the interface as clean as possible.

TinTin++ Mud Client 1.94

  • fixed bug with #split for non xterm terminals
  • added telopts to login on *nix servers, code by J. Longtin
  • TinTin++ tries to enable keypad and ESC 0 mode on startup
  • Added the option to comment out triggers in script files using /* #command */
  • #replacestring command added, see #help replacestring
  • Made 'END OF PATH' message triggerable.
  • Can now set empty variables with #format and #replacestring
  • Variables set by triggers no longer give messages
  • Can now use variables in highlights
  • TinTin++ now tries to reset the terminal when exiting
  • Now possible to make triggers on SESSION 'name' DIED message
  • No longer possible to #read directories
  • Fixed the key binding of the home/end key for scrolling
  • Upped the buffer sizes
  • Added scroll lock to the config menu, on by default
  • Removed connect delay from #config. Connect retry holds the seconds the mud client tries to reconnect
  • Added #delay command, syntax: #delay {seconds} {command}
  • #ticker and #delay accept floating point precision for the seconds field
  • #sleep command removed, obsolete with the #delay command. Can still use #system sleep.
  • #gagline command added, when called within an action it will gag the current line, otherwise the next one.
  • Improved how macro's work quite a bit. You must remove the \n at the end or a macro won't work. You can also use macro's while typing something else now.
  • Added packet patch config option, it waits the given amount of milli seconds before displaying possibly broken lines
  • Added %n (name) to #format, it capitalizes the first letter of the given string
  • Added the $loop and $forall variables which can be used in the #loop and #forall commands.
  • If a bracket is missing #read will give a hint where the error might be
  • Added the option to surround a variable with brackets: ${some variable}
  • Added a check to ignore a trailing ';'.
  • #logline command added to log single lines.
  • Added %G to #format. Adds thousands grouping to a given number
  • Internal messages are now printed to the logfile and scrollback buffer

TinTin++ Mud Client 1.93

  • Escape behavior altered slightly
    • \n sends a new line (smile\ngrin equals: smile;grin)
    • \e sends an ESC code (#showme \e[2J to clear screen)
    • \a sends a beep (same as #bell)
    • \t sends a tap, might make some formatting stuff easier.
    • \r sends a carriage return, not that useful, but who knows
  • #format will need %+4s instead of %4s in the format part if used in an alias or action.

TinTin++ Mud Client 1.92

  • removed the #speedwalk command, it's in the #config menu
  • unknown telnet codes no longer print a #IAC message

TinTin++ Mud Client 1.91

  • repeat on enter #config option added
  • fixed bug with variables used as TinTin++ commands not working

TinTin++ Mud Client 1.90

  • Changed TinTin++'s script parser to work like normal script engines. This takes care of old script bugs, but results in odd constructions and work arounds to no longer work. %% and $$ are no longer valid.
  • #read now allows multi line commands.
  • improved speed, v1.9 is 2 times faster than v1.5, making TinTin++ the fastest mud client in existence. I know other mud client developers make this claim as well, I simply didn't want to stay behind =]

TinTin++ Mud Client 1.89

  • Rewrote the mud client's regex handler, ? added as a regexp wildcard
  • complete C style mathematical expression parsing for the #math and #if commands
  • can use #if {"%0" == "bla*"} to compare strings. Only the second argument can use regexp.
  • alphabetic priority string comparison added for < and >
  • internal color code support added, see #help color
  • a ^ can be used at the end of a trigger, if you want the end of the string to match exactly
  • #ignore, #debug, #message commands added for changing list behavior
  • the ! command no longer works with history numbers, but instead allows adding an abbreviation match. !w would execute the last command starting with a 'w'
  • highlight command rewritten, color code is in the second argument now, color names code rewritten as well
  • rewrote #function code, the result must be stored in the special 'result' variable.
  • #forall command now uses space instead of comma seperation
  • defaults are now set within the mud client upon startup
  • help files are now internal instead of using an external file
  • prompt code rewritten, multiple prompt triggers are possible
  • wordwrap added, linewrap rewritten and fixed to wrap correctly
  • session configurations are now inherited from the startup session

TinTin++ Mud Client 1.88

  • NAWS (negotiate about windows size) telnet negotiation
  • MCCP (mud client compression protocol)
  • TTYPE (terminal type) telnet negotiation
  • VT102 scroll back buffer and grep command
  • plain data logging
  • tick code rewritten, works different as well
  • macro code added, allows walking with the keypad, etc
  • zombi code removed, blocking connection retry added
  • config command added for session configuration
  • walk code almost completely rewritten
  • ';' character found in a trigger is replaced with '\;' making $0 obsolete
  • #format command added which allows complex text formatting
  • #prepad, #postpad, #tolower, #toupper removed, #format support added for those and other commands
  • split code cleaned up to fix the room description color bug
  • Enjoy