All pastes #919846 Raw Edit

script

public text v1 · immutable
#919846 ·published 2008-02-27 00:54 UTC
rendered paste body
; Colors, Reverse, Rainbow, and Massive Text. 
; For colors --- /colors <text here> 
; For reversed text --- /reverse <text here> 
; For reversed text as a /me --- /mereverse <text here> 
; For a rainbow of colors --- /rainbow <text here> 
; For massively huge text --- /mt <text here> 
; For a rainbow of massively huge text --- /mtrainbow <text here> 

alias colors { 
  var %length = $len($1-) 
  var %letter = 1 
  while (%letter <= %length) { 
    if ($mid($1-,%letter,1) == $chr(32)) { 
      var %output = %output $+ & 
      goto xxx 
    } 
    var %output = %output $+  $+ $rand(03,013) $+ $mid($1-,%letter,1) 
    :xxx 
    inc %letter 
  } 
  var %output = $replace(%output,$chr(38),$chr(32)) 
  msg $active %output 
} 



alias rev { 
  var %len = $len($1-) 
  var %return = $null 
  while (%len > 0) { 
    var %return = %return $+ $mid($1-,%len,1) $+ $chr(32) 
    dec %len 
  } 
  return %return 
} 
alias reverse //say $rev( $1- ) 
alias mereverse //me $rev( $1- ) 




alias rainbow { 
  var %pos = 1, %color = 04, %result = $chr(3) 
  while (%pos <= $len($1-)) { 
    %result = %result $+ %color $+ $mid($1-,%pos,1) $+ $chr(3) 
    inc %pos 
    %color = $nextcolor(%color) 
  } 
  if ($isid) return %result 
  else say %result 
} 

alias -l nextcolor { 
  if ($$1 == 04) return 07 
  elseif ($$1 == 07) return 08 
  elseif ($$1 == 08) return 09 
  elseif ($$1 == 09) return 11 
  elseif ($$1 == 11) return 12 
  elseif ($$1 == 12) return 02 
  elseif ($$1 == 02) return 06 
  elseif ($$1 == 06) return 13 
  elseif ($$1 == 13) return 04 
} 






alias mt { 
  if ($bigtext.unsupp($1-)) { 
    echo -ac info * Characters not supported by Big Text present in your message: $bigtext.unsupp($1-) 
    return 
  } 
  var %lia, %lib, %lic, %lid, %lie, %i 1, %text $strip($1-, bur), %colregex /^(\d\d?(?:,\d\d?)?)/ 

  var %regex = /(?<= $+ $chr(3) $+ [0-9]| $+ $chr(3) $+ [0-9][0-9]) $+ $chr(44) $+ \d\d?/g, %res, %dummy = $regsub(%text, %regex, $null, %text) 

  while (%i <= $len(%text)) { 
    if ($mid(%text, %i, 1) == $chr(3)) { 
      var %lia $+(%lia, $chr(3)), %lib $+(%lib, $chr(3)), %lic $+(%lic, $chr(3)), %lid $+(%lid, $chr(3)), %lie $+(%lie, $chr(3)) 
      if ($mid(%text, $calc(%i + 1), 1) != $chr(32)) && ($regex(mtcol, $mid(%text, $calc(%i + 1), $mid(%text, $calc(%i + 1), 0)), %colregex)) { 
        var %m $regml(mtcol, 1) 
        var %lia %lia $+ %m, %lib %lib $+ %m, %lic %lic $+ %m, %lid %lid $+ %m, %lie %lie $+ %m 
        inc %i $len(%m) 
      } 
    } 
    else { 
      tokenize 32 $bigtext.char($mid(%text, %i, 1)) 
      var %lia $+(%lia, $1), %lib $+(%lib, $2), %lic $+(%lic, $3), %lid $+(%lid, $4), %lie $+(%lie, $5) 
      ; if ($bigtext.kern($mid(%text, %i, 2))) { 
      var %lia $+(%lia, .), %lib $+(%lib, .), %lic $+(%lic, .), %lid $+(%lid, .), %lie $+(%lie, .) 
      ; } 
    } 
    inc %i 
  } 
  say $bigtext.format(%lia) 
  say $bigtext.format(%lib) 
  say $bigtext.format(%lic) 
  say $bigtext.format(%lid) 
  say $bigtext.format(%lie) 
} 

; You may customize this alias however you want to. 
; It is Big Text's font, used above. 
; The return value consists of dots and X's, to denote 
;   unlit and lit points in the font, respectively; 
;   there are 5 tokens of the same length, each 
;   corresponding to a line in the 5-line output. 
; Note how the . and X's look like the characters; 
;   you can use this to your advantage! 
alias -l bigtext.char { 
  if ($1 === $chr(32)) || ($1 === $null) return $& 
    ... $& 
    ... $& 
    ... $& 
    ... $& 
    ... 
  if ($1 === $chr(160)) return $& 
    ..... $& 
    ..... $& 
    ..... $& 
    ..... $& 
    ..... 
  elseif ($1 == 0) return $& 
    .XXXX. $& 
    XX..XX $& 
    XX.XXX $& 
    XXX.XX $& 
    .XXXX. 
  elseif ($1 == 1) return $& 
    .XXXX $& 
    XX.XX $& 
    ...XX $& 
    ...XX $& 
    ...XX 
  elseif ($1 == 2) return $& 
    XXXXX. $& 
    ....XX $& 
    ..XX.. $& 
    XX.... $& 
    XXXXXX 
  elseif ($1 == 3) return $& 
    XXXXX. $& 
    ....XX $& 
    .XXXX. $& 
    ....XX $& 
    XXXXX. 
  elseif ($1 == 4) return $& 
    .....XXX. $& 
    ...XX.XX. $& 
    .XX...XX. $& 
    XXXXXXXXX $& 
    ......XX. 
  elseif ($1 == 5) return $& 
    XXXXX $& 
    XX... $& 
    XXXX. $& 
    ...XX $& 
    XXXX. 
  elseif ($1 == 6) return $& 
    .XXXX. $& 
    XX.... $& 
    XXXXX. $& 
    XX..XX $& 
    .XXXX. 
  elseif ($1 == 7) return $& 
    XXXXXX $& 
    ...XX. $& 
    ..XX.. $& 
    .XX... $& 
    XX.... 
  elseif ($1 == 8) return $& 
    .XXXX. $& 
    XX..XX $& 
    .XXXX. $& 
    XX..XX $& 
    .XXXX. 
  elseif ($1 == 9) return $& 
    .XXXX. $& 
    XX..XX $& 
    .XXXXX $& 
    ....XX $& 
    .XXXX. 
  elseif ($1 == A) return $& 
    .XXXX. $& 
    XX..XX $& 
    XXXXXX $& 
    XX..XX $& 
    XX..XX 
  elseif ($1 == B) return $& 
    XXXXX. $& 
    XX..XX $& 
    XXXXX. $& 
    XX..XX $& 
    XXXXX. 
  elseif ($1 == C) return $& 
    .XXXX. $& 
    XX..XX $& 
    XX.... $& 
    XX..XX $& 
    .XXXX. 
  elseif ($1 == D) return $& 
    XXXX.. $& 
    XX.XX. $& 
    XX..XX $& 
    XX..XX $& 
    XXXXX. 
  elseif ($1 == E) return $& 
    XXXXX $& 
    XX... $& 
    XXXX. $& 
    XX... $& 
    XXXXX 
  elseif ($1 == F) return $& 
    XXXXX $& 
    XX... $& 
    XXXX. $& 
    XX... $& 
    XX... 
  elseif ($1 == G) return $& 
    .XXXX. $& 
    XX.... $& 
    XX.XXX $& 
    XX..XX $& 
    .XXXXX 
  elseif ($1 == H) return $& 
    XX...XX $& 
    XX...XX $& 
    XXXXXXX $& 
    XX...XX $& 
    XX...XX 
  elseif ($1 == I) return $& 
    XXXX $& 
    .XX. $& 
    .XX. $& 
    .XX. $& 
    XXXX 
  elseif ($1 == J) return $& 
    ....XX $& 
    ....XX $& 
    ....XX $& 
    XX..XX $& 
    .XXXX. 
  elseif ($1 == K) return $& 
    XX..XX $& 
    XX.XX. $& 
    XXXX.. $& 
    XX.XX. $& 
    XX..XX 
  elseif ($1 == L) return $& 
    XX... $& 
    XX... $& 
    XX... $& 
    XX... $& 
    XXXXX 
  elseif ($1 == M) return $& 
    XX....XX $& 
    XXX..XXX $& 
    XXXXXXXX $& 
    XX.XX.XX $& 
    XX....XX 
  elseif ($1 == N) return $& 
    XX..XX $& 
    XXX.XX $& 
    XXXXXX $& 
    XX.XXX $& 
    XX..XX 
  elseif ($1 == O) return $& 
    .XXXX. $& 
    XX..XX $& 
    XX..XX $& 
    XX..XX $& 
    .XXXX. 
  elseif ($1 == P) return $& 
    XXXXX. $& 
    XX..XX $& 
    XXXXX. $& 
    XX.... $& 
    XX.... 
  elseif ($1 == Q) return $& 
    .XXXX.. $& 
    XX..XX. $& 
    XX..XX. $& 
    XX..XX. $& 
    .XXXXXX 
  elseif ($1 == R) return $& 
    XXXXX. $& 
    XX..XX $& 
    XXXXX. $& 
    XX..XX $& 
    XX..XX 
  elseif ($1 == S) return $& 
    .XXXX. $& 
    XX.... $& 
    .XXXX. $& 
    ....XX $& 
    XXXXX. 
  elseif ($1 == T) return $& 
    XXXXXX $& 
    ..XX.. $& 
    ..XX.. $& 
    ..XX.. $& 
    ..XX.. 
  elseif ($1 == U) return $& 
    XX..XX $& 
    XX..XX $& 
    XX..XX $& 
    XX..XX $& 
    .XXXX. 
  elseif ($1 == V) return $& 
    XX....XX $& 
    XX....XX $& 
    .XX..XX. $& 
    ..XXXX.. $& 
    ...XX... 
  elseif ($1 == W) return $& 
    XX...XX $& 
    XX...XX $& 
    XX.X.XX $& 
    XXXXXXX $& 
    .XX.XX. 
  elseif ($1 == X) return $& 
    XX...XX $& 
    .XX.XX. $& 
    ..XXX.. $& 
    .XX.XX. $& 
    XX...XX 
  elseif ($1 == Y) return $& 
    XX..XX $& 
    XX..XX $& 
    .XXXX. $& 
    ..XX.. $& 
    ..XX.. 
  elseif ($1 == Z) return $& 
    XXXXXX $& 
    ...XX. $& 
    ..XX.. $& 
    .XX... $& 
    XXXXXX 
  elseif ($1 == $chr(35)) return $& 
    .XX..XX. $& 
    XXXXXXXX $& 
    .XX..XX. $& 
    XXXXXXXX $& 
    .XX..XX. 
  elseif ($1 == ') return $& 
    .XX $& 
    XX. $& 
    ... $& 
    ... $& 
    ... 
  elseif ($1 == ") return $& 
    XX..XX $& 
    XX..XX $& 
    ...... $& 
    ...... $& 
    ...... 
  elseif ($1 == +) return $& 
    ...... $& 
    ..XX.. $& 
    XXXXXX $& 
    ..XX.. $& 
    ...... 
  elseif ($1 == =) return $& 
    ...... $& 
    XXXXXX $& 
    ...... $& 
    XXXXXX $& 
    ...... 
  elseif ($1 == -) return $& 
    ...... $& 
    ...... $& 
    XXXXXX $& 
    ...... $& 
    ...... 
  elseif ($1 == _) return $& 
    ...... $& 
    ...... $& 
    ...... $& 
    ...... $& 
    XXXXXX 
  elseif ($1 == ?) return $& 
    XXXXXX $& 
    ...... $& 
    ...... $& 
    ...... $& 
    ...... 
  elseif ($1 == ?) return $& 
    .XXX. $& 
    XX.XX $& 
    .XXX. $& 
    ..... $& 
    ..... 
  elseif ($1 == :) return $& 
    .. $& 
    XX $& 
    .. $& 
    XX $& 
    .. 
  elseif ($1 == !) return $& 
    XX $& 
    XX $& 
    XX $& 
    .. $& 
    XX 
  elseif ($1 == ?) return $& 
    XXX. $& 
    ..XX $& 
    .XX. $& 
    .... $& 
    .XX. 
  elseif ($1 == .) return $& 
    .. $& 
    .. $& 
    .. $& 
    .. $& 
    XX 
  elseif ($1 == /) return $& 
    ....XX $& 
    ...XX. $& 
    ..XX.. $& 
    .XX... $& 
    XX.... 
  elseif ($1 == \) return $& 
    XX.... $& 
    .XX... $& 
    ..XX.. $& 
    ...XX. $& 
    ....XX 
  elseif ($1 == $chr(40)) return $& 
    ...XX $& 
    .XX.. $& 
    XX... $& 
    .XX.. $& 
    ...XX 
  elseif ($1 == $chr(41)) return $& 
    XX... $& 
    ..XX. $& 
    ...XX $& 
    ..XX. $& 
    XX... 
  elseif ($1 == $chr(37)) return $& 
    XX..XX $& 
    ...XX. $& 
    ..XX.. $& 
    .XX... $& 
    XX..XX 
  elseif ($1 == [) return $& 
    XXXXX $& 
    XX... $& 
    XX... $& 
    XX... $& 
    XXXXX 
  elseif ($1 == ]) return $& 
    XXXXX $& 
    ...XX $& 
    ...XX $& 
    ...XX $& 
    XXXXX 
  elseif ($1 == |) return $& 
    .XX. $& 
    .XX. $& 
    .XX. $& 
    .XX. $& 
    .XX. 
  elseif ($1 == <) return $& 
    ....XX $& 
    ..XX.. $& 
    XX.... $& 
    ..XX.. $& 
    ....XX 
  elseif ($1 == >) return $& 
    XX.... $& 
    ..XX.. $& 
    ....XX $& 
    ..XX.. $& 
    XX.... 
  elseif ($1 == ?) return $& 
    .... $& 
    .... $& 
    .XX. $& 
    ..XX $& 
    XXX. 
  elseif ($1 == ,) return $& 
    ... $& 
    ... $& 
    XXX $& 
    .XX $& 
    XX. 
} 


; Returns all unsupported characters within a Big Text message 
; Supported characters are a-z, space, digits, #'"+=?:!?./\()%-[]<>|?, 
alias bigtext.unsupp { 
  var %res, %dummy = $regsub($1-, /[]a-z  0-9# $+ $chr(44) $+ '+=?:!?./\\()%[|<>_?"?-]/igS, $null, %res) 
  return %res 
} 

; Returns $true if a space should be added between two characters, 
;   or $false if not. 
; Note: This is here only for aesthetic purposes. :) 
alias bigtext.kern { 
  var %res $true 
  if ($regex($1-, /^(.|[_GDSQL-]T|[TPFVY7/"]J|T\.|L[1Y\\"]|[LTK<[]-|-[]>%\\]|S1|T4|\?\.|\.\?|[467L\\]?|?[J/]|L'|\/\/|\\\\|?J|[_?]?|[?T_]_|>\.|\.<)$/i)) %res = $false 
  return %res 
} 

; Takes an input string of the form: 
; .XX..XX....XX.XX.XXXXX 
; And formats it for display. 
alias bigtext.format { 
  var %res, %i 1, %previous 0, %current, %curcolor, %colregex /^(\d\d?(?:,\d\d?)?)/ 
  while (%i <= $len($1-)) { 
    if ($mid($1-, %i, 1) == $chr(3)) { 
      if ($regex(mtcol, $mid($1-, $calc(%i + 1), $mid($1-, $calc(%i + 1), 0)), %colregex)) { 
        if ($gettok($regml(mtcol, 1), 1, 44) != %curcolor) { 
          %curcolor = $gettok($regml(mtcol, 1), 1, 44) 
          if (%i != 1) && ($mid($1-, $calc(%i - 1), 1) == X) %res = %res $+ $chr(15) 
        } 
        inc %i $len($regml(mtcol, 1)) 
      } 
      elseif (%curcolor) { 
        %curcolor = 
        if (%i != 1) && ($mid($1-, $calc(%i - 1), 1) == X) %res = %res $+ $chr(15) 
      } 
    } 
    else { 
      %current = $iif($mid($1-, %i, 1) == ., 0, 1) 
      if (%previous != %current) { 
        %previous = %current 
        if (%curcolor) { 
          if (%current) %res = %res $+ $chr(3) $+ %curcolor $+ , $+ %curcolor 
          else %res = %res $+ $chr(3) 
        } 
        else %res = %res $+ $chr(22) 
      } 
      %res = %res $+ $chr(160) 
    } 
    inc %i 
  } 
  return %res 
} 

alias mtrainbow //mt $rainbow( $+ $1- $+ ) 

001 ; Colors, Reverse, Rainbow, and Massive Text.
002 ; For colors --- /colors <text here>
003 ; For reversed text --- /reverse <text here>
004 ; For reversed text as a /me --- /mereverse <text here>
005 ; For a rainbow of colors --- /rainbow <text here>
006 ; For massively huge text --- /mt <text here>
007 ; For a rainbow of massively huge text --- /mtrainbow <text here>
008  
009 alias colors {
  010   var %length = $len($1-)
  011   var %letter = 1
  012   while (%letter <= %length) {
    013     if ($mid($1-,%letter,1) == $chr(32)) {
      014       var %output = %output $+ &
      015       goto xxx
    016     } 
    017     var %output = %output $+  $+ $rand(03,013) $+ $mid($1-,%letter,1)
    018     :xxx
    019     inc %letter
  020   }
  021   var %output = $replace(%output,$chr(38),$chr(32))
  022   msg $active %output
023 }
024  
025  
026  
027 alias rev {
  028   var %len = $len($1-)
  029   var %return = $null
  030   while (%len > 0) {
    031     var %return = %return $+ $mid($1-,%len,1) $+ $chr(32)
    032     dec %len
  033   }
  034   return %return
035 }
036 alias reverse //say $rev( $1- )
037 alias mereverse //me $rev( $1- )
038  
039  
040  
041  
042 alias rainbow {
  043   var %pos = 1, %color = 04, %result = $chr(3)
  044   while (%pos <= $len($1-)) {
    045     %result = %result $+ %color $+ $mid($1-,%pos,1) $+ $chr(3)
    046     inc %pos
    047     %color = $nextcolor(%color)
  048   }
  049   if ($isid) return %result
  050   else say %result
051 }
052  
053 alias -l nextcolor {
  054   if ($$1 == 04) return 07
  055   elseif ($$1 == 07) return 08
  056   elseif ($$1 == 08) return 09
  057   elseif ($$1 == 09) return 11
  058   elseif ($$1 == 11) return 12
  059   elseif ($$1 == 12) return 02
  060   elseif ($$1 == 02) return 06
  061   elseif ($$1 == 06) return 13
  062   elseif ($$1 == 13) return 04
063 }
064  
065  
066  
067  
068  
069  
070 alias mt {
  071   if ($bigtext.unsupp($1-)) {
    072     echo -ac info * Characters not supported by Big Text present in your message: $bigtext.unsupp($1-)
    073     return
  074   }
  075   var %lia, %lib, %lic, %lid, %lie, %i 1, %text $strip($1-, bur), %colregex /^(\d\d?(?:,\d\d?)?)/
  076  
  077   var %regex = /(?<= $+ $chr(3) $+ [0-9]| $+ $chr(3) $+ [0-9][0-9]) $+ $chr(44) $+ \d\d?/g, %res, %dummy = $regsub(%text, %regex, $null, %text)
  078  
  079   while (%i <= $len(%text)) {
    080     if ($mid(%text, %i, 1) == $chr(3)) {
      081       var %lia $+(%lia, $chr(3)), %lib $+(%lib, $chr(3)), %lic $+(%lic, $chr(3)), %lid $+(%lid, $chr(3)), %lie $+(%lie, $chr(3))
      082       if ($mid(%text, $calc(%i + 1), 1) != $chr(32)) && ($regex(mtcol, $mid(%text, $calc(%i + 1), $mid(%text, $calc(%i + 1), 0)), %colregex)) {
        083         var %m $regml(mtcol, 1)
        084         var %lia %lia $+ %m, %lib %lib $+ %m, %lic %lic $+ %m, %lid %lid $+ %m, %lie %lie $+ %m
        085         inc %i $len(%m)
      086       }
    087     }
    088     else { 
      089       tokenize 32 $bigtext.char($mid(%text, %i, 1))
      090       var %lia $+(%lia, $1), %lib $+(%lib, $2), %lic $+(%lic, $3), %lid $+(%lid, $4), %lie $+(%lie, $5)
      091       ; if ($bigtext.kern($mid(%text, %i, 2))) {
        092       var %lia $+(%lia, .), %lib $+(%lib, .), %lic $+(%lic, .), %lid $+(%lid, .), %lie $+(%lie, .)
      093       ; }
    094     }
    095     inc %i
  096   }
  097   say $bigtext.format(%lia)
  098   say $bigtext.format(%lib)
  099   say $bigtext.format(%lic)
  100   say $bigtext.format(%lid)
  101   say $bigtext.format(%lie)
102 }
103  
104 ; You may customize this alias however you want to.
105 ; It is Big Text's font, used above.
106 ; The return value consists of dots and X's, to denote
107 ;   unlit and lit points in the font, respectively;
108 ;   there are 5 tokens of the same length, each
109 ;   corresponding to a line in the 5-line output.
110 ; Note how the . and X's look like the characters;
111 ;   you can use this to your advantage!
112 alias -l bigtext.char {
  113   if ($1 === $chr(32)) || ($1 === $null) return $&
    114     ... $&
    115     ... $&
    116     ... $&
    117     ... $&
    118     ...
  119   if ($1 === $chr(160)) return $&
    120     ..... $&
    121     ..... $&
    122     ..... $&
    123     ..... $&
    124     .....
  125   elseif ($1 == 0) return $&
    126     .XXXX. $&
    127     XX..XX $&
    128     XX.XXX $&
    129     XXX.XX $&
    130     .XXXX.
  131   elseif ($1 == 1) return $&
    132     .XXXX $&
    133     XX.XX $&
    134     ...XX $&
    135     ...XX $&
    136     ...XX
  137   elseif ($1 == 2) return $&
    138     XXXXX. $&
    139     ....XX $&
    140     ..XX.. $&
    141     XX.... $&
    142     XXXXXX
  143   elseif ($1 == 3) return $&
    144     XXXXX. $&
    145     ....XX $&
    146     .XXXX. $&
    147     ....XX $&
    148     XXXXX.
  149   elseif ($1 == 4) return $&
    150     .....XXX. $&
    151     ...XX.XX. $&
    152     .XX...XX. $&
    153     XXXXXXXXX $&
    154     ......XX.
  155   elseif ($1 == 5) return $&
    156     XXXXX $&
    157     XX... $&
    158     XXXX. $&
    159     ...XX $&
    160     XXXX.
  161   elseif ($1 == 6) return $&
    162     .XXXX. $&
    163     XX.... $&
    164     XXXXX. $&
    165     XX..XX $&
    166     .XXXX.
  167   elseif ($1 == 7) return $&
    168     XXXXXX $&
    169     ...XX. $&
    170     ..XX.. $&
    171     .XX... $&
    172     XX....
  173   elseif ($1 == 8) return $&
    174     .XXXX. $&
    175     XX..XX $&
    176     .XXXX. $&
    177     XX..XX $&
    178     .XXXX.
  179   elseif ($1 == 9) return $&
    180     .XXXX. $&
    181     XX..XX $&
    182     .XXXXX $&
    183     ....XX $&
    184     .XXXX.
  185   elseif ($1 == A) return $&
    186     .XXXX. $&
    187     XX..XX $&
    188     XXXXXX $&
    189     XX..XX $&
    190     XX..XX
  191   elseif ($1 == B) return $&
    192     XXXXX. $&
    193     XX..XX $&
    194     XXXXX. $&
    195     XX..XX $&
    196     XXXXX.
  197   elseif ($1 == C) return $&
    198     .XXXX. $&
    199     XX..XX $&
    200     XX.... $&
    201     XX..XX $&
    202     .XXXX.
  203   elseif ($1 == D) return $&
    204     XXXX.. $&
    205     XX.XX. $&
    206     XX..XX $&
    207     XX..XX $&
    208     XXXXX.
  209   elseif ($1 == E) return $&
    210     XXXXX $&
    211     XX... $&
    212     XXXX. $&
    213     XX... $&
    214     XXXXX
  215   elseif ($1 == F) return $&
    216     XXXXX $&
    217     XX... $&
    218     XXXX. $&
    219     XX... $&
    220     XX...
  221   elseif ($1 == G) return $&
    222     .XXXX. $&
    223     XX.... $&
    224     XX.XXX $&
    225     XX..XX $&
    226     .XXXXX
  227   elseif ($1 == H) return $&
    228     XX...XX $&
    229     XX...XX $&
    230     XXXXXXX $&
    231     XX...XX $&
    232     XX...XX
  233   elseif ($1 == I) return $&
    234     XXXX $&
    235     .XX. $&
    236     .XX. $&
    237     .XX. $&
    238     XXXX
  239   elseif ($1 == J) return $&
    240     ....XX $&
    241     ....XX $&
    242     ....XX $&
    243     XX..XX $&
    244     .XXXX.
  245   elseif ($1 == K) return $&
    246     XX..XX $&
    247     XX.XX. $&
    248     XXXX.. $&
    249     XX.XX. $&
    250     XX..XX
  251   elseif ($1 == L) return $&
    252     XX... $&
    253     XX... $&
    254     XX... $&
    255     XX... $&
    256     XXXXX
  257   elseif ($1 == M) return $&
    258     XX....XX $&
    259     XXX..XXX $&
    260     XXXXXXXX $&
    261     XX.XX.XX $&
    262     XX....XX
  263   elseif ($1 == N) return $&
    264     XX..XX $&
    265     XXX.XX $&
    266     XXXXXX $&
    267     XX.XXX $&
    268     XX..XX
  269   elseif ($1 == O) return $&
    270     .XXXX. $&
    271     XX..XX $&
    272     XX..XX $&
    273     XX..XX $&
    274     .XXXX.
  275   elseif ($1 == P) return $&
    276     XXXXX. $&
    277     XX..XX $&
    278     XXXXX. $&
    279     XX.... $&
    280     XX....
  281   elseif ($1 == Q) return $&
    282     .XXXX.. $&
    283     XX..XX. $&
    284     XX..XX. $&
    285     XX..XX. $&
    286     .XXXXXX
  287   elseif ($1 == R) return $&
    288     XXXXX. $&
    289     XX..XX $&
    290     XXXXX. $&
    291     XX..XX $&
    292     XX..XX
  293   elseif ($1 == S) return $&
    294     .XXXX. $&
    295     XX.... $&
    296     .XXXX. $&
    297     ....XX $&
    298     XXXXX.
  299   elseif ($1 == T) return $&
    300     XXXXXX $&
    301     ..XX.. $&
    302     ..XX.. $&
    303     ..XX.. $&
    304     ..XX..
  305   elseif ($1 == U) return $&
    306     XX..XX $&
    307     XX..XX $&
    308     XX..XX $&
    309     XX..XX $&
    310     .XXXX.
  311   elseif ($1 == V) return $&
    312     XX....XX $&
    313     XX....XX $&
    314     .XX..XX. $&
    315     ..XXXX.. $&
    316     ...XX...
  317   elseif ($1 == W) return $&
    318     XX...XX $&
    319     XX...XX $&
    320     XX.X.XX $&
    321     XXXXXXX $&
    322     .XX.XX.
  323   elseif ($1 == X) return $&
    324     XX...XX $&
    325     .XX.XX. $&
    326     ..XXX.. $&
    327     .XX.XX. $&
    328     XX...XX
  329   elseif ($1 == Y) return $&
    330     XX..XX $&
    331     XX..XX $&
    332     .XXXX. $&
    333     ..XX.. $&
    334     ..XX..
  335   elseif ($1 == Z) return $&
    336     XXXXXX $&
    337     ...XX. $&
    338     ..XX.. $&
    339     .XX... $&
    340     XXXXXX
  341   elseif ($1 == $chr(35)) return $&
    342     .XX..XX. $&
    343     XXXXXXXX $&
    344     .XX..XX. $&
    345     XXXXXXXX $&
    346     .XX..XX.
  347   elseif ($1 == ') return $&
    348     .XX $&
    349     XX. $&
    350     ... $&
    351     ... $&
    352     ...
  353   elseif ($1 == ") return $&
    354     XX..XX $&
    355     XX..XX $&
    356     ...... $&
    357     ...... $&
    358     ......
  359   elseif ($1 == +) return $&
    360     ...... $&
    361     ..XX.. $&
    362     XXXXXX $&
    363     ..XX.. $&
    364     ......
  365   elseif ($1 == =) return $&
    366     ...... $&
    367     XXXXXX $&
    368     ...... $&
    369     XXXXXX $&
    370     ......
  371   elseif ($1 == -) return $&
    372     ...... $&
    373     ...... $&
    374     XXXXXX $&
    375     ...... $&
    376     ......
  377   elseif ($1 == _) return $&
    378     ...... $&
    379     ...... $&
    380     ...... $&
    381     ...... $&
    382     XXXXXX
  383   elseif ($1 == ?) return $&
    384     XXXXXX $&
    385     ...... $&
    386     ...... $&
    387     ...... $&
    388     ......
  389   elseif ($1 == ?) return $&
    390     .XXX. $&
    391     XX.XX $&
    392     .XXX. $&
    393     ..... $&
    394     .....
  395   elseif ($1 == :) return $&
    396     .. $&
    397     XX $&
    398     .. $&
    399     XX $&
    400     ..
  401   elseif ($1 == !) return $&
    402     XX $&
    403     XX $&
    404     XX $&
    405     .. $&
    406     XX
  407   elseif ($1 == ?) return $&
    408     XXX. $&
    409     ..XX $&
    410     .XX. $&
    411     .... $&
    412     .XX.
  413   elseif ($1 == .) return $&
    414     .. $&
    415     .. $&
    416     .. $&
    417     .. $&
    418     XX
  419   elseif ($1 == /) return $&
    420     ....XX $&
    421     ...XX. $&
    422     ..XX.. $&
    423     .XX... $&
    424     XX....
  425   elseif ($1 == \) return $&
    426     XX.... $&
    427     .XX... $&
    428     ..XX.. $&
    429     ...XX. $&
    430     ....XX
  431   elseif ($1 == $chr(40)) return $&
    432     ...XX $&
    433     .XX.. $&
    434     XX... $&
    435     .XX.. $&
    436     ...XX
  437   elseif ($1 == $chr(41)) return $&
    438     XX... $&
    439     ..XX. $&
    440     ...XX $&
    441     ..XX. $&
    442     XX...
  443   elseif ($1 == $chr(37)) return $&
    444     XX..XX $&
    445     ...XX. $&
    446     ..XX.. $&
    447     .XX... $&
    448     XX..XX
  449   elseif ($1 == [) return $&
    450     XXXXX $&
    451     XX... $&
    452     XX... $&
    453     XX... $&
    454     XXXXX
  455   elseif ($1 == ]) return $&
    456     XXXXX $&
    457     ...XX $&
    458     ...XX $&
    459     ...XX $&
    460     XXXXX
  461   elseif ($1 == |) return $&
    462     .XX. $&
    463     .XX. $&
    464     .XX. $&
    465     .XX. $&
    466     .XX.
  467   elseif ($1 == <) return $&
    468     ....XX $&
    469     ..XX.. $&
    470     XX.... $&
    471     ..XX.. $&
    472     ....XX
  473   elseif ($1 == >) return $&
    474     XX.... $&
    475     ..XX.. $&
    476     ....XX $&
    477     ..XX.. $&
    478     XX....
  479   elseif ($1 == ?) return $&
    480     .... $&
    481     .... $&
    482     .XX. $&
    483     ..XX $&
    484     XXX.
  485   elseif ($1 == ,) return $&
    486     ... $&
    487     ... $&
    488     XXX $&
    489     .XX $&
    490     XX. 
491 }
492  
493  
494 ; Returns all unsupported characters within a Big Text message
495 ; Supported characters are a-z, space, digits, #'"+=?:!?./\()%-[]<>|?,
496 alias bigtext.unsupp {
  497   var %res, %dummy = $regsub($1-, /[]a-z  0-9# $+ $chr(44) $+ '+=?:!?./\\()%[|<>_?"?-]/igS, $null, %res)
  498   return %res
499 }
500  
501 ; Returns $true if a space should be added between two characters,
502 ;   or $false if not.
503 ; Note: This is here only for aesthetic purposes. :)
504 alias bigtext.kern {
  505   var %res $true
  506   if ($regex($1-, /^(.|[_GDSQL-]T|[TPFVY7/"]J|T\.|L[1Y\\"]|[LTK<[]-|-[]>%\\]|S1|T4|\?\.|\.\?|[467L\\]?|?[J/]|L'|\/\/|\\\\|?J|[_?]?|[?T_]_|>\.|\.<)$/i)) %res = $false
  507   return %res
508 }
509  
510 ; Takes an input string of the form:
511 ; .XX..XX....XX.XX.XXXXX
512 ; And formats it for display.
513 alias bigtext.format {
  514   var %res, %i 1, %previous 0, %current, %curcolor, %colregex /^(\d\d?(?:,\d\d?)?)/
  515   while (%i <= $len($1-)) {
    516     if ($mid($1-, %i, 1) == $chr(3)) {
      517       if ($regex(mtcol, $mid($1-, $calc(%i + 1), $mid($1-, $calc(%i + 1), 0)), %colregex)) {
        518         if ($gettok($regml(mtcol, 1), 1, 44) != %curcolor) {
          519           %curcolor = $gettok($regml(mtcol, 1), 1, 44)
          520           if (%i != 1) && ($mid($1-, $calc(%i - 1), 1) == X) %res = %res $+ $chr(15)
        521         }
        522         inc %i $len($regml(mtcol, 1))
      523       }
      524       elseif (%curcolor) {
        525         %curcolor =
        526         if (%i != 1) && ($mid($1-, $calc(%i - 1), 1) == X) %res = %res $+ $chr(15)
      527       }
    528     }
    529     else {
      530       %current = $iif($mid($1-, %i, 1) == ., 0, 1)
      531       if (%previous != %current) {
        532         %previous = %current
        533         if (%curcolor) {
          534           if (%current) %res = %res $+ $chr(3) $+ %curcolor $+ , $+ %curcolor
          535           else %res = %res $+ $chr(3)
        536         }
        537         else %res = %res $+ $chr(22)
      538       }
      539       %res = %res $+ $chr(160)
    540     }
    541     inc %i
  542   }
  543   return %res
544 }
545  
546 alias mtrainbow //mt $rainbow( $+ $1- $+ )
547   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547; Colors, Reverse, Rainbow, and Massive Text.
; For colors --- /colors <text here>
; For reversed text --- /reverse <text here>
; For reversed text as a /me --- /mereverse <text here>
; For a rainbow of colors --- /rainbow <text here>
; For massively huge text --- /mt <text here>
; For a rainbow of massively huge text --- /mtrainbow <text here>

alias colors {
  var %length = $len($1-)
  var %letter = 1
  while (%letter <= %length) {
    if ($mid($1-,%letter,1) == $chr(32)) {
      var %output = %output $+ &
      goto xxx
    } 
    var %output = %output $+  $+ $rand(03,013) $+ $mid($1-,%letter,1)
    :xxx
    inc %letter
  }
  var %output = $replace(%output,$chr(38),$chr(32))
  msg $active %output
}



alias rev {
  var %len = $len($1-)
  var %return = $null
  while (%len > 0) {
    var %return = %return $+ $mid($1-,%len,1) $+ $chr(32)
    dec %len
  }
  return %return
}
alias reverse //say $rev( $1- )
alias mereverse //me $rev( $1- )




alias rainbow {
  var %pos = 1, %color = 04, %result = $chr(3)
  while (%pos <= $len($1-)) {
    %result = %result $+ %color $+ $mid($1-,%pos,1) $+ $chr(3)
    inc %pos
    %color = $nextcolor(%color)
  }
  if ($isid) return %result
  else say %result
}

alias -l nextcolor {
  if ($$1 == 04) return 07
  elseif ($$1 == 07) return 08
  elseif ($$1 == 08) return 09
  elseif ($$1 == 09) return 11
  elseif ($$1 == 11) return 12
  elseif ($$1 == 12) return 02
  elseif ($$1 == 02) return 06
  elseif ($$1 == 06) return 13
  elseif ($$1 == 13) return 04
}






alias mt {
  if ($bigtext.unsupp($1-)) {
    echo -ac info * Characters not supported by Big Text present in your message: $bigtext.unsupp($1-)
    return
  }
  var %lia, %lib, %lic, %lid, %lie, %i 1, %text $strip($1-, bur), %colregex /^(\d\d?(?:,\d\d?)?)/

  var %regex = /(?<= $+ $chr(3) $+ [0-9]| $+ $chr(3) $+ [0-9][0-9]) $+ $chr(44) $+ \d\d?/g, %res, %dummy = $regsub(%text, %regex, $null, %text)

  while (%i <= $len(%text)) {
    if ($mid(%text, %i, 1) == $chr(3)) {
      var %lia $+(%lia, $chr(3)), %lib $+(%lib, $chr(3)), %lic $+(%lic, $chr(3)), %lid $+(%lid, $chr(3)), %lie $+(%lie, $chr(3))
      if ($mid(%text, $calc(%i + 1), 1) != $chr(32)) && ($regex(mtcol, $mid(%text, $calc(%i + 1), $mid(%text, $calc(%i + 1), 0)), %colregex)) {
        var %m $regml(mtcol, 1)
        var %lia %lia $+ %m, %lib %lib $+ %m, %lic %lic $+ %m, %lid %lid $+ %m, %lie %lie $+ %m
        inc %i $len(%m)
      }
    }
    else { 
      tokenize 32 $bigtext.char($mid(%text, %i, 1))
      var %lia $+(%lia, $1), %lib $+(%lib, $2), %lic $+(%lic, $3), %lid $+(%lid, $4), %lie $+(%lie, $5)
      ; if ($bigtext.kern($mid(%text, %i, 2))) {
      var %lia $+(%lia, .), %lib $+(%lib, .), %lic $+(%lic, .), %lid $+(%lid, .), %lie $+(%lie, .)
      ; }
    }
    inc %i
  }
  say $bigtext.format(%lia)
  say $bigtext.format(%lib)
  say $bigtext.format(%lic)
  say $bigtext.format(%lid)
  say $bigtext.format(%lie)
}

; You may customize this alias however you want to.
; It is Big Text's font, used above.
; The return value consists of dots and X's, to denote
;   unlit and lit points in the font, respectively;
;   there are 5 tokens of the same length, each
;   corresponding to a line in the 5-line output.
; Note how the . and X's look like the characters;
;   you can use this to your advantage!
alias -l bigtext.char {
  if ($1 === $chr(32)) || ($1 === $null) return $&
    ... $&
    ... $&
    ... $&
    ... $&
    ...
  if ($1 === $chr(160)) return $&
    ..... $&
    ..... $&
    ..... $&
    ..... $&
    .....
  elseif ($1 == 0) return $&
    .XXXX. $&
    XX..XX $&
    XX.XXX $&
    XXX.XX $&
    .XXXX.
  elseif ($1 == 1) return $&
    .XXXX $&
    XX.XX $&
    ...XX $&
    ...XX $&
    ...XX
  elseif ($1 == 2) return $&
    XXXXX. $&
    ....XX $&
    ..XX.. $&
    XX.... $&
    XXXXXX
  elseif ($1 == 3) return $&
    XXXXX. $&
    ....XX $&
    .XXXX. $&
    ....XX $&
    XXXXX.
  elseif ($1 == 4) return $&
    .....XXX. $&
    ...XX.XX. $&
    .XX...XX. $&
    XXXXXXXXX $&
    ......XX.
  elseif ($1 == 5) return $&
    XXXXX $&
    XX... $&
    XXXX. $&
    ...XX $&
    XXXX.
  elseif ($1 == 6) return $&
    .XXXX. $&
    XX.... $&
    XXXXX. $&
    XX..XX $&
    .XXXX.
  elseif ($1 == 7) return $&
    XXXXXX $&
    ...XX. $&
    ..XX.. $&
    .XX... $&
    XX....
  elseif ($1 == 8) return $&
    .XXXX. $&
    XX..XX $&
    .XXXX. $&
    XX..XX $&
    .XXXX.
  elseif ($1 == 9) return $&
    .XXXX. $&
    XX..XX $&
    .XXXXX $&
    ....XX $&
    .XXXX.
  elseif ($1 == A) return $&
    .XXXX. $&
    XX..XX $&
    XXXXXX $&
    XX..XX $&
    XX..XX
  elseif ($1 == B) return $&
    XXXXX. $&
    XX..XX $&
    XXXXX. $&
    XX..XX $&
    XXXXX.
  elseif ($1 == C) return $&
    .XXXX. $&
    XX..XX $&
    XX.... $&
    XX..XX $&
    .XXXX.
  elseif ($1 == D) return $&
    XXXX.. $&
    XX.XX. $&
    XX..XX $&
    XX..XX $&
    XXXXX.
  elseif ($1 == E) return $&
    XXXXX $&
    XX... $&
    XXXX. $&
    XX... $&
    XXXXX
  elseif ($1 == F) return $&
    XXXXX $&
    XX... $&
    XXXX. $&
    XX... $&
    XX...
  elseif ($1 == G) return $&
    .XXXX. $&
    XX.... $&
    XX.XXX $&
    XX..XX $&
    .XXXXX
  elseif ($1 == H) return $&
    XX...XX $&
    XX...XX $&
    XXXXXXX $&
    XX...XX $&
    XX...XX
  elseif ($1 == I) return $&
    XXXX $&
    .XX. $&
    .XX. $&
    .XX. $&
    XXXX
  elseif ($1 == J) return $&
    ....XX $&
    ....XX $&
    ....XX $&
    XX..XX $&
    .XXXX.
  elseif ($1 == K) return $&
    XX..XX $&
    XX.XX. $&
    XXXX.. $&
    XX.XX. $&
    XX..XX
  elseif ($1 == L) return $&
    XX... $&
    XX... $&
    XX... $&
    XX... $&
    XXXXX
  elseif ($1 == M) return $&
    XX....XX $&
    XXX..XXX $&
    XXXXXXXX $&
    XX.XX.XX $&
    XX....XX
  elseif ($1 == N) return $&
    XX..XX $&
    XXX.XX $&
    XXXXXX $&
    XX.XXX $&
    XX..XX
  elseif ($1 == O) return $&
    .XXXX. $&
    XX..XX $&
    XX..XX $&
    XX..XX $&
    .XXXX.
  elseif ($1 == P) return $&
    XXXXX. $&
    XX..XX $&
    XXXXX. $&
    XX.... $&
    XX....
  elseif ($1 == Q) return $&
    .XXXX.. $&
    XX..XX. $&
    XX..XX. $&
    XX..XX. $&
    .XXXXXX
  elseif ($1 == R) return $&
    XXXXX. $&
    XX..XX $&
    XXXXX. $&
    XX..XX $&
    XX..XX
  elseif ($1 == S) return $&
    .XXXX. $&
    XX.... $&
    .XXXX. $&
    ....XX $&
    XXXXX.
  elseif ($1 == T) return $&
    XXXXXX $&
    ..XX.. $&
    ..XX.. $&
    ..XX.. $&
    ..XX..
  elseif ($1 == U) return $&
    XX..XX $&
    XX..XX $&
    XX..XX $&
    XX..XX $&
    .XXXX.
  elseif ($1 == V) return $&
    XX....XX $&
    XX....XX $&
    .XX..XX. $&
    ..XXXX.. $&
    ...XX...
  elseif ($1 == W) return $&
    XX...XX $&
    XX...XX $&
    XX.X.XX $&
    XXXXXXX $&
    .XX.XX.
  elseif ($1 == X) return $&
    XX...XX $&
    .XX.XX. $&
    ..XXX.. $&
    .XX.XX. $&
    XX...XX
  elseif ($1 == Y) return $&
    XX..XX $&
    XX..XX $&
    .XXXX. $&
    ..XX.. $&
    ..XX..
  elseif ($1 == Z) return $&
    XXXXXX $&
    ...XX. $&
    ..XX.. $&
    .XX... $&
    XXXXXX
  elseif ($1 == $chr(35)) return $&
    .XX..XX. $&
    XXXXXXXX $&
    .XX..XX. $&
    XXXXXXXX $&
    .XX..XX.
  elseif ($1 == ') return $&
    .XX $&
    XX. $&
    ... $&
    ... $&
    ...
  elseif ($1 == ") return $&
    XX..XX $&
    XX..XX $&
    ...... $&
    ...... $&
    ......
  elseif ($1 == +) return $&
    ...... $&
    ..XX.. $&
    XXXXXX $&
    ..XX.. $&
    ......
  elseif ($1 == =) return $&
    ...... $&
    XXXXXX $&
    ...... $&
    XXXXXX $&
    ......
  elseif ($1 == -) return $&
    ...... $&
    ...... $&
    XXXXXX $&
    ...... $&
    ......
  elseif ($1 == _) return $&
    ...... $&
    ...... $&
    ...... $&
    ...... $&
    XXXXXX
  elseif ($1 == ?) return $&
    XXXXXX $&
    ...... $&
    ...... $&
    ...... $&
    ......
  elseif ($1 == ?) return $&
    .XXX. $&
    XX.XX $&
    .XXX. $&
    ..... $&
    .....
  elseif ($1 == :) return $&
    .. $&
    XX $&
    .. $&
    XX $&
    ..
  elseif ($1 == !) return $&
    XX $&
    XX $&
    XX $&
    .. $&
    XX
  elseif ($1 == ?) return $&
    XXX. $&
    ..XX $&
    .XX. $&
    .... $&
    .XX.
  elseif ($1 == .) return $&
    .. $&
    .. $&
    .. $&
    .. $&
    XX
  elseif ($1 == /) return $&
    ....XX $&
    ...XX. $&
    ..XX.. $&
    .XX... $&
    XX....
  elseif ($1 == \) return $&
    XX.... $&
    .XX... $&
    ..XX.. $&
    ...XX. $&
    ....XX
  elseif ($1 == $chr(40)) return $&
    ...XX $&
    .XX.. $&
    XX... $&
    .XX.. $&
    ...XX
  elseif ($1 == $chr(41)) return $&
    XX... $&
    ..XX. $&
    ...XX $&
    ..XX. $&
    XX...
  elseif ($1 == $chr(37)) return $&
    XX..XX $&
    ...XX. $&
    ..XX.. $&
    .XX... $&
    XX..XX
  elseif ($1 == [) return $&
    XXXXX $&
    XX... $&
    XX... $&
    XX... $&
    XXXXX
  elseif ($1 == ]) return $&
    XXXXX $&
    ...XX $&
    ...XX $&
    ...XX $&
    XXXXX
  elseif ($1 == |) return $&
    .XX. $&
    .XX. $&
    .XX. $&
    .XX. $&
    .XX.
  elseif ($1 == <) return $&
    ....XX $&
    ..XX.. $&
    XX.... $&
    ..XX.. $&
    ....XX
  elseif ($1 == >) return $&
    XX.... $&
    ..XX.. $&
    ....XX $&
    ..XX.. $&
    XX....
  elseif ($1 == ?) return $&
    .... $&
    .... $&
    .XX. $&
    ..XX $&
    XXX.
  elseif ($1 == ,) return $&
    ... $&
    ... $&
    XXX $&
    .XX $&
    XX. 
}


; Returns all unsupported characters within a Big Text message
; Supported characters are a-z, space, digits, #'"+=?:!?./\()%-[]<>|?,
alias bigtext.unsupp {
  var %res, %dummy = $regsub($1-, /[]a-z  0-9# $+ $chr(44) $+ '+=?:!?./\\()%[|<>_?"?-]/igS, $null, %res)
  return %res
}

; Returns $true if a space should be added between two characters,
;   or $false if not.
; Note: This is here only for aesthetic purposes. :)
alias bigtext.kern {
  var %res $true
  if ($regex($1-, /^(.|[_GDSQL-]T|[TPFVY7/"]J|T\.|L[1Y\\"]|[LTK<[]-|-[]>%\\]|S1|T4|\?\.|\.\?|[467L\\]?|?[J/]|L'|\/\/|\\\\|?J|[_?]?|[?T_]_|>\.|\.<)$/i)) %res = $false
  return %res
}

; Takes an input string of the form:
; .XX..XX....XX.XX.XXXXX
; And formats it for display.
alias bigtext.format {
  var %res, %i 1, %previous 0, %current, %curcolor, %colregex /^(\d\d?(?:,\d\d?)?)/
  while (%i <= $len($1-)) {
    if ($mid($1-, %i, 1) == $chr(3)) {
      if ($regex(mtcol, $mid($1-, $calc(%i + 1), $mid($1-, $calc(%i + 1), 0)), %colregex)) {
        if ($gettok($regml(mtcol, 1), 1, 44) != %curcolor) {
          %curcolor = $gettok($regml(mtcol, 1), 1, 44)
          if (%i != 1) && ($mid($1-, $calc(%i - 1), 1) == X) %res = %res $+ $chr(15)
        }
        inc %i $len($regml(mtcol, 1))
      }
      elseif (%curcolor) {
        %curcolor =
        if (%i != 1) && ($mid($1-, $calc(%i - 1), 1) == X) %res = %res $+ $chr(15)
      }
    }
    else {
      %current = $iif($mid($1-, %i, 1) == ., 0, 1)
      if (%previous != %current) {
        %previous = %current
        if (%curcolor) {
          if (%current) %res = %res $+ $chr(3) $+ %curcolor $+ , $+ %curcolor
          else %res = %res $+ $chr(3)
        }
        else %res = %res $+ $chr(22)
      }
      %res = %res $+ $chr(160)
    }
    inc %i
  }
  return %res
}

alias mtrainbow //mt $rainbow( $+ $1- $+ )
; Colors, Reverse, Rainbow, and Massive Text. 
; For colors --- /colors <text here> 
; For reversed text --- /reverse <text here> 
; For reversed text as a /me --- /mereverse <text here> 
; For a rainbow of colors --- /rainbow <text here> 
; For massively huge text --- /mt <text here> 
; For a rainbow of massively huge text --- /mtrainbow <text here> 

alias colors { 
  var %length = $len($1-) 
  var %letter = 1 
  while (%letter <= %length) { 
    if ($mid($1-,%letter,1) == $chr(32)) { 
      var %output = %output $+ & 
      goto xxx 
    } 
    var %output = %output $+  $+ $rand(03,013) $+ $mid($1-,%letter,1) 
    :xxx 
    inc %letter 
  } 
  var %output = $replace(%output,$chr(38),$chr(32)) 
  msg $active %output 
} 



alias rev { 
  var %len = $len($1-) 
  var %return = $null 
  while (%len > 0) { 
    var %return = %return $+ $mid($1-,%len,1) $+ $chr(32) 
    dec %len 
  } 
  return %return 
} 
alias reverse //say $rev( $1- ) 
alias mereverse //me $rev( $1- ) 




alias rainbow { 
  var %pos = 1, %color = 04, %result = $chr(3) 
  while (%pos <= $len($1-)) { 
    %result = %result $+ %color $+ $mid($1-,%pos,1) $+ $chr(3) 
    inc %pos 
    %color = $nextcolor(%color) 
  } 
  if ($isid) return %result 
  else say %result 
} 

alias -l nextcolor { 
  if ($$1 == 04) return 07 
  elseif ($$1 == 07) return 08 
  elseif ($$1 == 08) return 09 
  elseif ($$1 == 09) return 11 
  elseif ($$1 == 11) return 12 
  elseif ($$1 == 12) return 02 
  elseif ($$1 == 02) return 06 
  elseif ($$1 == 06) return 13 
  elseif ($$1 == 13) return 04 
} 






alias mt { 
  if ($bigtext.unsupp($1-)) { 
    echo -ac info * Characters not supported by Big Text present in your message: $bigtext.unsupp($1-) 
    return 
  } 
  var %lia, %lib, %lic, %lid, %lie, %i 1, %text $strip($1-, bur), %colregex /^(\d\d?(?:,\d\d?)?)/ 

  var %regex = /(?<= $+ $chr(3) $+ [0-9]| $+ $chr(3) $+ [0-9][0-9]) $+ $chr(44) $+ \d\d?/g, %res, %dummy = $regsub(%text, %regex, $null, %text) 

  while (%i <= $len(%text)) { 
    if ($mid(%text, %i, 1) == $chr(3)) { 
      var %lia $+(%lia, $chr(3)), %lib $+(%lib, $chr(3)), %lic $+(%lic, $chr(3)), %lid $+(%lid, $chr(3)), %lie $+(%lie, $chr(3)) 
      if ($mid(%text, $calc(%i + 1), 1) != $chr(32)) && ($regex(mtcol, $mid(%text, $calc(%i + 1), $mid(%text, $calc(%i + 1), 0)), %colregex)) { 
        var %m $regml(mtcol, 1) 
        var %lia %lia $+ %m, %lib %lib $+ %m, %lic %lic $+ %m, %lid %lid $+ %m, %lie %lie $+ %m 
        inc %i $len(%m) 
      } 
    } 
    else { 
      tokenize 32 $bigtext.char($mid(%text, %i, 1)) 
      var %lia $+(%lia, $1), %lib $+(%lib, $2), %lic $+(%lic, $3), %lid $+(%lid, $4), %lie $+(%lie, $5) 
      ; if ($bigtext.kern($mid(%text, %i, 2))) { 
      var %lia $+(%lia, .), %lib $+(%lib, .), %lic $+(%lic, .), %lid $+(%lid, .), %lie $+(%lie, .) 
      ; } 
    } 
    inc %i 
  } 
  say $bigtext.format(%lia) 
  say $bigtext.format(%lib) 
  say $bigtext.format(%lic) 
  say $bigtext.format(%lid) 
  say $bigtext.format(%lie) 
} 

; You may customize this alias however you want to. 
; It is Big Text's font, used above. 
; The return value consists of dots and X's, to denote 
;   unlit and lit points in the font, respectively; 
;   there are 5 tokens of the same length, each 
;   corresponding to a line in the 5-line output. 
; Note how the . and X's look like the characters; 
;   you can use this to your advantage! 
alias -l bigtext.char { 
  if ($1 === $chr(32)) || ($1 === $null) return $& 
    ... $& 
    ... $& 
    ... $& 
    ... $& 
    ... 
  if ($1 === $chr(160)) return $& 
    ..... $& 
    ..... $& 
    ..... $& 
    ..... $& 
    ..... 
  elseif ($1 == 0) return $& 
    .XXXX. $& 
    XX..XX $& 
    XX.XXX $& 
    XXX.XX $& 
    .XXXX. 
  elseif ($1 == 1) return $& 
    .XXXX $& 
    XX.XX $& 
    ...XX $& 
    ...XX $& 
    ...XX 
  elseif ($1 == 2) return $& 
    XXXXX. $& 
    ....XX $& 
    ..XX.. $& 
    XX.... $& 
    XXXXXX 
  elseif ($1 == 3) return $& 
    XXXXX. $& 
    ....XX $& 
    .XXXX. $& 
    ....XX $& 
    XXXXX. 
  elseif ($1 == 4) return $& 
    .....XXX. $& 
    ...XX.XX. $& 
    .XX...XX. $& 
    XXXXXXXXX $& 
    ......XX. 
  elseif ($1 == 5) return $& 
    XXXXX $& 
    XX... $& 
    XXXX. $& 
    ...XX $& 
    XXXX. 
  elseif ($1 == 6) return $& 
    .XXXX. $& 
    XX.... $& 
    XXXXX. $& 
    XX..XX $& 
    .XXXX. 
  elseif ($1 == 7) return $& 
    XXXXXX $& 
    ...XX. $& 
    ..XX.. $& 
    .XX... $& 
    XX.... 
  elseif ($1 == 8) return $& 
    .XXXX. $& 
    XX..XX $& 
    .XXXX. $& 
    XX..XX $& 
    .XXXX. 
  elseif ($1 == 9) return $& 
    .XXXX. $& 
    XX..XX $& 
    .XXXXX $& 
    ....XX $& 
    .XXXX. 
  elseif ($1 == A) return $& 
    .XXXX. $& 
    XX..XX $& 
    XXXXXX $& 
    XX..XX $& 
    XX..XX 
  elseif ($1 == B) return $& 
    XXXXX. $& 
    XX..XX $& 
    XXXXX. $& 
    XX..XX $& 
    XXXXX. 
  elseif ($1 == C) return $& 
    .XXXX. $& 
    XX..XX $& 
    XX.... $& 
    XX..XX $& 
    .XXXX. 
  elseif ($1 == D) return $& 
    XXXX.. $& 
    XX.XX. $& 
    XX..XX $& 
    XX..XX $& 
    XXXXX. 
  elseif ($1 == E) return $& 
    XXXXX $& 
    XX... $& 
    XXXX. $& 
    XX... $& 
    XXXXX 
  elseif ($1 == F) return $& 
    XXXXX $& 
    XX... $& 
    XXXX. $& 
    XX... $& 
    XX... 
  elseif ($1 == G) return $& 
    .XXXX. $& 
    XX.... $& 
    XX.XXX $& 
    XX..XX $& 
    .XXXXX 
  elseif ($1 == H) return $& 
    XX...XX $& 
    XX...XX $& 
    XXXXXXX $& 
    XX...XX $& 
    XX...XX 
  elseif ($1 == I) return $& 
    XXXX $& 
    .XX. $& 
    .XX. $& 
    .XX. $& 
    XXXX 
  elseif ($1 == J) return $& 
    ....XX $& 
    ....XX $& 
    ....XX $& 
    XX..XX $& 
    .XXXX. 
  elseif ($1 == K) return $& 
    XX..XX $& 
    XX.XX. $& 
    XXXX.. $& 
    XX.XX. $& 
    XX..XX 
  elseif ($1 == L) return $& 
    XX... $& 
    XX... $& 
    XX... $& 
    XX... $& 
    XXXXX 
  elseif ($1 == M) return $& 
    XX....XX $& 
    XXX..XXX $& 
    XXXXXXXX $& 
    XX.XX.XX $& 
    XX....XX 
  elseif ($1 == N) return $& 
    XX..XX $& 
    XXX.XX $& 
    XXXXXX $& 
    XX.XXX $& 
    XX..XX 
  elseif ($1 == O) return $& 
    .XXXX. $& 
    XX..XX $& 
    XX..XX $& 
    XX..XX $& 
    .XXXX. 
  elseif ($1 == P) return $& 
    XXXXX. $& 
    XX..XX $& 
    XXXXX. $& 
    XX.... $& 
    XX.... 
  elseif ($1 == Q) return $& 
    .XXXX.. $& 
    XX..XX. $& 
    XX..XX. $& 
    XX..XX. $& 
    .XXXXXX 
  elseif ($1 == R) return $& 
    XXXXX. $& 
    XX..XX $& 
    XXXXX. $& 
    XX..XX $& 
    XX..XX 
  elseif ($1 == S) return $& 
    .XXXX. $& 
    XX.... $& 
    .XXXX. $& 
    ....XX $& 
    XXXXX. 
  elseif ($1 == T) return $& 
    XXXXXX $& 
    ..XX.. $& 
    ..XX.. $& 
    ..XX.. $& 
    ..XX.. 
  elseif ($1 == U) return $& 
    XX..XX $& 
    XX..XX $& 
    XX..XX $& 
    XX..XX $& 
    .XXXX. 
  elseif ($1 == V) return $& 
    XX....XX $& 
    XX....XX $& 
    .XX..XX. $& 
    ..XXXX.. $& 
    ...XX... 
  elseif ($1 == W) return $& 
    XX...XX $& 
    XX...XX $& 
    XX.X.XX $& 
    XXXXXXX $& 
    .XX.XX. 
  elseif ($1 == X) return $& 
    XX...XX $& 
    .XX.XX. $& 
    ..XXX.. $& 
    .XX.XX. $& 
    XX...XX 
  elseif ($1 == Y) return $& 
    XX..XX $& 
    XX..XX $& 
    .XXXX. $& 
    ..XX.. $& 
    ..XX.. 
  elseif ($1 == Z) return $& 
    XXXXXX $& 
    ...XX. $& 
    ..XX.. $& 
    .XX... $& 
    XXXXXX 
  elseif ($1 == $chr(35)) return $& 
    .XX..XX. $& 
    XXXXXXXX $& 
    .XX..XX. $& 
    XXXXXXXX $& 
    .XX..XX. 
  elseif ($1 == ') return $& 
    .XX $& 
    XX. $& 
    ... $& 
    ... $& 
    ... 
  elseif ($1 == ") return $& 
    XX..XX $& 
    XX..XX $& 
    ...... $& 
    ...... $& 
    ...... 
  elseif ($1 == +) return $& 
    ...... $& 
    ..XX.. $& 
    XXXXXX $& 
    ..XX.. $& 
    ...... 
  elseif ($1 == =) return $& 
    ...... $& 
    XXXXXX $& 
    ...... $& 
    XXXXXX $& 
    ...... 
  elseif ($1 == -) return $& 
    ...... $& 
    ...... $& 
    XXXXXX $& 
    ...... $& 
    ...... 
  elseif ($1 == _) return $& 
    ...... $& 
    ...... $& 
    ...... $& 
    ...... $& 
    XXXXXX 
  elseif ($1 == ?) return $& 
    XXXXXX $& 
    ...... $& 
    ...... $& 
    ...... $& 
    ...... 
  elseif ($1 == ?) return $& 
    .XXX. $& 
    XX.XX $& 
    .XXX. $& 
    ..... $& 
    ..... 
  elseif ($1 == :) return $& 
    .. $& 
    XX $& 
    .. $& 
    XX $& 
    .. 
  elseif ($1 == !) return $& 
    XX $& 
    XX $& 
    XX $& 
    .. $& 
    XX 
  elseif ($1 == ?) return $& 
    XXX. $& 
    ..XX $& 
    .XX. $& 
    .... $& 
    .XX. 
  elseif ($1 == .) return $& 
    .. $& 
    .. $& 
    .. $& 
    .. $& 
    XX 
  elseif ($1 == /) return $& 
    ....XX $& 
    ...XX. $& 
    ..XX.. $& 
    .XX... $& 
    XX.... 
  elseif ($1 == \) return $& 
    XX.... $& 
    .XX... $& 
    ..XX.. $& 
    ...XX. $& 
    ....XX 
  elseif ($1 == $chr(40)) return $& 
    ...XX $& 
    .XX.. $& 
    XX... $& 
    .XX.. $& 
    ...XX 
  elseif ($1 == $chr(41)) return $& 
    XX... $& 
    ..XX. $& 
    ...XX $& 
    ..XX. $& 
    XX... 
  elseif ($1 == $chr(37)) return $& 
    XX..XX $& 
    ...XX. $& 
    ..XX.. $& 
    .XX... $& 
    XX..XX 
  elseif ($1 == [) return $& 
    XXXXX $& 
    XX... $& 
    XX... $& 
    XX... $& 
    XXXXX 
  elseif ($1 == ]) return $& 
    XXXXX $& 
    ...XX $& 
    ...XX $& 
    ...XX $& 
    XXXXX 
  elseif ($1 == |) return $& 
    .XX. $& 
    .XX. $& 
    .XX. $& 
    .XX. $& 
    .XX. 
  elseif ($1 == <) return $& 
    ....XX $& 
    ..XX.. $& 
    XX.... $& 
    ..XX.. $& 
    ....XX 
  elseif ($1 == >) return $& 
    XX.... $& 
    ..XX.. $& 
    ....XX $& 
    ..XX.. $& 
    XX.... 
  elseif ($1 == ?) return $& 
    .... $& 
    .... $& 
    .XX. $& 
    ..XX $& 
    XXX. 
  elseif ($1 == ,) return $& 
    ... $& 
    ... $& 
    XXX $& 
    .XX $& 
    XX. 
} 


; Returns all unsupported characters within a Big Text message 
; Supported characters are a-z, space, digits, #'"+=?:!?./\()%-[]<>|?, 
alias bigtext.unsupp { 
  var %res, %dummy = $regsub($1-, /[]a-z  0-9# $+ $chr(44) $+ '+=?:!?./\\()%[|<>_?"?-]/igS, $null, %res) 
  return %res 
} 

; Returns $true if a space should be added between two characters, 
;   or $false if not. 
; Note: This is here only for aesthetic purposes. :) 
alias bigtext.kern { 
  var %res $true 
  if ($regex($1-, /^(.|[_GDSQL-]T|[TPFVY7/"]J|T\.|L[1Y\\"]|[LTK<[]-|-[]>%\\]|S1|T4|\?\.|\.\?|[467L\\]?|?[J/]|L'|\/\/|\\\\|?J|[_?]?|[?T_]_|>\.|\.<)$/i)) %res = $false 
  return %res 
} 

; Takes an input string of the form: 
; .XX..XX....XX.XX.XXXXX 
; And formats it for display. 
alias bigtext.format { 
  var %res, %i 1, %previous 0, %current, %curcolor, %colregex /^(\d\d?(?:,\d\d?)?)/ 
  while (%i <= $len($1-)) { 
    if ($mid($1-, %i, 1) == $chr(3)) { 
      if ($regex(mtcol, $mid($1-, $calc(%i + 1), $mid($1-, $calc(%i + 1), 0)), %colregex)) { 
        if ($gettok($regml(mtcol, 1), 1, 44) != %curcolor) { 
          %curcolor = $gettok($regml(mtcol, 1), 1, 44) 
          if (%i != 1) && ($mid($1-, $calc(%i - 1), 1) == X) %res = %res $+ $chr(15) 
        } 
        inc %i $len($regml(mtcol, 1)) 
      } 
      elseif (%curcolor) { 
        %curcolor = 
        if (%i != 1) && ($mid($1-, $calc(%i - 1), 1) == X) %res = %res $+ $chr(15) 
      } 
    } 
    else { 
      %current = $iif($mid($1-, %i, 1) == ., 0, 1) 
      if (%previous != %current) { 
        %previous = %current 
        if (%curcolor) { 
          if (%current) %res = %res $+ $chr(3) $+ %curcolor $+ , $+ %curcolor 
          else %res = %res $+ $chr(3) 
        } 
        else %res = %res $+ $chr(22) 
      } 
      %res = %res $+ $chr(160) 
    } 
    inc %i 
  } 
  return %res 
} 

alias mtrainbow //mt $rainbow( $+ $1- $+ ) 

001 ; Colors, Reverse, Rainbow, and Massive Text.
002 ; For colors --- /colors <text here>
003 ; For reversed text --- /reverse <text here>
004 ; For reversed text as a /me --- /mereverse <text here>
005 ; For a rainbow of colors --- /rainbow <text here>
006 ; For massively huge text --- /mt <text here>
007 ; For a rainbow of massively huge text --- /mtrainbow <text here>
008  
009 alias colors {
  010   var %length = $len($1-)
  011   var %letter = 1
  012   while (%letter <= %length) {
    013     if ($mid($1-,%letter,1) == $chr(32)) {
      014       var %output = %output $+ &
      015       goto xxx
    016     } 
    017     var %output = %output $+  $+ $rand(03,013) $+ $mid($1-,%letter,1)
    018     :xxx
    019     inc %letter
  020   }
  021   var %output = $replace(%output,$chr(38),$chr(32))
  022   msg $active %output
023 }
024  
025  
026  
027 alias rev {
  028   var %len = $len($1-)
  029   var %return = $null
  030   while (%len > 0) {
    031     var %return = %return $+ $mid($1-,%len,1) $+ $chr(32)
    032     dec %len
  033   }
  034   return %return
035 }
036 alias reverse //say $rev( $1- )
037 alias mereverse //me $rev( $1- )
038  
039  
040  
041  
042 alias rainbow {
  043   var %pos = 1, %color = 04, %result = $chr(3)
  044   while (%pos <= $len($1-)) {
    045     %result = %result $+ %color $+ $mid($1-,%pos,1) $+ $chr(3)
    046     inc %pos
    047     %color = $nextcolor(%color)
  048   }
  049   if ($isid) return %result
  050   else say %result
051 }
052  
053 alias -l nextcolor {
  054   if ($$1 == 04) return 07
  055   elseif ($$1 == 07) return 08
  056   elseif ($$1 == 08) return 09
  057   elseif ($$1 == 09) return 11
  058   elseif ($$1 == 11) return 12
  059   elseif ($$1 == 12) return 02
  060   elseif ($$1 == 02) return 06
  061   elseif ($$1 == 06) return 13
  062   elseif ($$1 == 13) return 04
063 }
064  
065  
066  
067  
068  
069  
070 alias mt {
  071   if ($bigtext.unsupp($1-)) {
    072     echo -ac info * Characters not supported by Big Text present in your message: $bigtext.unsupp($1-)
    073     return
  074   }
  075   var %lia, %lib, %lic, %lid, %lie, %i 1, %text $strip($1-, bur), %colregex /^(\d\d?(?:,\d\d?)?)/
  076  
  077   var %regex = /(?<= $+ $chr(3) $+ [0-9]| $+ $chr(3) $+ [0-9][0-9]) $+ $chr(44) $+ \d\d?/g, %res, %dummy = $regsub(%text, %regex, $null, %text)
  078  
  079   while (%i <= $len(%text)) {
    080     if ($mid(%text, %i, 1) == $chr(3)) {
      081       var %lia $+(%lia, $chr(3)), %lib $+(%lib, $chr(3)), %lic $+(%lic, $chr(3)), %lid $+(%lid, $chr(3)), %lie $+(%lie, $chr(3))
      082       if ($mid(%text, $calc(%i + 1), 1) != $chr(32)) && ($regex(mtcol, $mid(%text, $calc(%i + 1), $mid(%text, $calc(%i + 1), 0)), %colregex)) {
        083         var %m $regml(mtcol, 1)
        084         var %lia %lia $+ %m, %lib %lib $+ %m, %lic %lic $+ %m, %lid %lid $+ %m, %lie %lie $+ %m
        085         inc %i $len(%m)
      086       }
    087     }
    088     else { 
      089       tokenize 32 $bigtext.char($mid(%text, %i, 1))
      090       var %lia $+(%lia, $1), %lib $+(%lib, $2), %lic $+(%lic, $3), %lid $+(%lid, $4), %lie $+(%lie, $5)
      091       ; if ($bigtext.kern($mid(%text, %i, 2))) {
        092       var %lia $+(%lia, .), %lib $+(%lib, .), %lic $+(%lic, .), %lid $+(%lid, .), %lie $+(%lie, .)
      093       ; }
    094     }
    095     inc %i
  096   }
  097   say $bigtext.format(%lia)
  098   say $bigtext.format(%lib)
  099   say $bigtext.format(%lic)
  100   say $bigtext.format(%lid)
  101   say $bigtext.format(%lie)
102 }
103  
104 ; You may customize this alias however you want to.
105 ; It is Big Text's font, used above.
106 ; The return value consists of dots and X's, to denote
107 ;   unlit and lit points in the font, respectively;
108 ;   there are 5 tokens of the same length, each
109 ;   corresponding to a line in the 5-line output.
110 ; Note how the . and X's look like the characters;
111 ;   you can use this to your advantage!
112 alias -l bigtext.char {
  113   if ($1 === $chr(32)) || ($1 === $null) return $&
    114     ... $&
    115     ... $&
    116     ... $&
    117     ... $&
    118     ...
  119   if ($1 === $chr(160)) return $&
    120     ..... $&
    121     ..... $&
    122     ..... $&
    123     ..... $&
    124     .....
  125   elseif ($1 == 0) return $&
    126     .XXXX. $&
    127     XX..XX $&
    128     XX.XXX $&
    129     XXX.XX $&
    130     .XXXX.
  131   elseif ($1 == 1) return $&
    132     .XXXX $&
    133     XX.XX $&
    134     ...XX $&
    135     ...XX $&
    136     ...XX
  137   elseif ($1 == 2) return $&
    138     XXXXX. $&
    139     ....XX $&
    140     ..XX.. $&
    141     XX.... $&
    142     XXXXXX
  143   elseif ($1 == 3) return $&
    144     XXXXX. $&
    145     ....XX $&
    146     .XXXX. $&
    147     ....XX $&
    148     XXXXX.
  149   elseif ($1 == 4) return $&
    150     .....XXX. $&
    151     ...XX.XX. $&
    152     .XX...XX. $&
    153     XXXXXXXXX $&
    154     ......XX.
  155   elseif ($1 == 5) return $&
    156     XXXXX $&
    157     XX... $&
    158     XXXX. $&
    159     ...XX $&
    160     XXXX.
  161   elseif ($1 == 6) return $&
    162     .XXXX. $&
    163     XX.... $&
    164     XXXXX. $&
    165     XX..XX $&
    166     .XXXX.
  167   elseif ($1 == 7) return $&
    168     XXXXXX $&
    169     ...XX. $&
    170     ..XX.. $&
    171     .XX... $&
    172     XX....
  173   elseif ($1 == 8) return $&
    174     .XXXX. $&
    175     XX..XX $&
    176     .XXXX. $&
    177     XX..XX $&
    178     .XXXX.
  179   elseif ($1 == 9) return $&
    180     .XXXX. $&
    181     XX..XX $&
    182     .XXXXX $&
    183     ....XX $&
    184     .XXXX.
  185   elseif ($1 == A) return $&
    186     .XXXX. $&
    187     XX..XX $&
    188     XXXXXX $&
    189     XX..XX $&
    190     XX..XX
  191   elseif ($1 == B) return $&
    192     XXXXX. $&
    193     XX..XX $&
    194     XXXXX. $&
    195     XX..XX $&
    196     XXXXX.
  197   elseif ($1 == C) return $&
    198     .XXXX. $&
    199     XX..XX $&
    200     XX.... $&
    201     XX..XX $&
    202     .XXXX.
  203   elseif ($1 == D) return $&
    204     XXXX.. $&
    205     XX.XX. $&
    206     XX..XX $&
    207     XX..XX $&
    208     XXXXX.
  209   elseif ($1 == E) return $&
    210     XXXXX $&
    211     XX... $&
    212     XXXX. $&
    213     XX... $&
    214     XXXXX
  215   elseif ($1 == F) return $&
    216     XXXXX $&
    217     XX... $&
    218     XXXX. $&
    219     XX... $&
    220     XX...
  221   elseif ($1 == G) return $&
    222     .XXXX. $&
    223     XX.... $&
    224     XX.XXX $&
    225     XX..XX $&
    226     .XXXXX
  227   elseif ($1 == H) return $&
    228     XX...XX $&
    229     XX...XX $&
    230     XXXXXXX $&
    231     XX...XX $&
    232     XX...XX
  233   elseif ($1 == I) return $&
    234     XXXX $&
    235     .XX. $&
    236     .XX. $&
    237     .XX. $&
    238     XXXX
  239   elseif ($1 == J) return $&
    240     ....XX $&
    241     ....XX $&
    242     ....XX $&
    243     XX..XX $&
    244     .XXXX.
  245   elseif ($1 == K) return $&
    246     XX..XX $&
    247     XX.XX. $&
    248     XXXX.. $&
    249     XX.XX. $&
    250     XX..XX
  251   elseif ($1 == L) return $&
    252     XX... $&
    253     XX... $&
    254     XX... $&
    255     XX... $&
    256     XXXXX
  257   elseif ($1 == M) return $&
    258     XX....XX $&
    259     XXX..XXX $&
    260     XXXXXXXX $&
    261     XX.XX.XX $&
    262     XX....XX
  263   elseif ($1 == N) return $&
    264     XX..XX $&
    265     XXX.XX $&
    266     XXXXXX $&
    267     XX.XXX $&
    268     XX..XX
  269   elseif ($1 == O) return $&
    270     .XXXX. $&
    271     XX..XX $&
    272     XX..XX $&
    273     XX..XX $&
    274     .XXXX.
  275   elseif ($1 == P) return $&
    276     XXXXX. $&
    277     XX..XX $&
    278     XXXXX. $&
    279     XX.... $&
    280     XX....
  281   elseif ($1 == Q) return $&
    282     .XXXX.. $&
    283     XX..XX. $&
    284     XX..XX. $&
    285     XX..XX. $&
    286     .XXXXXX
  287   elseif ($1 == R) return $&
    288     XXXXX. $&
    289     XX..XX $&
    290     XXXXX. $&
    291     XX..XX $&
    292     XX..XX
  293   elseif ($1 == S) return $&
    294     .XXXX. $&
    295     XX.... $&
    296     .XXXX. $&
    297     ....XX $&
    298     XXXXX.
  299   elseif ($1 == T) return $&
    300     XXXXXX $&
    301     ..XX.. $&
    302     ..XX.. $&
    303     ..XX.. $&
    304     ..XX..
  305   elseif ($1 == U) return $&
    306     XX..XX $&
    307     XX..XX $&
    308     XX..XX $&
    309     XX..XX $&
    310     .XXXX.
  311   elseif ($1 == V) return $&
    312     XX....XX $&
    313     XX....XX $&
    314     .XX..XX. $&
    315     ..XXXX.. $&
    316     ...XX...
  317   elseif ($1 == W) return $&
    318     XX...XX $&
    319     XX...XX $&
    320     XX.X.XX $&
    321     XXXXXXX $&
    322     .XX.XX.
  323   elseif ($1 == X) return $&
    324     XX...XX $&
    325     .XX.XX. $&
    326     ..XXX.. $&
    327     .XX.XX. $&
    328     XX...XX
  329   elseif ($1 == Y) return $&
    330     XX..XX $&
    331     XX..XX $&
    332     .XXXX. $&
    333     ..XX.. $&
    334     ..XX..
  335   elseif ($1 == Z) return $&
    336     XXXXXX $&
    337     ...XX. $&
    338     ..XX.. $&
    339     .XX... $&
    340     XXXXXX
  341   elseif ($1 == $chr(35)) return $&
    342     .XX..XX. $&
    343     XXXXXXXX $&
    344     .XX..XX. $&
    345     XXXXXXXX $&
    346     .XX..XX.
  347   elseif ($1 == ') return $&
    348     .XX $&
    349     XX. $&
    350     ... $&
    351     ... $&
    352     ...
  353   elseif ($1 == ") return $&
    354     XX..XX $&
    355     XX..XX $&
    356     ...... $&
    357     ...... $&
    358     ......
  359   elseif ($1 == +) return $&
    360     ...... $&
    361     ..XX.. $&
    362     XXXXXX $&
    363     ..XX.. $&
    364     ......
  365   elseif ($1 == =) return $&
    366     ...... $&
    367     XXXXXX $&
    368     ...... $&
    369     XXXXXX $&
    370     ......
  371   elseif ($1 == -) return $&
    372     ...... $&
    373     ...... $&
    374     XXXXXX $&
    375     ...... $&
    376     ......
  377   elseif ($1 == _) return $&
    378     ...... $&
    379     ...... $&
    380     ...... $&
    381     ...... $&
    382     XXXXXX
  383   elseif ($1 == ?) return $&
    384     XXXXXX $&
    385     ...... $&
    386     ...... $&
    387     ...... $&
    388     ......
  389   elseif ($1 == ?) return $&
    390     .XXX. $&
    391     XX.XX $&
    392     .XXX. $&
    393     ..... $&
    394     .....
  395   elseif ($1 == :) return $&
    396     .. $&
    397     XX $&
    398     .. $&
    399     XX $&
    400     ..
  401   elseif ($1 == !) return $&
    402     XX $&
    403     XX $&
    404     XX $&
    405     .. $&
    406     XX
  407   elseif ($1 == ?) return $&
    408     XXX. $&
    409     ..XX $&
    410     .XX. $&
    411     .... $&
    412     .XX.
  413   elseif ($1 == .) return $&
    414     .. $&
    415     .. $&
    416     .. $&
    417     .. $&
    418     XX
  419   elseif ($1 == /) return $&
    420     ....XX $&
    421     ...XX. $&
    422     ..XX.. $&
    423     .XX... $&
    424     XX....
  425   elseif ($1 == \) return $&
    426     XX.... $&
    427     .XX... $&
    428     ..XX.. $&
    429     ...XX. $&
    430     ....XX
  431   elseif ($1 == $chr(40)) return $&
    432     ...XX $&
    433     .XX.. $&
    434     XX... $&
    435     .XX.. $&
    436     ...XX
  437   elseif ($1 == $chr(41)) return $&
    438     XX... $&
    439     ..XX. $&
    440     ...XX $&
    441     ..XX. $&
    442     XX...
  443   elseif ($1 == $chr(37)) return $&
    444     XX..XX $&
    445     ...XX. $&
    446     ..XX.. $&
    447     .XX... $&
    448     XX..XX
  449   elseif ($1 == [) return $&
    450     XXXXX $&
    451     XX... $&
    452     XX... $&
    453     XX... $&
    454     XXXXX
  455   elseif ($1 == ]) return $&
    456     XXXXX $&
    457     ...XX $&
    458     ...XX $&
    459     ...XX $&
    460     XXXXX
  461   elseif ($1 == |) return $&
    462     .XX. $&
    463     .XX. $&
    464     .XX. $&
    465     .XX. $&
    466     .XX.
  467   elseif ($1 == <) return $&
    468     ....XX $&
    469     ..XX.. $&
    470     XX.... $&
    471     ..XX.. $&
    472     ....XX
  473   elseif ($1 == >) return $&
    474     XX.... $&
    475     ..XX.. $&
    476     ....XX $&
    477     ..XX.. $&
    478     XX....
  479   elseif ($1 == ?) return $&
    480     .... $&
    481     .... $&
    482     .XX. $&
    483     ..XX $&
    484     XXX.
  485   elseif ($1 == ,) return $&
    486     ... $&
    487     ... $&
    488     XXX $&
    489     .XX $&
    490     XX. 
491 }
492  
493  
494 ; Returns all unsupported characters within a Big Text message
495 ; Supported characters are a-z, space, digits, #'"+=?:!?./\()%-[]<>|?,
496 alias bigtext.unsupp {
  497   var %res, %dummy = $regsub($1-, /[]a-z  0-9# $+ $chr(44) $+ '+=?:!?./\\()%[|<>_?"?-]/igS, $null, %res)
  498   return %res
499 }
500  
501 ; Returns $true if a space should be added between two characters,
502 ;   or $false if not.
503 ; Note: This is here only for aesthetic purposes. :)
504 alias bigtext.kern {
  505   var %res $true
  506   if ($regex($1-, /^(.|[_GDSQL-]T|[TPFVY7/"]J|T\.|L[1Y\\"]|[LTK<[]-|-[]>%\\]|S1|T4|\?\.|\.\?|[467L\\]?|?[J/]|L'|\/\/|\\\\|?J|[_?]?|[?T_]_|>\.|\.<)$/i)) %res = $false
  507   return %res
508 }
509  
510 ; Takes an input string of the form:
511 ; .XX..XX....XX.XX.XXXXX
512 ; And formats it for display.
513 alias bigtext.format {
  514   var %res, %i 1, %previous 0, %current, %curcolor, %colregex /^(\d\d?(?:,\d\d?)?)/
  515   while (%i <= $len($1-)) {
    516     if ($mid($1-, %i, 1) == $chr(3)) {
      517       if ($regex(mtcol, $mid($1-, $calc(%i + 1), $mid($1-, $calc(%i + 1), 0)), %colregex)) {
        518         if ($gettok($regml(mtcol, 1), 1, 44) != %curcolor) {
          519           %curcolor = $gettok($regml(mtcol, 1), 1, 44)
          520           if (%i != 1) && ($mid($1-, $calc(%i - 1), 1) == X) %res = %res $+ $chr(15)
        521         }
        522         inc %i $len($regml(mtcol, 1))
      523       }
      524       elseif (%curcolor) {
        525         %curcolor =
        526         if (%i != 1) && ($mid($1-, $calc(%i - 1), 1) == X) %res = %res $+ $chr(15)
      527       }
    528     }
    529     else {
      530       %current = $iif($mid($1-, %i, 1) == ., 0, 1)
      531       if (%previous != %current) {
        532         %previous = %current
        533         if (%curcolor) {
          534           if (%current) %res = %res $+ $chr(3) $+ %curcolor $+ , $+ %curcolor
          535           else %res = %res $+ $chr(3)
        536         }
        537         else %res = %res $+ $chr(22)
      538       }
      539       %res = %res $+ $chr(160)
    540     }
    541     inc %i
  542   }
  543   return %res
544 }
545  
546 alias mtrainbow //mt $rainbow( $+ $1- $+ )
547   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547; Colors, Reverse, Rainbow, and Massive Text.
; For colors --- /colors <text here>
; For reversed text --- /reverse <text here>
; For reversed text as a /me --- /mereverse <text here>
; For a rainbow of colors --- /rainbow <text here>
; For massively huge text --- /mt <text here>
; For a rainbow of massively huge text --- /mtrainbow <text here>

alias colors {
  var %length = $len($1-)
  var %letter = 1
  while (%letter <= %length) {
    if ($mid($1-,%letter,1) == $chr(32)) {
      var %output = %output $+ &
      goto xxx
    } 
    var %output = %output $+  $+ $rand(03,013) $+ $mid($1-,%letter,1)
    :xxx
    inc %letter
  }
  var %output = $replace(%output,$chr(38),$chr(32))
  msg $active %output
}



alias rev {
  var %len = $len($1-)
  var %return = $null
  while (%len > 0) {
    var %return = %return $+ $mid($1-,%len,1) $+ $chr(32)
    dec %len
  }
  return %return
}
alias reverse //say $rev( $1- )
alias mereverse //me $rev( $1- )




alias rainbow {
  var %pos = 1, %color = 04, %result = $chr(3)
  while (%pos <= $len($1-)) {
    %result = %result $+ %color $+ $mid($1-,%pos,1) $+ $chr(3)
    inc %pos
    %color = $nextcolor(%color)
  }
  if ($isid) return %result
  else say %result
}

alias -l nextcolor {
  if ($$1 == 04) return 07
  elseif ($$1 == 07) return 08
  elseif ($$1 == 08) return 09
  elseif ($$1 == 09) return 11
  elseif ($$1 == 11) return 12
  elseif ($$1 == 12) return 02
  elseif ($$1 == 02) return 06
  elseif ($$1 == 06) return 13
  elseif ($$1 == 13) return 04
}






alias mt {
  if ($bigtext.unsupp($1-)) {
    echo -ac info * Characters not supported by Big Text present in your message: $bigtext.unsupp($1-)
    return
  }
  var %lia, %lib, %lic, %lid, %lie, %i 1, %text $strip($1-, bur), %colregex /^(\d\d?(?:,\d\d?)?)/

  var %regex = /(?<= $+ $chr(3) $+ [0-9]| $+ $chr(3) $+ [0-9][0-9]) $+ $chr(44) $+ \d\d?/g, %res, %dummy = $regsub(%text, %regex, $null, %text)

  while (%i <= $len(%text)) {
    if ($mid(%text, %i, 1) == $chr(3)) {
      var %lia $+(%lia, $chr(3)), %lib $+(%lib, $chr(3)), %lic $+(%lic, $chr(3)), %lid $+(%lid, $chr(3)), %lie $+(%lie, $chr(3))
      if ($mid(%text, $calc(%i + 1), 1) != $chr(32)) && ($regex(mtcol, $mid(%text, $calc(%i + 1), $mid(%text, $calc(%i + 1), 0)), %colregex)) {
        var %m $regml(mtcol, 1)
        var %lia %lia $+ %m, %lib %lib $+ %m, %lic %lic $+ %m, %lid %lid $+ %m, %lie %lie $+ %m
        inc %i $len(%m)
      }
    }
    else { 
      tokenize 32 $bigtext.char($mid(%text, %i, 1))
      var %lia $+(%lia, $1), %lib $+(%lib, $2), %lic $+(%lic, $3), %lid $+(%lid, $4), %lie $+(%lie, $5)
      ; if ($bigtext.kern($mid(%text, %i, 2))) {
      var %lia $+(%lia, .), %lib $+(%lib, .), %lic $+(%lic, .), %lid $+(%lid, .), %lie $+(%lie, .)
      ; }
    }
    inc %i
  }
  say $bigtext.format(%lia)
  say $bigtext.format(%lib)
  say $bigtext.format(%lic)
  say $bigtext.format(%lid)
  say $bigtext.format(%lie)
}

; You may customize this alias however you want to.
; It is Big Text's font, used above.
; The return value consists of dots and X's, to denote
;   unlit and lit points in the font, respectively;
;   there are 5 tokens of the same length, each
;   corresponding to a line in the 5-line output.
; Note how the . and X's look like the characters;
;   you can use this to your advantage!
alias -l bigtext.char {
  if ($1 === $chr(32)) || ($1 === $null) return $&
    ... $&
    ... $&
    ... $&
    ... $&
    ...
  if ($1 === $chr(160)) return $&
    ..... $&
    ..... $&
    ..... $&
    ..... $&
    .....
  elseif ($1 == 0) return $&
    .XXXX. $&
    XX..XX $&
    XX.XXX $&
    XXX.XX $&
    .XXXX.
  elseif ($1 == 1) return $&
    .XXXX $&
    XX.XX $&
    ...XX $&
    ...XX $&
    ...XX
  elseif ($1 == 2) return $&
    XXXXX. $&
    ....XX $&
    ..XX.. $&
    XX.... $&
    XXXXXX
  elseif ($1 == 3) return $&
    XXXXX. $&
    ....XX $&
    .XXXX. $&
    ....XX $&
    XXXXX.
  elseif ($1 == 4) return $&
    .....XXX. $&
    ...XX.XX. $&
    .XX...XX. $&
    XXXXXXXXX $&
    ......XX.
  elseif ($1 == 5) return $&
    XXXXX $&
    XX... $&
    XXXX. $&
    ...XX $&
    XXXX.
  elseif ($1 == 6) return $&
    .XXXX. $&
    XX.... $&
    XXXXX. $&
    XX..XX $&
    .XXXX.
  elseif ($1 == 7) return $&
    XXXXXX $&
    ...XX. $&
    ..XX.. $&
    .XX... $&
    XX....
  elseif ($1 == 8) return $&
    .XXXX. $&
    XX..XX $&
    .XXXX. $&
    XX..XX $&
    .XXXX.
  elseif ($1 == 9) return $&
    .XXXX. $&
    XX..XX $&
    .XXXXX $&
    ....XX $&
    .XXXX.
  elseif ($1 == A) return $&
    .XXXX. $&
    XX..XX $&
    XXXXXX $&
    XX..XX $&
    XX..XX
  elseif ($1 == B) return $&
    XXXXX. $&
    XX..XX $&
    XXXXX. $&
    XX..XX $&
    XXXXX.
  elseif ($1 == C) return $&
    .XXXX. $&
    XX..XX $&
    XX.... $&
    XX..XX $&
    .XXXX.
  elseif ($1 == D) return $&
    XXXX.. $&
    XX.XX. $&
    XX..XX $&
    XX..XX $&
    XXXXX.
  elseif ($1 == E) return $&
    XXXXX $&
    XX... $&
    XXXX. $&
    XX... $&
    XXXXX
  elseif ($1 == F) return $&
    XXXXX $&
    XX... $&
    XXXX. $&
    XX... $&
    XX...
  elseif ($1 == G) return $&
    .XXXX. $&
    XX.... $&
    XX.XXX $&
    XX..XX $&
    .XXXXX
  elseif ($1 == H) return $&
    XX...XX $&
    XX...XX $&
    XXXXXXX $&
    XX...XX $&
    XX...XX
  elseif ($1 == I) return $&
    XXXX $&
    .XX. $&
    .XX. $&
    .XX. $&
    XXXX
  elseif ($1 == J) return $&
    ....XX $&
    ....XX $&
    ....XX $&
    XX..XX $&
    .XXXX.
  elseif ($1 == K) return $&
    XX..XX $&
    XX.XX. $&
    XXXX.. $&
    XX.XX. $&
    XX..XX
  elseif ($1 == L) return $&
    XX... $&
    XX... $&
    XX... $&
    XX... $&
    XXXXX
  elseif ($1 == M) return $&
    XX....XX $&
    XXX..XXX $&
    XXXXXXXX $&
    XX.XX.XX $&
    XX....XX
  elseif ($1 == N) return $&
    XX..XX $&
    XXX.XX $&
    XXXXXX $&
    XX.XXX $&
    XX..XX
  elseif ($1 == O) return $&
    .XXXX. $&
    XX..XX $&
    XX..XX $&
    XX..XX $&
    .XXXX.
  elseif ($1 == P) return $&
    XXXXX. $&
    XX..XX $&
    XXXXX. $&
    XX.... $&
    XX....
  elseif ($1 == Q) return $&
    .XXXX.. $&
    XX..XX. $&
    XX..XX. $&
    XX..XX. $&
    .XXXXXX
  elseif ($1 == R) return $&
    XXXXX. $&
    XX..XX $&
    XXXXX. $&
    XX..XX $&
    XX..XX
  elseif ($1 == S) return $&
    .XXXX. $&
    XX.... $&
    .XXXX. $&
    ....XX $&
    XXXXX.
  elseif ($1 == T) return $&
    XXXXXX $&
    ..XX.. $&
    ..XX.. $&
    ..XX.. $&
    ..XX..
  elseif ($1 == U) return $&
    XX..XX $&
    XX..XX $&
    XX..XX $&
    XX..XX $&
    .XXXX.
  elseif ($1 == V) return $&
    XX....XX $&
    XX....XX $&
    .XX..XX. $&
    ..XXXX.. $&
    ...XX...
  elseif ($1 == W) return $&
    XX...XX $&
    XX...XX $&
    XX.X.XX $&
    XXXXXXX $&
    .XX.XX.
  elseif ($1 == X) return $&
    XX...XX $&
    .XX.XX. $&
    ..XXX.. $&
    .XX.XX. $&
    XX...XX
  elseif ($1 == Y) return $&
    XX..XX $&
    XX..XX $&
    .XXXX. $&
    ..XX.. $&
    ..XX..
  elseif ($1 == Z) return $&
    XXXXXX $&
    ...XX. $&
    ..XX.. $&
    .XX... $&
    XXXXXX
  elseif ($1 == $chr(35)) return $&
    .XX..XX. $&
    XXXXXXXX $&
    .XX..XX. $&
    XXXXXXXX $&
    .XX..XX.
  elseif ($1 == ') return $&
    .XX $&
    XX. $&
    ... $&
    ... $&
    ...
  elseif ($1 == ") return $&
    XX..XX $&
    XX..XX $&
    ...... $&
    ...... $&
    ......
  elseif ($1 == +) return $&
    ...... $&
    ..XX.. $&
    XXXXXX $&
    ..XX.. $&
    ......
  elseif ($1 == =) return $&
    ...... $&
    XXXXXX $&
    ...... $&
    XXXXXX $&
    ......
  elseif ($1 == -) return $&
    ...... $&
    ...... $&
    XXXXXX $&
    ...... $&
    ......
  elseif ($1 == _) return $&
    ...... $&
    ...... $&
    ...... $&
    ...... $&
    XXXXXX
  elseif ($1 == ?) return $&
    XXXXXX $&
    ...... $&
    ...... $&
    ...... $&
    ......
  elseif ($1 == ?) return $&
    .XXX. $&
    XX.XX $&
    .XXX. $&
    ..... $&
    .....
  elseif ($1 == :) return $&
    .. $&
    XX $&
    .. $&
    XX $&
    ..
  elseif ($1 == !) return $&
    XX $&
    XX $&
    XX $&
    .. $&
    XX
  elseif ($1 == ?) return $&
    XXX. $&
    ..XX $&
    .XX. $&
    .... $&
    .XX.
  elseif ($1 == .) return $&
    .. $&
    .. $&
    .. $&
    .. $&
    XX
  elseif ($1 == /) return $&
    ....XX $&
    ...XX. $&
    ..XX.. $&
    .XX... $&
    XX....
  elseif ($1 == \) return $&
    XX.... $&
    .XX... $&
    ..XX.. $&
    ...XX. $&
    ....XX
  elseif ($1 == $chr(40)) return $&
    ...XX $&
    .XX.. $&
    XX... $&
    .XX.. $&
    ...XX
  elseif ($1 == $chr(41)) return $&
    XX... $&
    ..XX. $&
    ...XX $&
    ..XX. $&
    XX...
  elseif ($1 == $chr(37)) return $&
    XX..XX $&
    ...XX. $&
    ..XX.. $&
    .XX... $&
    XX..XX
  elseif ($1 == [) return $&
    XXXXX $&
    XX... $&
    XX... $&
    XX... $&
    XXXXX
  elseif ($1 == ]) return $&
    XXXXX $&
    ...XX $&
    ...XX $&
    ...XX $&
    XXXXX
  elseif ($1 == |) return $&
    .XX. $&
    .XX. $&
    .XX. $&
    .XX. $&
    .XX.
  elseif ($1 == <) return $&
    ....XX $&
    ..XX.. $&
    XX.... $&
    ..XX.. $&
    ....XX
  elseif ($1 == >) return $&
    XX.... $&
    ..XX.. $&
    ....XX $&
    ..XX.. $&
    XX....
  elseif ($1 == ?) return $&
    .... $&
    .... $&
    .XX. $&
    ..XX $&
    XXX.
  elseif ($1 == ,) return $&
    ... $&
    ... $&
    XXX $&
    .XX $&
    XX. 
}


; Returns all unsupported characters within a Big Text message
; Supported characters are a-z, space, digits, #'"+=?:!?./\()%-[]<>|?,
alias bigtext.unsupp {
  var %res, %dummy = $regsub($1-, /[]a-z  0-9# $+ $chr(44) $+ '+=?:!?./\\()%[|<>_?"?-]/igS, $null, %res)
  return %res
}

; Returns $true if a space should be added between two characters,
;   or $false if not.
; Note: This is here only for aesthetic purposes. :)
alias bigtext.kern {
  var %res $true
  if ($regex($1-, /^(.|[_GDSQL-]T|[TPFVY7/"]J|T\.|L[1Y\\"]|[LTK<[]-|-[]>%\\]|S1|T4|\?\.|\.\?|[467L\\]?|?[J/]|L'|\/\/|\\\\|?J|[_?]?|[?T_]_|>\.|\.<)$/i)) %res = $false
  return %res
}

; Takes an input string of the form:
; .XX..XX....XX.XX.XXXXX
; And formats it for display.
alias bigtext.format {
  var %res, %i 1, %previous 0, %current, %curcolor, %colregex /^(\d\d?(?:,\d\d?)?)/
  while (%i <= $len($1-)) {
    if ($mid($1-, %i, 1) == $chr(3)) {
      if ($regex(mtcol, $mid($1-, $calc(%i + 1), $mid($1-, $calc(%i + 1), 0)), %colregex)) {
        if ($gettok($regml(mtcol, 1), 1, 44) != %curcolor) {
          %curcolor = $gettok($regml(mtcol, 1), 1, 44)
          if (%i != 1) && ($mid($1-, $calc(%i - 1), 1) == X) %res = %res $+ $chr(15)
        }
        inc %i $len($regml(mtcol, 1))
      }
      elseif (%curcolor) {
        %curcolor =
        if (%i != 1) && ($mid($1-, $calc(%i - 1), 1) == X) %res = %res $+ $chr(15)
      }
    }
    else {
      %current = $iif($mid($1-, %i, 1) == ., 0, 1)
      if (%previous != %current) {
        %previous = %current
        if (%curcolor) {
          if (%current) %res = %res $+ $chr(3) $+ %curcolor $+ , $+ %curcolor
          else %res = %res $+ $chr(3)
        }
        else %res = %res $+ $chr(22)
      }
      %res = %res $+ $chr(160)
    }
    inc %i
  }
  return %res
}

alias mtrainbow //mt $rainbow( $+ $1- $+ )