Scandum 5 lat temu
rodzic
commit
711108f02b
7 zmienionych plików z 374 dodań i 219 usunięć
  1. 0 13
      NEWS
  2. 155 0
      SCRIPTS
  3. 65 19
      TODO
  4. 91 76
      docs/help.html
  5. 1 32
      docs/syntax.txt
  6. 62 1
      mods/igr.mods
  7. 0 78
      src/confdefs.h

+ 0 - 13
NEWS

@@ -1,19 +1,6 @@
 Due to continuous improvements old tintin scripts aren't always compatible
 with new versions. This document tries to list most compatibility conflicts.
 
-TinTin++ 2.02.02
-----------------
-01) Most commands in a command file are executed quietly when using #read,
-    which includes #split. Use #line verbose #split to have split lines
-    displayed when the command is executed through #read.
-
-
-TinTin++ 2.02.01
-----------------
-
-01) In order to save configs and pathdirs you must use #class CONFIG write
-    <filename> and #class PATHDIR write <filename>
-
 
 TinTin++ 2.02.00
 ----------------

+ 155 - 0
SCRIPTS

@@ -345,3 +345,158 @@
 		#1 {$paste}
 	}
 }
+
+#nop -------------------------------------------------------------------------
+#nop This macro allows pasting multi-line code fragments on pressing ctrl-v
+#nop followed by pressing ctrl-enter
+#nop -------------------------------------------------------------------------
+
+#macro {\e[13;5u}
+{
+	#cursor get tmp;
+	#cursor home;
+	#cursor set {#line sub esc };
+	#cursor enter
+}
+
+#nop -------------------------------------------------------------------------
+#nop This event will cause tintin to always report your screen width as 80
+#nop columns
+#nop -------------------------------------------------------------------------
+
+#event {CATCH IAC DO NAWS}
+{
+	#screen get rows ROWS;
+	#format ROWS %a $ROWS;
+
+	#send {\xFF\xFB\x1F\xFF\xFA\x1F\x50\x00${ROWS}\x00\xFF\xF0\}
+}
+
+#nop -------------------------------------------------------------------------
+#nop Remove duplicate lines and add a counter. Does not work in gts because
+#nop it uses named delays.
+#nop -------------------------------------------------------------------------
+
+#var repeat[str] {}
+#var repeat[cnt] 1
+
+#act {~%+}
+{
+	#if {{%0} === {$repeat[str]}}
+	{
+		#math repeat[cnt] $repeat[cnt] + 1;
+		#delay {repeat} {repeat_show} {0}
+	};
+	#else
+	{
+		repeat_show;
+		#var repeat[str] {%0}
+	};
+	#line gag
+}
+
+#alias {repeat_check}
+{
+	#if {$repeat[cnt] <= 1}
+	{
+		#line ignore #showme {$repeat[str]}
+	};
+	#else
+	{
+		#line ignore #showme {($repeat[cnt]) %0}
+	};
+	#var repeat[str] {};
+	#var repeat[cnt] 1
+}
+
+#nop -------------------------------------------------------------------------
+#nop These macros will allow you to move around with the arrow keys while
+#nop holding down the control key. You can move ne by pressing arrow up +
+#nop right simultaniously. Move up by pressing arrow up + down simultaniously.
+#nop Move down by pressing arrow left + right simultaniously.
+#nop -------------------------------------------------------------------------
+
+#macro {\e[1;5A} {#cursor preserve;#delay {move} {#cursor reset_macro;n} {0.05}}
+#macro {\e[1;5C} {#cursor preserve;#delay {move} {#cursor reset_macro;e} {0.05}}
+#macro {\e[1;5B} {#cursor preserve;#delay {move} {#cursor reset_macro;s} {0.05}}
+#macro {\e[1;5D} {#cursor preserve;#delay {move} {#cursor reset_macro;w} {0.05}}
+
+#macro {\e[1;5A\e[1;5A} {#undelay {move};#cursor reset_macro;n;n}
+#macro {\e[1;5C\e[1;5C} {#undelay {move};#cursor reset_macro;e;e}
+#macro {\e[1;5B\e[1;5B} {#undelay {move};#cursor reset_macro;s;s}
+#macro {\e[1;5D\e[1;5D} {#undelay {move};#cursor reset_macro;w;w}
+
+#macro {\e[1;5A\e[1;5B} {#undelay {move};#cursor reset_macro;u}
+#macro {\e[1;5B\e[1;5A} {#undelay {move};#cursor reset_macro;u}
+
+#macro {\e[1;5C\e[1;5D} {#undelay {move};#cursor reset_macro;d}
+#macro {\e[1;5D\e[1;5C} {#undelay {move};#cursor reset_macro;d}
+
+#macro {\e[1;5A\e[1;5C} {#undelay {move};#cursor reset_macro;ne}
+#macro {\e[1;5C\e[1;5A} {#undelay {move};#cursor reset_macro;ne}
+
+#macro {\e[1;5B\e[1;5C} {#undelay {move};#cursor reset_macro;se}
+#macro {\e[1;5C\e[1;5B} {#undelay {move};#cursor reset_macro;se}
+
+#macro {\e[1;5D\e[1;5B} {#undelay {move};#cursor reset_macro;sw}
+#macro {\e[1;5B\e[1;5D} {#undelay {move};#cursor reset_macro;sw}
+
+#macro {\e[1;5D\e[1;5A} {#undelay {move};#cursor reset_macro;nw}
+#macro {\e[1;5A\e[1;5D} {#undelay {move};#cursor reset_macro;nw}
+
+#nop -------------------------------------------------------------------------
+#nop Place tells in the top 5 lines of the screen
+#nop -------------------------------------------------------------------------
+
+#VARIABLE {COMMS} {}
+
+#ACTION {~%1 tells you %2}
+{
+	addtowin %1 tells you %2
+}
+
+#ACTION {~%1 chats %2}
+{
+	addtowin %1 chats %2
+}
+
+#ALIAS {addtowin}
+{
+	#format temp {%w} {%0};
+
+	#loop {1} {&temp[]} {cnt}
+	{
+		#list COMMS ins -1 {$temp[$cnt]}
+	};
+	#while {&COMMS[] > 100}
+	{
+		#list COMMS del 1
+	};
+	showwin
+}
+
+#ALIAS {showwin}
+{
+	#screen clear square 1 1 5 -1;
+
+	#list temp create $COMMS[-5..-1];
+
+	#loop {1} {&temp[]} {cnt}
+	{
+		#regexp {$temp[$cnt]} {^$}
+		{
+			#nop
+		};
+		#else
+		{
+			#line ignore #showme {$temp[$cnt]} {$cnt} {1}
+		}
+	}
+}
+
+#ALIAS {test}
+{
+	#split 5 1;
+	#showme <138>Bubba tells you 'hello';
+	#showme <158>Pamela chats 'bye';
+}

+ 65 - 19
TODO

@@ -1,18 +1,44 @@
 * BUGS
 
+  - Editor
+
+  - make #line quiet #line capture work.
+
+  - improve screen fill default
+
+  - Add screen and line clear VT events
+
+  - Add easy way to check if session is foreground.
+
+  - check that desktop dimensions are inherited by sessions
+
+  - example script for two sessions in one screen.
+
 * STUFF THAT IS PROBABLY GONNA GET DONE
 
-  - #message all log?
+  - if error pcre.h, need export C_INCLUDE_PATH= where it locate
+
+  - #write table variables a bit nicer.
+
+  - The #else command could follow a #foreach so as to create "for-else" loops
+    in case a loop is not broken.
+
+  - Add #line gag 2 +2 -2 support.
 
   - Work on VT2020 protocol (mouse click)
 
   - $var[%*][%*] support.
+  - make list sorting move nests as well
 
   - #line convert utf-8 support.
 
   - better #draw font support
 
   - case insensitive tabbing (partial start with rewrite)
+  - tabbing on directory structure.
+  - tabbing on dictionary
+
+  - Enhance #scan with a scan of the directory structure.
 
   - finish landmarks
   - map sandbox mode support (flags to disable saving?)
@@ -24,14 +50,28 @@
   - there might be a terrain density bug
   - provide the coordinate of the X on the vtmap.
   - add maze flag for maze handling.
-
-  - #draw table {1;2;3;4} {a;b;c;d} 
+  - Request: aura around the character position. Something similar to terrain dense narrow. Could improve visibility of the character position on big resolutions. Furthermor config to allow modification of the character terrain. 
+  - vt map doesn't utilize all available space.
+  - Request: 'stop' #map center command, so i could see how the 'user' moves, rather map moves around him? 
+  - #map uninsert <vnum>
+  - make map spacing easier
+  - add configurable default symbol
+  - exit symbol?
+  - more data to #map list saving, and maybe easier sorting of tables.
+  - event for failed #map move.
+  - look into #send triggering follow map.
+  - truncate prompt longer than split.
+
+  - Make actions with a priority of 0. trigger always
+
+  - #draw table {1;2;3;4} {a;b;c;d}
     #draw scrollbar
     #draw graph
     #draw button
     #draw titanic
 
   - proper vt100 skip detection for improper color codes.
+  - look into VT100 / #split hybrid mode.
 
   - I'll look and see if I can make { match both a { and \x7B as it's an annoying issue to debug.
 
@@ -43,17 +83,15 @@
 
   - class bla assign {stuff} feature?
   - add class specific debug
-  - allow #class save/load to memory.
   - better class event and class size handling ?
 
   - more potent long-click handling including held down ticks.
 
   - look into discord api / arachnos
-
+ 
   - better color syntax highlighting configuration.
 
-  - Add #log delete option.
-  - Fix #log helpfile and look into #log {remove} option for wintin++
+  - Add #log delete/remove option.
 
   - See about filling COMMAND_LIST table.
 
@@ -111,6 +149,16 @@
 
 --------------------------------------------------------------------------------
 
+* LOW PRIORITY
+
+  - multi-line buffer searches / captures / deletes
+
+  - add color based auto unwrap routine.
+
+  - Start of line anchors aren't working in #replace.
+
+--------------------------------------------------------------------------------
+
 * ROADMAP
 
   - dictionary +
@@ -133,6 +181,8 @@
 
   - Braille handling
 
+  - Allow converting tt++ scripts to C.
+
 --------------------------------------------------------------------------------
 
 * STUFF THAT MIGHT BE IMPLEMENTED
@@ -235,18 +285,6 @@
 
 - look into Launchpad PPA
 
-- Chat server script 'log' option to show last 15 messages.
-
-* Other stuff that's not overly interesting
-
-- look into getting rid of node->data
-
-- Look into old school automatic packet patching.
-
-- Add a ARG_LEN / ARG_MAX setting.
-
-- Add a #line skip option.
-
 --------------------------------------------------------------------------------
 
 * STUFF FOR A RAINY DAY
@@ -290,3 +328,11 @@
 - map sharing
 - cursor extension for vim
 - interactive script tutorial
+
+-------------------------------------------------------------------------------
+
+* ISSUES
+
+- TinTin++ only allows 1 action triggering per line.
+
+- TinTin++ probably should substitute escapes in if checks.

+ 91 - 76
docs/help.html

@@ -21,20 +21,20 @@ a:active {color:#b06}
  <a href='#CONFIG'>         CONFIG</a> <a href='#CONTINUE'>       CONTINUE</a> <a href='#CR'>             CR</a> <a href='#CURSOR'>         CURSOR</a> <a href='#DAEMON'>         DAEMON</a>
  <a href='#DEBUG'>          DEBUG</a> <a href='#DEFAULT'>        DEFAULT</a> <a href='#DELAY'>          DELAY</a> <a href='#DRAW'>           DRAW</a> <a href='#ECHO'>           ECHO</a>
  <a href='#ELSE'>           ELSE</a> <a href='#ELSEIF'>         ELSEIF</a> <a href='#END'>            END</a> <a href='#ESCAPE CODES'>   ESCAPE CODES</a> <a href='#EVENT'>          EVENT</a>
- <a href='#FORALL'>         FORALL</a> <a href='#FOREACH'>        FOREACH</a> <a href='#FORMAT'>         FORMAT</a> <a href='#FUNCTION'>       FUNCTION</a> <a href='#GAG'>            GAG</a>
- <a href='#GREETING'>       GREETING</a> <a href='#GREP'>           GREP</a> <a href='#HELP'>           HELP</a> <a href='#HIGHLIGHT'>      HIGHLIGHT</a> <a href='#HISTORY'>        HISTORY</a>
- <a href='#IF'>             IF</a> <a href='#IGNORE'>         IGNORE</a> <a href='#INDEX'>          INDEX</a> <a href='#INFO'>           INFO</a> <a href='#KEYPAD'>         KEYPAD</a>
- <a href='#KILL'>           KILL</a> <a href='#LINE'>           LINE</a> <a href='#LIST'>           LIST</a> <a href='#LISTS'>          LISTS</a> <a href='#LOCAL'>          LOCAL</a>
- <a href='#LOG'>            LOG</a> <a href='#LOOP'>           LOOP</a> <a href='#MACRO'>          MACRO</a> <a href='#MAP'>            MAP</a> <a href='#MAPPING'>        MAPPING</a>
- <a href='#MATH'>           MATH</a> <a href='#MATHEMATICS'>    MATHEMATICS</a> <a href='#MESSAGE'>        MESSAGE</a> <a href='#METRIC SYSTEM'>  METRIC SYSTEM</a> <a href='#MSDP'>           MSDP</a>
- <a href='#MSLP'>           MSLP</a> <a href='#NOP'>            NOP</a> <a href='#PARSE'>          PARSE</a> <a href='#PATH'>           PATH</a> <a href='#PATHDIR'>        PATHDIR</a>
- <a href='#PCRE'>           PCRE</a> <a href='#PORT'>           PORT</a> <a href='#PROMPT'>         PROMPT</a> <a href='#READ'>           READ</a> <a href='#REGEXP'>         REGEXP</a>
- <a href='#REPEAT'>         REPEAT</a> <a href='#REPLACE'>        REPLACE</a> <a href='#RETURN'>         RETURN</a> <a href='#RUN'>            RUN</a> <a href='#SCAN'>           SCAN</a>
- <a href='#SCREEN'>         SCREEN</a> <a href='#SCREEN READER'>  SCREEN READER</a> <a href='#SCRIPT'>         SCRIPT</a> <a href='#SEND'>           SEND</a> <a href='#SESSION'>        SESSION</a>
- <a href='#SESSIONNAME'>    SESSIONNAME</a> <a href='#SHOWME'>         SHOWME</a> <a href='#SNOOP'>          SNOOP</a> <a href='#SPEEDWALK'>      SPEEDWALK</a> <a href='#SPLIT'>          SPLIT</a>
- <a href='#SSL'>            SSL</a> <a href='#STATEMENTS'>     STATEMENTS</a> <a href='#SUBSTITUTE'>     SUBSTITUTE</a> <a href='#SUSPEND'>        SUSPEND</a> <a href='#SWITCH'>         SWITCH</a>
- <a href='#SYSTEM'>         SYSTEM</a> <a href='#TAB'>            TAB</a> <a href='#TEXTIN'>         TEXTIN</a> <a href='#TICKER'>         TICKER</a> <a href='#TIME'>           TIME</a>
- <a href='#VARIABLE'>       VARIABLE</a> <a href='#WHILE'>          WHILE</a> <a href='#WRITE'>          WRITE</a> <a href='#ZAP'>            ZAP</a>
+ <a href='#FOREACH'>        FOREACH</a> <a href='#FORMAT'>         FORMAT</a> <a href='#FUNCTION'>       FUNCTION</a> <a href='#GAG'>            GAG</a> <a href='#GREETING'>       GREETING</a>
+ <a href='#GREP'>           GREP</a> <a href='#HELP'>           HELP</a> <a href='#HIGHLIGHT'>      HIGHLIGHT</a> <a href='#HISTORY'>        HISTORY</a> <a href='#IF'>             IF</a>
+ <a href='#IGNORE'>         IGNORE</a> <a href='#INDEX'>          INDEX</a> <a href='#INFO'>           INFO</a> <a href='#KEYPAD'>         KEYPAD</a> <a href='#KILL'>           KILL</a>
+ <a href='#LINE'>           LINE</a> <a href='#LIST'>           LIST</a> <a href='#LISTS'>          LISTS</a> <a href='#LOCAL'>          LOCAL</a> <a href='#LOG'>            LOG</a>
+ <a href='#LOOP'>           LOOP</a> <a href='#MACRO'>          MACRO</a> <a href='#MAP'>            MAP</a> <a href='#MAPPING'>        MAPPING</a> <a href='#MATH'>           MATH</a>
+ <a href='#MATHEMATICS'>    MATHEMATICS</a> <a href='#MESSAGE'>        MESSAGE</a> <a href='#METRIC SYSTEM'>  METRIC SYSTEM</a> <a href='#MSDP'>           MSDP</a> <a href='#MSLP'>           MSLP</a>
+ <a href='#NOP'>            NOP</a> <a href='#PARSE'>          PARSE</a> <a href='#PATH'>           PATH</a> <a href='#PATHDIR'>        PATHDIR</a> <a href='#PCRE'>           PCRE</a>
+ <a href='#PORT'>           PORT</a> <a href='#PROMPT'>         PROMPT</a> <a href='#READ'>           READ</a> <a href='#REGEXP'>         REGEXP</a> <a href='#REPEAT'>         REPEAT</a>
+ <a href='#REPLACE'>        REPLACE</a> <a href='#RETURN'>         RETURN</a> <a href='#RUN'>            RUN</a> <a href='#SCAN'>           SCAN</a> <a href='#SCREEN'>         SCREEN</a>
+ <a href='#SCREEN READER'>  SCREEN READER</a> <a href='#SCRIPT'>         SCRIPT</a> <a href='#SEND'>           SEND</a> <a href='#SESSION'>        SESSION</a> <a href='#SESSIONNAME'>    SESSIONNAME</a>
+ <a href='#SHOWME'>         SHOWME</a> <a href='#SNOOP'>          SNOOP</a> <a href='#SPEEDWALK'>      SPEEDWALK</a> <a href='#SPLIT'>          SPLIT</a> <a href='#SSL'>            SSL</a>
+ <a href='#STATEMENTS'>     STATEMENTS</a> <a href='#SUBSTITUTE'>     SUBSTITUTE</a> <a href='#SUSPEND'>        SUSPEND</a> <a href='#SWITCH'>         SWITCH</a> <a href='#SYSTEM'>         SYSTEM</a>
+ <a href='#TAB'>            TAB</a> <a href='#TEXTIN'>         TEXTIN</a> <a href='#TICKER'>         TICKER</a> <a href='#TIME'>           TIME</a> <a href='#VARIABLE'>       VARIABLE</a>
+ <a href='#WHILE'>          WHILE</a> <a href='#WRITE'>          WRITE</a> <a href='#ZAP'>            ZAP</a>
 
 
 <a name='ACTION'></a>
@@ -58,11 +58,11 @@ a:active {color:#b06}
 
 </span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #action {%1 tells you '%2'} {tell %1 I'm afk.}
 
-         Actions can be triggered by the showme command and certain system
+         Actions can be triggered by the show command and certain system
          messages.
 
-         Actions can be triggered by the #showme command. If you don't want a
-         #showme to get triggered use: #line ignore #showme {text}
+         Actions can be triggered by the #show command. If you don't want a
+         #show to get triggered use: #line ignore #show {text}
 
          Actions are ordered alphabetically and only one action can trigger at
          a time. To change the order you can assign a priority, which defaults
@@ -103,7 +103,7 @@ a:active {color:#b06}
 
          To have an alias that matches all user input, use %* as the name.
 
-</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #alias {%*} {#showme You wrote: %0}
+</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #alias {%*} {#show You wrote: %0}
 
          Aliases are ordered alphabetically and only one alias can trigger at
          a time. To change the order you can assign a priority, which defaults
@@ -165,7 +165,7 @@ a:active {color:#b06}
          It's possible to adjust the alarm bell volume on some terminals.
 
 </span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #loop {1} {8} {cnt} {#line substitute variables
-           #delay {&dollar;cnt} {#showme Volume &dollar;cnt: #bell volume &dollar;cnt;#bell}
+           #delay {&dollar;cnt} {#show Volume &dollar;cnt: #bell volume &dollar;cnt;#bell}
 
 </span><span style='color:#FFF'>Related</span><span style='color:#AAA'>: <a href='#SCREEN'>screen</a>
 <a name='BREAK'></a>
@@ -269,7 +269,7 @@ a:active {color:#b06}
          This command draws no visible button, you'll have to do so separately
          if needed.
 
-</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #button {1;1;2;2} {#showme You clicked the upper left corner.}
+</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #button {1;1;2;2} {#show You clicked the upper left corner.}
 
          Buttons are ordered alphabetically and only one button can trigger at
          a time. To change the order you can assign a priority, which defaults
@@ -499,8 +499,8 @@ Related</span><span style='color:#AAA'>: <a href='#PORT'>port</a>
          &lt;caf&gt; - Violet           &lt;cfa&gt; - Lime
          &lt;fac&gt; - Pink             &lt;fca&gt; - Orange
 
-</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #showme &lt;acf&gt;Azure    &lt;afc&gt;Jade     &lt;caf&gt;Violet
-</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #showme &lt;cfa&gt;Lime     &lt;fac&gt;Pink     &lt;fca&gt;Orange
+</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #show &lt;acf&gt;Azure    &lt;afc&gt;Jade     &lt;caf&gt;Violet
+</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #show &lt;cfa&gt;Lime     &lt;fac&gt;Pink     &lt;fca&gt;Orange
 
          For 12 bit truecolor use &lt;F000&gt; to &lt;FFFF&gt; for foreground colors and
          &lt;B000&gt; to &lt;BFFF&gt; for background colors.
@@ -661,7 +661,7 @@ Related</span><span style='color:#AAA'>: <a href='#PORT'>port</a>
          the conditional argument of non of the case commands matches the switch
          command's conditional statement the default command is executed.
 
-</span><span style='color:#FFF'>Related</span><span style='color:#AAA'>: <a href='#CASE'>case</a>, <a href='#DEFAULT'>default</a>, <a href='#ELSE'>else</a>, <a href='#ELSEIF'>elseif</a>, <a href='#IF'>if</a>, <a href='#SWITCH'>switch</a> and <a href='#REGEX'>regex</a>.
+</span><span style='color:#FFF'>Related</span><span style='color:#AAA'>: <a href='#CASE'>case</a>, <a href='#DEFAULT'>default</a>, <a href='#ELSE'>else</a>, <a href='#ELSEIF'>elseif</a>, <a href='#IF'>if</a>, <a href='#SWITCH'>switch</a> and <a href='#REGEXP'>regexp</a>.
 <a name='DELAY'></a>
 
 </span><span style='color:#5F5'>         DELAY
@@ -675,7 +675,7 @@ Related</span><span style='color:#AAA'>: <a href='#PORT'>port</a>
 
          Floating point precision for milliseconds is possible.
 
-</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #showme first;#delay {1} {#showme last}
+</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #show first;#delay {1} {#show last}
          This will print 'first', and 'last' around one second later.
 
 </span><span style='color:#FFF'>Comment</span><span style='color:#AAA'>: If you want to remove a delay with the #undelay command you can add
@@ -712,6 +712,7 @@ Related</span><span style='color:#AAA'>: <a href='#PORT'>port</a>
          CONVERT    will draw text with meta conversion.
          CROSSED    will cross the corners.
          CURSIVE    will draw text with cursive letters.
+         FAT        will draw text with fat letters.
          FILLED     will fill circles and jewels.
          GRID       will draw TABLE as a grid.
          HORIZONTAL will draw horizontal if possible.
@@ -767,7 +768,7 @@ Related</span><span style='color:#AAA'>: <a href='#PORT'>port</a>
 
          The echo command does not trigger actions.
 
-         As with the #showme command you can split the {format} argument up into
+         As with the #show command you can split the {format} argument up into
          two braced arguments, in which case the 2nd argument is the row number.
 
 </span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #echo {The current date is %t.} {%Y-%m-%d %H:%M:%S}
@@ -786,7 +787,7 @@ Related</span><span style='color:#AAA'>: <a href='#PORT'>port</a>
 
 </span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #if {1d2 == 1} {smile};#else {grin}
 
-</span><span style='color:#FFF'>Related</span><span style='color:#AAA'>: <a href='#CASE'>case</a>, <a href='#DEFAULT'>default</a>, <a href='#ELSEIF'>elseif</a>, <a href='#IF'>if</a>, <a href='#SWITCH'>switch</a> and <a href='#REGEX'>regex</a>.
+</span><span style='color:#FFF'>Related</span><span style='color:#AAA'>: <a href='#CASE'>case</a>, <a href='#DEFAULT'>default</a>, <a href='#ELSEIF'>elseif</a>, <a href='#IF'>if</a>, <a href='#SWITCH'>switch</a> and <a href='#REGEXP'>regexp</a>.
 <a name='ELSEIF'></a>
 
 </span><span style='color:#5F5'>         ELSEIF
@@ -799,7 +800,7 @@ Related</span><span style='color:#AAA'>: <a href='#PORT'>port</a>
 
 </span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #if {1d3 == 1} {smirk};#elseif {1d2 == 1} {snicker}
 
-</span><span style='color:#FFF'>Related</span><span style='color:#AAA'>: <a href='#CASE'>case</a>, <a href='#DEFAULT'>default</a>, <a href='#ELSE'>else</a>, <a href='#IF'>if</a>, <a href='#SWITCH'>switch</a> and <a href='#REGEX'>regex</a>.
+</span><span style='color:#FFF'>Related</span><span style='color:#AAA'>: <a href='#CASE'>case</a>, <a href='#DEFAULT'>default</a>, <a href='#ELSE'>else</a>, <a href='#IF'>if</a>, <a href='#SWITCH'>switch</a> and <a href='#REGEXP'>regexp</a>.
 <a name='END'></a>
 
 </span><span style='color:#5F5'>         END
@@ -848,8 +849,13 @@ Related</span><span style='color:#AAA'>: <a href='#PORT'>port</a>
          a brief description. Use #event %* to see the current list of defined
          events. Use #info {events} {on} to see events get thrown.
 
+         To enable mouse events use #config mouse_tracking on, to see mouse
+         events use #config mouse_tracking info.
+
          Some events can be prefixed with CATCH to interrupt default behavior.
 
+         Some events can be prefixed with GAG to gag default messages.
+
          CATCH &lt;EVENT&gt;
          CHAT MESSAGE           %0 default %1 plain
          CLASS ACTIVATED        %0 class name
@@ -858,6 +864,7 @@ Related</span><span style='color:#AAA'>: <a href='#PORT'>port</a>
          DAY &lt;DAY&gt;              %3 day of the month
          DOUBLE-CLICKED &lt;VAR&gt;   %0 row %1 col %2 -row %3 -col %4 word %5 line
          END OF PATH
+         GAG &lt;EVENT&gt;
          HOUR                   %4 hour
          IAC &lt;VAR&gt; &lt;VAR&gt;
          IAC SB GMCP &lt;MODULE&gt;   %0 data     %1 raw data
@@ -867,7 +874,12 @@ Related</span><span style='color:#AAA'>: <a href='#PORT'>port</a>
          IAC SB NEW-ENVIRON     %0 variable %1 value
          IAC SB ZMP &lt;VAR&gt;       %0 value
          IAC SB &lt;VAR&gt;           %0 raw text %1 raw data
+         KEYPRESS               %0 character %1 unicode index
          LONG-CLICKED &lt;VAR&gt;     %0 row %1 col %2 -row %3 -col %4 word %5 line
+         MAP CREATE EXIT        %0 vnum %1 exit name %2 exit cmd %3 exit vnum
+         MAP CREATE ROOM        %0 vnum %1 name
+         MAP DELETE EXIT        %0 vnum %1 exit name %2 exit cmd %3 exit vnum
+         MAP DELETE ROOM        %0 vnum %1 name
          MAP ENTER MAP          %0 new vnum
          MAP ENTER ROOM         %0 new vnum %1 old vnum
          MAP ENTER ROOM &lt;VAR&gt;   %0 new vnum %1 old vnum
@@ -875,7 +887,9 @@ Related</span><span style='color:#AAA'>: <a href='#PORT'>port</a>
          MAP EXIT ROOM          %0 old vnum %1 new vnum
          MAP EXIT ROOM &lt;VAR&gt;    %0 old vnum %1 new vnum
          MAP FOLLOW MAP         %0 old vnum %1 new vnum %2 exit name
-         MAP MOUSE LOCATION     %0 vnum %1 location
+         MAP MOUSE LOCATION                   %2 -row %3 -col %5 vnum %6 info
+         MAP REGION             %0 row %1 col %2 -row %3 -col %5 vnum %6 info
+         MAP ROOM               %0 row %1 col %2 -row %3 -col %5 vnum %6 info
          MAP UPDATED VTMAP
          MINUTE                 %5 minute
          MONTH                  %1 month
@@ -938,13 +952,6 @@ Related</span><span style='color:#AAA'>: <a href='#PORT'>port</a>
 </span><span style='color:#FFF'>Comment</span><span style='color:#AAA'>: You can remove an event with the #unevent command.
 
 </span><span style='color:#FFF'>Related</span><span style='color:#AAA'>: <a href='#BUTTON'>button</a>, <a href='#DELAY'>delay</a> and <a href='#TICKER'>ticker</a>.
-<a name='FORALL'></a>
-
-</span><span style='color:#5F5'>         FORALL
-
-</span><span style='color:#FFF'>This command is obsolete, please use foreach instead.
-
-Related</span><span style='color:#AAA'>: <a href='#FOREACH'>foreach</a>
 <a name='FOREACH'></a>
 
 </span><span style='color:#5F5'>         FOREACH
@@ -966,8 +973,8 @@ Related</span><span style='color:#AAA'>: <a href='#FOREACH'>foreach</a>
 </span><span style='color:#FFF'>Command</span><span style='color:#AAA'>: #format </span><span style='color:#FFF'>{</span><span style='color:#AAA'>variable</span><span style='color:#FFF'>} {</span><span style='color:#AAA'>format</span><span style='color:#FFF'>} {</span><span style='color:#AAA'>argument1</span><span style='color:#FFF'>} {</span><span style='color:#AAA'>argument2</span><span style='color:#FFF'>} {</span><span style='color:#AAA'>etc</span><span style='color:#FFF'>}</span><span style='color:#AAA'>
 
          Allows you to store a string into a variable in the exact same way
-         C's sprintf works with a few enhancements and limitations such as
-         no integer operations and a maximum of 30 arguments.
+         C's sprintf works with a few enhancements and limitations like a
+         maximum of 30 arguments.
 
          If you use #format inside an alias or action you must escape %1s as
          %+1s or %%1s or %&bsol;1s so the %1 isn't substituted by the trigger.
@@ -1030,10 +1037,10 @@ Related</span><span style='color:#AAA'>: <a href='#FOREACH'>foreach</a>
          in %1 to %9, with %0 holding all arguments.
 
 </span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #function {rnd} {#math {result} {1 d (%2 - %1 + 1) + %1 - 1}}
-         #showme A random number between 100 and 200: @rnd{100;200}
+         #show A random number between 100 and 200: @rnd{100;200}
 
 </span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #function gettime {#format result %t %H:%M}
-         #showme The current time is @gettime{}
+         #show The current time is @gettime{}
 
 </span><span style='color:#FFF'>Comment</span><span style='color:#AAA'>: You can remove a function with the #unfunction command.
 
@@ -1059,7 +1066,7 @@ Related</span><span style='color:#AAA'>: <a href='#FOREACH'>foreach</a>
 
 </span><span style='color:#0AA'>      ####################################################################
       #</span><span style='color:#AAA'>                                                                  </span><span style='color:#0AA'>#
-      #</span><span style='color:#AAA'>                    T I N T I N + +   2.02.02b                    </span><span style='color:#0AA'>#
+      #</span><span style='color:#AAA'>                    T I N T I N + +   2.02.03b                    </span><span style='color:#0AA'>#
       #</span><span style='color:#AAA'>                                                                  </span><span style='color:#0AA'>#
       #</span><span style='color:#AAA'>      Code by Peter Unold, Bill Reis, and Igor van den Hoven      </span><span style='color:#0AA'>#
       #</span><span style='color:#AAA'>                                                                  </span><span style='color:#0AA'>#
@@ -1216,7 +1223,7 @@ Related</span><span style='color:#AAA'>: <a href='#FOREACH'>foreach</a>
 
 </span><span style='color:#FFF'>Comment</span><span style='color:#AAA'>: See '#help math', for more information.
 
-</span><span style='color:#FFF'>Related</span><span style='color:#AAA'>: <a href='#CASE'>case</a>, <a href='#DEFAULT'>default</a>, <a href='#ELSE'>else</a>, <a href='#ELSEIF'>elseif</a>, <a href='#SWITCH'>switch</a> and <a href='#REGEX'>regex</a>.
+</span><span style='color:#FFF'>Related</span><span style='color:#AAA'>: <a href='#CASE'>case</a>, <a href='#DEFAULT'>default</a>, <a href='#ELSE'>else</a>, <a href='#ELSEIF'>elseif</a>, <a href='#SWITCH'>switch</a> and <a href='#REGEXP'>regexp</a>.
 <a name='IGNORE'></a>
 
 </span><span style='color:#5F5'>         IGNORE
@@ -1520,7 +1527,7 @@ Command</span><span style='color:#AAA'>: #alias </span><span style='color:#FFF'>
 </span><span style='color:#5F5'>         KEYPAD
 
 </span><span style='color:#AAA'>When TinTin++ starts up it sends &bsol;e= to the terminal to enable the terminal's
-application keypad mode, which can be disabled using #showme {&bsol;e&gt;}
+application keypad mode, which can be disabled using #show {&bsol;e&gt;}
 
 </span><span style='color:#FFF'>      Configuration A           Configuration B           Configuration C</span><span style='color:#0AA'>
  ╭─────┬─────┬─────┬─────╮ ╭─────┬─────┬─────┬─────╮ ╭─────┬─────┬─────┬─────╮
@@ -1598,6 +1605,10 @@ Terminal -&gt; Window Settings -&gt; Emulation.
          </span><span style='color:#FFF'>#line ignore {argument}
          </span><span style='color:#AAA'>  Argument is executed without any triggers being checked.
 
+         </span><span style='color:#FFF'>#line local {argument}
+         </span><span style='color:#AAA'>  Argument is executed with all newly and indirectly
+           created variables being local.
+
          </span><span style='color:#FFF'>#line log &lt;filename&gt; [text]
          </span><span style='color:#AAA'>  Log the next line to file unless the [text] argument is
            provided.
@@ -1606,6 +1617,10 @@ Terminal -&gt; Window Settings -&gt; Emulation.
          </span><span style='color:#AAA'>  Argument is executed using the provided logmode, available
            modes are: html, plain, and raw.
 
+         </span><span style='color:#FFF'>#line multishot &lt;number&gt; &lt;argument&gt;
+         </span><span style='color:#AAA'>  Argument is executed in multishot mode, all triggers created
+           will only fire the given number of times.
+
          </span><span style='color:#FFF'>#line oneshot &lt;argument&gt;
          </span><span style='color:#AAA'>  Argument is executed in oneshot mode, all triggers created will
            only fire once.
@@ -1701,7 +1716,7 @@ Terminal -&gt; Window Settings -&gt; Emulation.
 </span><span style='color:#AAA'>
 </span><span style='color:#FFF'>Example:</span><span style='color:#AAA'>
          #variable {simple} {Hello World!}
-         #showme &dollar;simple
+         #show &dollar;simple
 
          To see if the 'simple' variable exists you can use &amp;simple which will
          display 0 if the variable does not exist, or the variable's index if
@@ -1716,14 +1731,14 @@ Terminal -&gt; Window Settings -&gt; Emulation.
          numbers, and underscores. If you need to use a non standard variable
          name this is possible using braces.
 
-</span><span style='color:#FFF'>Example: </span><span style='color:#AAA'>#variable {:)} {Happy Happy!};#showme &dollar;{:)}
+</span><span style='color:#FFF'>Example: </span><span style='color:#AAA'>#variable {:)} {Happy Happy!};#show &dollar;{:)}
 
          Variables can be accessed using their index. While primarily useful
          for tables it is possible to do this for simple variables. Use +1 for
          the first variable, +2 for the second variable, etc. Use -1 for the
          last variable, -2 for the second last variable, etc.
 
-</span><span style='color:#FFF'>Example:</span><span style='color:#AAA'> #showme The first variable is: &dollar;{+1}
+</span><span style='color:#FFF'>Example:</span><span style='color:#AAA'> #show The first variable is: &dollar;{+1}
 </span><span style='color:#5F5'>
          Removing Variables
 </span><span style='color:#AAA'>
@@ -1742,7 +1757,7 @@ Terminal -&gt; Window Settings -&gt; Emulation.
 </span><span style='color:#AAA'>
          A simple list is a string that contains semicolon delimited fields.
          Commands can be entered as simple lists, for example:
-         #showme {a};#showme {b} will execute a single line as two commands.
+         #show {a};#show {b} will execute a single line as two commands.
 
          Several commands take a simple list as their input, these are:
          #foreach, #line substitute, #path load, #list create, and #highlight.
@@ -1784,7 +1799,7 @@ Terminal -&gt; Window Settings -&gt; Emulation.
 
          This will create a friendlist with two entries, the key is the name of
          the friend, the value is the email address of the friend. You can see
-         the email address of bob using: #showme {&dollar;friendlist[bob]}. You can
+         the email address of bob using: #show {&dollar;friendlist[bob]}. You can
          also define this table as following:
 
 </span><span style='color:#FFF'>Example:</span><span style='color:#AAA'>
@@ -1816,7 +1831,7 @@ Terminal -&gt; Window Settings -&gt; Emulation.
 
          There is no limit to the number of nests, simply add more braces. To
          see Bob's email in this example you would use:
-         #showme {&dollar;friendlist[bob][email]}.
+         #show {&dollar;friendlist[bob][email]}.
 
          Lists
 
@@ -1858,7 +1873,7 @@ Terminal -&gt; Window Settings -&gt; Emulation.
          control flow command. It takes special care to avoid infinite loops.
 
          #&lt;number&gt; will execute the provided argument 'number' times. For
-         example: #4 {#showme beep! &bsol;a}
+         example: #4 {#show beep! &bsol;a}
 
          Here are some examples.
 
@@ -1924,7 +1939,7 @@ Terminal -&gt; Window Settings -&gt; Emulation.
          	sethash bli hey;
          	sethash bla hi;
          	sethash blo hello;
-         	#showme The value of bla is: @gethash{bla}
+         	#show The value of bla is: @gethash{bla}
          }
 
          The above script will rapidly store and retrieve over 1 million items.
@@ -1962,7 +1977,7 @@ Terminal -&gt; Window Settings -&gt; Emulation.
 
          Avoid setting the result variable as local in a function.
 
-</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #alias {swap} {#local x %0;#replace x {e} {u};#showme &dollar;x}
+</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #alias {swap} {#local x %0;#replace x {e} {u};#show &dollar;x}
 
 </span><span style='color:#FFF'>Related</span><span style='color:#AAA'>: <a href='#FORMAT'>format</a>, <a href='#FUNCTION'>function</a>, <a href='#MATH'>math</a>, <a href='#REPLACE'>replace</a>, <a href='#SCRIPT'>script</a> and <a href='#VARIABLE'>variable</a>.
 <a name='LOG'></a>
@@ -2012,7 +2027,7 @@ Terminal -&gt; Window Settings -&gt; Emulation.
          If you only want a key sequence to trigger at the start of an input
          line prefix the key sequence with ^.
 
-</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #macro {(press ctrl-v)(press F1)} {#showme &bsol;e[2J;#buffer lock}
+</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #macro {(press ctrl-v)(press F1)} {#show &bsol;e[2J;#buffer lock}
          Clear the screen and lock the window when you press F1, useful when the
          boss is near.
 
@@ -2313,8 +2328,9 @@ Terminal -&gt; Window Settings -&gt; Emulation.
          </span><span style='color:#FFF'>#map unterrain &lt;name&gt;
          </span><span style='color:#AAA'>  Removes a terrain.
 
-         </span><span style='color:#FFF'>#map update
-         </span><span style='color:#AAA'>  Sets the vtmap to update within the next 0.1 seconds.
+         </span><span style='color:#FFF'>#map update [now]
+         </span><span style='color:#AAA'>  Sets the vtmap to update within the next 0.1 seconds, or
+           instantly with the now argument.
 
          </span><span style='color:#FFF'>#map vnum &lt;low&gt; [high]
          </span><span style='color:#AAA'>  Change the room vnum to the given number, if a range is
@@ -2640,7 +2656,7 @@ Related</span><span style='color:#AAA'>: <a href='#EVENT'>event</a> and <a href=
          the given string.  The value of the current character is stored in the
          provided variable.
 
-</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #parse {hello world} {char} {#showme &dollar;char}
+</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #parse {hello world} {char} {#show &dollar;char}
 
 </span><span style='color:#FFF'>Related</span><span style='color:#AAA'>: <a href='#BREAK'>break</a>, <a href='#CONTINUE'>continue</a>, <a href='#FOREACH'>foreach</a>, <a href='#LIST'>list</a>, <a href='#LOOP'>loop</a>, <a href='#REPEAT'>repeat</a>, <a href='#RETURN'>return</a> and <a href='#WHILE'>while</a>.
 <a name='PATH'></a>
@@ -2653,6 +2669,7 @@ Related</span><span style='color:#AAA'>: <a href='#EVENT'>event</a> and <a href=
          delete   Will delete the last move of the path.
          describe Describe the path and current position.
          destroy  Will clear the path and stop path mapping.
+         get      Will get either the length or position.
          goto     Go the the start, end, or given position index.
          insert   Add the given argument to the path.
          load     Load the given variable as the new path.
@@ -2662,9 +2679,7 @@ Related</span><span style='color:#AAA'>: <a href='#EVENT'>event</a> and <a href=
          run      Execute the current path, with an optional floating point
                   delay in seconds as the second argument.
          save     Save the path to a variable. You must specify whether you
-                  want to save the path 'forward' or 'backward'. If you use
-                  the 'length' or 'position' keywords the current length or
-                  position is saved.
+                  want to save the path 'forward' or 'backward'.
          swap     Switch the forward and backward path.
          unzip    Load the given speedwalk as the new path.
          walk     Take one step forward or backward.
@@ -2841,14 +2856,14 @@ Example: #act {%* chats '{Mu(ha)+}'} {chat %2ha!}
          By default regex matches are greedy, meaning {.*} will capture as much
          text as possible.
 
-Example: #regex {bli bla blo} {^{.*} {.*}&dollar;} {#showme Arg1=(&amp;1) Arg2=(&amp;2)}
+Example: #regex {bli bla blo} {^{.*} {.*}&dollar;} {#show Arg1=(&amp;1) Arg2=(&amp;2)}
 
          This will display: Arg1=(bli bla) Arg2=(blo)
 
          By appending a ? behind a regex it becomes lazy, meaning {.*?} will
          capture as little text as possible.
 
-Example: #regex {bli bla blo} {^{.*?} {.*?}&dollar;} {#showme Arg1=(&amp;1) Arg2=(&amp;2)}
+Example: #regex {bli bla blo} {^{.*?} {.*?}&dollar;} {#show Arg1=(&amp;1) Arg2=(&amp;2)}
 
          This will display: Arg1=(bli) Arg2=(bla blo).
 
@@ -2969,8 +2984,8 @@ Example: #action {~&bsol;e[1;37m%1} {#var roomname %1}
          column argument empty tintin will clear the row before printing at
          the start of the row.
 
-         The #showme command takes a row and col argument as well so it's also
-         possible to place text on your split lines using #showme.
+         The #show command takes a row and col argument as well so it's also
+         possible to place text on your split lines using #show.
 
 </span><span style='color:#FFF'>Comment</span><span style='color:#AAA'>: See </span><span style='color:#FFF'>#help split</span><span style='color:#AAA'> for more information on split mode.
 
@@ -3049,7 +3064,7 @@ Example: #action {~&bsol;e[1;37m%1} {#var roomname %1}
          %15 as a regular expression, the next unnumbered regular expression
          would be %16. To prevent a match from being stored use %!*, %!w, etc.
 
-</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #regexp {bli bla blo} {bli {.*} blo} {#showme &amp;1}
+</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #regexp {bli bla blo} {bli {.*} blo} {#show &amp;1}
 
 </span><span style='color:#FFF'>Related</span><span style='color:#AAA'>: <a href='#CASE'>case</a>, <a href='#DEFAULT'>default</a>, <a href='#ELSE'>else</a>, <a href='#ELSEIF'>elseif</a>, <a href='#IF'>if</a> and <a href='#SWITCH'>switch</a>.
 <a name='REPEAT'></a>
@@ -3257,10 +3272,10 @@ easiest way to accomplish that.
 
          If you provide a variable the output of the script is stored as a list.
 
-</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #script {ruby -e 'print &quot;#showme hello world&quot;'}
-</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #script {python -c 'print &quot;#showme hello world&quot;'}
-</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #script {php -r 'echo &quot;#showme hello world&quot;'}
-</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #script {path} {pwd};#showme The path is &dollar;path[1].
+</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #script {ruby -e 'print &quot;#show hello world&quot;'}
+</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #script {python -c 'print &quot;#show hello world&quot;'}
+</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #script {php -r 'echo &quot;#show hello world&quot;'}
+</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #script {path} {pwd};#show The path is &dollar;path[1].
 
 </span><span style='color:#FFF'>Related</span><span style='color:#AAA'>: <a href='#FORMAT'>format</a>, <a href='#FUNCTION'>function</a>, <a href='#LOCAL'>local</a>, <a href='#MATH'>math</a>, <a href='#REPLACE'>replace</a> and <a href='#VARIABLE'>variable</a>.
 <a name='SEND'></a>
@@ -3308,8 +3323,8 @@ easiest way to accomplish that.
                              variables and functions, and print the result in
                              the current active session.
 
-         The startup session is named 'gts' and can be used for relog scripts. Do
-         keep in mind that tickers do not work in the startup session.
+         The startup session is named 'gts' and can be used for relog scripts.
+         Do keep in mind that tickers do not work in the startup session.
 
 </span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #event {SESSION DISCONNECTED} {#gts #delay 10 #ses %0 tintin.net 4321}
 
@@ -3342,16 +3357,16 @@ session one will remain the active session.
 
 </span><span style='color:#5F5'>         SHOWME
 
-</span><span style='color:#FFF'>Command</span><span style='color:#AAA'>: #showme </span><span style='color:#FFF'>{</span><span style='color:#AAA'>string</span><span style='color:#FFF'>} {</span><span style='color:#AAA'>row</span><span style='color:#FFF'>} {</span><span style='color:#AAA'>col</span><span style='color:#FFF'>}</span><span style='color:#AAA'>
+</span><span style='color:#FFF'>Command</span><span style='color:#AAA'>: #show </span><span style='color:#FFF'>{</span><span style='color:#AAA'>string</span><span style='color:#FFF'>} {</span><span style='color:#AAA'>row</span><span style='color:#FFF'>} {</span><span style='color:#AAA'>col</span><span style='color:#FFF'>}</span><span style='color:#AAA'>
 
          Display the string to the terminal, do not send to the server.  Useful
          for status, warnings, etc.  The {row} and col number are optional and
          work the same way as the row number of the #prompt trigger.
 
-         Actions can be triggered by the showme command. If you want to avoid
-         this from happening use: #line ignore #showme {&lt;string&gt;}.
+         Actions can be triggered by the show command. If you want to avoid
+         this from happening use: #line ignore #show {&lt;string&gt;}.
 
-</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #tick {TICK} {#delay 50 #showme 10 SECONDS TO TICK!!!} {60}
+</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #tick {TICK} {#delay 50 #show 10 SECONDS TO TICK!!!} {60}
 
 </span><span style='color:#FFF'>Comment</span><span style='color:#AAA'>: The #prompt helpfile contains more information on using the
          option {row} and {col} arguments.
@@ -3431,7 +3446,7 @@ Command</span><span style='color:#AAA'>: #split </span><span style='color:#FFF'>
          input line. Great for the minimalist.
 
 </span><span style='color:#FFF'>Comment</span><span style='color:#AAA'>: You can display text on the split line(s) with the #prompt and
-         #showme {line} {row} commands.
+         #show {line} {row} commands.
 
 </span><span style='color:#FFF'>Comment</span><span style='color:#AAA'>: You can remove split mode with the #unsplit command.
 
@@ -3662,13 +3677,13 @@ Related</span><span style='color:#AAA'>: <a href='#ALL'>all</a>, <a href='#PORT'
          Nested variables are also known as tables, table generally being used
          to refer to several variables nested within one specific variable.
 
-</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #showme {Targets starting with the letter A: &dollar;targets[A%*]
+</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #show {Targets starting with the letter A: &dollar;targets[A%*]
 
          To see the internal index of a variable use &amp;&lt;variable name&gt;. To see
          the size of a table you would use: &amp;targets[] or &amp;targets[%*]. A non
          existent nested variable will report itself as 0.
 
-</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #showme {Number of targets starting with A: &amp;targets[A%*]
+</span><span style='color:#FFF'>Example</span><span style='color:#AAA'>: #show {Number of targets starting with A: &amp;targets[A%*]
 
          In some scripts you need to know the name of a nested variable. This
          is also known as the key, and you can get it using *variable. For

+ 1 - 32
docs/syntax.txt

@@ -285,37 +285,6 @@ HELP
 ----
     [ ]   Argument is optional.
     < >   Argument is required.
-    { }   Argument is literally the same.
+    { }   Argument is literal.
      |    Used to separate arguments with multiple options.
 
-CONFIGURATION DEFAULTS
-----------------------
-[AUTO TAB      ] [    5000] Scroll back buffer lines used for tab completion
-[BUFFER SIZE   ] [   20000] The size of the scroll back buffer
-[CHARSET       ] [    AUTO] The character set encoding used by TinTin++
-[CHILD LOCK    ] [     OFF] TinTin++ is not child locked.
-[COLOR MODE    ] [     256] The color code encoding used by TinTin++
-[COLOR PATCH   ] [     OFF] TinTin++ will leave color handling to the server
-[COMMAND COLOR ] [   <078>] The color of echoed commands
-[COMMAND ECHO  ] [      ON] Your commands are echoed in split mode
-[CONNECT RETRY ] [       0] Seconds TinTin++ sessions try to connect on failure
-[CONVERT META  ] [     OFF] TinTin++ doesn't convert meta prefixed characters
-[HISTORY SIZE  ] [    1000] The size of the command history
-[INHERITANCE   ] [      ON] The startup session is inherited
-[LOG           ] [     RAW] The data format of the log files
-[LOG LEVEL     ] [    HIGH] TinTin++ only logs high level mud data
-[MCCP          ] [      ON] MCCP is enabled.
-[MOUSE TRACKING] [     OFF] Your terminal does not generate mouse events.
-[PACKET PATCH  ] [    0.00] Seconds TinTin++ will try to patch broken packets
-[RANDOM SEED   ] [    AUTO] Seed value used for the random number engine
-[REPEAT ENTER  ] [     OFF] You send a carriage return on an enter
-[REPEAT CHAR   ] [       !] The character used for repeating commands
-[SCREEN READER ] [     OFF] You are not using a screen reader
-[SCROLL LOCK   ] [      ON] You do not see mud output while scrolling
-[SPEEDWALK     ] [     OFF] Your input is not scanned for speedwalk directions
-[TINTIN CHAR   ] [       #] The character used for TinTin++ commands
-[VERBATIM      ] [     OFF] Your keyboard input is parsed by TinTin++
-[VERBATIM CHAR ] [       \] The character used for unparsed text
-[VERBOSE       ] [     OFF] Messages while reading in a script file are gagged
-[WORDWRAP      ] [      ON] Mud output is word wrapped
-

+ 62 - 1
mods/igr.mods

@@ -1,3 +1,64 @@
+Mar 2020        2.02.03
+------------------------------------------------------------------------------
+
+data.c          Added SESSION_ACTIVE field to #info session save
+
+mapper.c        Added MAP CREATE EXIT and MAP DELETE EXIT events.
+
+history.c       Added #history get <variable> <start> <end> option.
+
+draw.c          Added #draw map <square> option.
+
+event.c         Added MAP ROOM and MAP REGION mouse events. MAP ROOM only
+                triggers when the mouse is above a room, MAP REGION triggers
+                anywhere in the map region, as defined by default or as
+                defined with #map offset.
+
+files.c         #read will now warn if there is a possibly missing semicolon.
+
+config.c        Can add non-colors in #config command_color by escaping the
+                characters. Example: #con command <178>\>\ <128>
+
+line.c          Added #line multishot {number} {argument} which should make
+                all created triggers fire the given number of times before
+                expiring.
+
+line.c          Added #line local {argument} which should make all indirectly
+                created variables local.
+
+variable.c      Updated %h to allow #echo %+40h {some text}
+
+update.c        Added the DISPLAY UPDATE event which is triggered right
+                before the final display update when new data has become
+                available.
+
+port.c          Added PORT INITIALIZED and PORT UNINITIALIZED events, both
+                can be prefixed with GAG to suppress the default system
+                message.
+
+path.c          Updated #path unzip to take the new speedwalk format.
+
+telopt_client.c Added IAC SB NAWS event, can be caught.
+
+split.c         Added SCREEN SPLIT FILL event, which triggers on the
+                split line drawing routine, can be caught.
+
+memory.c        Added a custom memory stack, still a work in progress.
+
+utf8.c          Added #config charset CP1251TOUTF8
+
+cursor.c        Added #cursor {preserve macro} which when called from within
+                a macro will preserve the macro state. Example:
+
+                #macro {\cg} {#showme e: end\nh: home;#cursor preserve macro}
+                #macro {\cge} {#showme end}
+                #macro {\cgh} {#showme home}
+
+cursor.c        Added #cursor {reset macro} which when called from within
+                a macro will reset the macro state.
+
+path.c          Added #path get {LENGTH|POSITION} <variable>
+
 Jan 2020        2.02.02
 ------------------------------------------------------------------------------
 
@@ -52,7 +113,7 @@ list.c          #list order sorts existing lists numerically.
 
 list.c          #list sort sorts existing lists alphabetically.
 
-sort.c          Added some fast sorting routines.
+sort.c          Added sorting routines utilizing quadsort.
 
 list.c          Added #list reverse option.
 

+ 0 - 78
src/confdefs.h

@@ -1,78 +0,0 @@
-/* confdefs.h */
-#define PACKAGE_NAME ""
-#define PACKAGE_TARNAME ""
-#define PACKAGE_VERSION ""
-#define PACKAGE_STRING ""
-#define PACKAGE_BUGREPORT ""
-#define PACKAGE_URL ""
-#define STDC_HEADERS 1
-#define HAVE_SYS_TYPES_H 1
-#define HAVE_SYS_STAT_H 1
-#define HAVE_STDLIB_H 1
-#define HAVE_STRING_H 1
-#define HAVE_MEMORY_H 1
-#define HAVE_STRINGS_H 1
-#define HAVE_INTTYPES_H 1
-#define HAVE_STDINT_H 1
-#define HAVE_UNISTD_H 1
-#define HAVE_ARPA_INET_H 1
-#define HAVE_CTYPE_H 1
-#define HAVE_FCNTL_H 1
-#define HAVE_NETDB_H 1
-#define HAVE_NETINET_IN_H 1
-#define HAVE_PTHREAD_H 1
-#define HAVE_STDLIB_H 1
-#define HAVE_STRING_H 1
-#define HAVE_STRINGS_H 1
-#define HAVE_SYS_IOCTL_H 1
-#define HAVE_SYS_PARAM_H 1
-#define HAVE_SYS_SOCKET_H 1
-#define HAVE_SYS_TERMIO_H 1
-#define HAVE_SYS_TIME_H 1
-#define HAVE_TIME_H 1
-#define HAVE_UNISTD_H 1
-#define HAVE_PTY_H 1
-#define HAVE_ZLIB_H 1
-#define HAVE_PCRE_H 1
-#define HAVE_GNUTLS_GNUTLS_H 1
-#define HAVE_GNUTLS_H /**/
-#define HAVE__BOOL 1
-#define HAVE_STDBOOL_H 1
-#define TIME_WITH_SYS_TIME 1
-#define HAVE_STDLIB_H 1
-#define HAVE_REALLOC 1
-#define HAVE_SYS_SELECT_H 1
-#define HAVE_SYS_SOCKET_H 1
-#define SELECT_TYPE_ARG1 int
-#define SELECT_TYPE_ARG234 (fd_set *)
-#define SELECT_TYPE_ARG5 (struct timeval *)
-#define RETSIGTYPE void
-#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
-#define HAVE_STRFTIME 1
-#define HAVE_UTIME_H 1
-#define HAVE_UTIME_NULL 1
-#define HAVE_VPRINTF 1
-#define HAVE_GETHOSTBYNAME 1
-#define HAVE_GETHOSTNAME 1
-#define HAVE_GETTIMEOFDAY 1
-#define HAVE_INET_NTOA 1
-#define HAVE_MEMSET 1
-#define HAVE_SELECT 1
-#define HAVE_SOCKET 1
-#define HAVE_STRCASECMP 1
-#define HAVE_STRCHR 1
-#define HAVE_STRDUP 1
-#define HAVE_STRERROR 1
-#define HAVE_STRFTIME 1
-#define HAVE_STRNCASECMP 1
-#define HAVE_STRSTR 1
-#define HAVE_UTIME 1
-#define HAVE_GETADDRINFO 1
-#define HAVE_FORKPTY 1
-#define HAVE_POPEN 1
-#define HAVE_LIBZ 1
-#define HAVE_LIBPTHREAD 1
-#define HAVE_LIBUTIL 1
-#define HAVE_LIBPCRE 1
-#define HAVE_LIBGNUTLS 1
-#define HAVE_LIBM 1