ircN for mIRC — File Browser

ircNformIRCv6.0 / ircNformIRCv6.0 / ircn / SYSTEM / Irc2.mrc

Irc2.mrc — 27.5 KB — Download this file

;%%%%%%%%%%%%%%%%%%%%%%%%
;script irc2
;version 2.1
;author Chutzpah
;email chutzpah@ircn.com
;url http://www.ircN.com
;%%%%%%%%%%%%%%%%%%%%%%%%
on 1:input: {
  if ($left($active,5) == @irc2) {
    if ($left($1,1) != /) {
      if ($active == @irc2 Status:) i2.secho $c-c(info,*** You're not on a channel)
      elseif (($right($1,1) == %irc2.nch) && (%irc2.nc == on)) {
        set %i2.nctmp %irc2.nlb $+ $i2.nc($left($1,$sub($len($1),1))) $+ %irc2.nrb
        i2.msg $i2.active %i2.nctmp $2-
        i2.techo $i2.active < $+ $c-c(highlight, [ %i2.me ] ) $+ > %i2.nctmp $2-
        unset %i2.nctmp
      }
      else {
        i2.msg $i2.active $1-
        i2.techo $i2.active < $+ $c-c(highlight, [ %i2.me ] ) $+ > $1-
      }
      halt
    }
    else {
      if (($1 == /j) || ($1 == /join)) {
        if ($2) i2.join $2
        else i2.iecho Syntax: $1 <channel>
      }
      elseif (($1 == /p) || ($1 == /part)) {
        if ($2) i2.part $2
        elseif ($left($i2.active,1) == $chr(35)) i2.part $i2.active
        else i2.iecho Syntax: $1 <channel>
      }
      elseif (($1 == /m) || ($1 == /msg)) { i2.pmsg $i2.nc($2) $3- | set %rel.sm [msg( $+ $$2 $+ )] $3- }
      elseif (($1 == /n) || ($1 == /notice)) {
        if (($2) && ($2 !ischan)) i2.notice $i2.nc($2) $3- | set %rel.sn [not( $+ $$2 $+ )] $3-
        elseif ($2 ischan) {
          i2.quote notice $2 : $+ $3-
          i2.techo -> $chr(91) $+ $2 $+ $chr(93) $3-
          set %rel.sn [not( $+ $$2 $+ )] $3-
        }
      }
      elseif ($1 == /ctcp) { i2.ctcp $i2.nc($2) $3- | set %rel.sc [ctcp( $+ $$2 $+ )] $upper($3) $4- }
      elseif ($1 == /ping) {
        if ($2) {
          i2.ctcp $i2.nc($2) ping
          %rel.sc [ctcp( $+ $2 $+ )] PING
        }
        elseif (Status !isin $active) {
          i2.ctcp $i2.active ping
          set %rel.sc [ctcp( $+ $i2.active $+ )] PING
        }
        else i2.iecho Syntax: /ping <nick|chan>
      }
      elseif (($1 == /version) || ($1 == /ver)) {
        if ($2) { i2.ctcp $i2.nc($2) version | %rel.sc [ctcp( $+ $2 $+ )] VERSION }
        elseif (Status !isin $active) { i2.ctcp $i2.active version | set %rel.sc [ctcp( $+ $2 $+ )] VERSION }
        else i2.iecho Syntax: /ver <nick|chan>
      }
      elseif ($1 == /nick) { if ($2) i2.quote nick $strip($2) | else i2.iecho Syntax: /nick <nick> }
      elseif ($1 == /cycle) {
        if ($2) { i2.part $2 | i2.join $2 }
        elseif (Status !isin $active) { i2.part $i2.active | i2.join $i2.active }
        else i2.iecho Syntax: /cycle <chan>
      }
      elseif ($1 == /ban) {
        if (($2 ischan) && ($3 !ischan)) {
          set %i2.banc $2
          set %i2.bann $4
          i2.quote userhost $3
        }
        elseif ($2 !ischan) {
          set %i2.banc $i2.active
          set %i2.bann $3
          i2.quote userhost $i2.nc($2)
        }
        else i2.iecho Syntax: /ban <channel> <nick>
      }
      elseif ($1 == /op) { if ($2) i2.mode $i2.active + $+ $str(o,%modesonline) $2- | else i2.syntax $1 }
      elseif ($1 == /dop) { if ($2) i2.mode $i2.active - $+ $str(o,%modesonline) $2- | else i2.syntax $1 }
      elseif ($1 == /v) { if ($2) i2.mode $i2.active + $+ $str(v,%modesonline) $2- | else i2.syntax $1 }
      elseif ($1 == /dv) { if ($2) i2.mode $i2.active - $+ $str(v,%modesonline) $2- | else i2.syntax $1 }
      elseif (($1 == /k) || ($1 == /kick)) {
        if ($2 ischan) {
          if ($4) relay kick $2 $3 : $+ $4-
          else relay kick $2 $3
        }
        elseif ($2) {
          if ($3) i2.quote kick $i2.active $i2.nc($2) : $+ $3-
          else i2.quote kick $i2.active $2
        }
        else i2.syntax $1
      }
      elseif ($1 == /i) { if ($2) i2.quote invite $$2 $i2.active | else i2.syntax $1 }
      elseif ($1 == /kb) {
        if (($2) && ($2 !ischan) && ($3)) {
          set %i2.kb $2
          set %i2.kbchan $3
          if ($4) set %i2.kbr : $+ $4-
          else set %i2.kbr : $+ %shitkick
          i2.quote userhost $2
        }
        elseif ($2) {
          set %i2.kb $i2.nc($2)
          set %i2.kbchan $i2.active
          if ($3) set %i2.kbr : $+ $3-
          else set %i2.kbr : $+ %shitkick
          i2.quote userhost %i2.kb
        }
        else i2.iecho Syntax: /kb <nick> <chan>
      }
      elseif ($1 == /bk) {
        if (($2) && ($2 !ischan) && ($3)) {
          set %i2.bk $2
          set %i2.bkchan $3
          if ($4) set %i2.bkr : $+ $4-
          else set %i2.bkr : $+ %shitkick
          i2.quote userhost $2
        }
        elseif ($2) {
          set %i2.bk $i2.nc($2)
          set %i2.bkchan $i2.active
          if ($3) set %i2.bkr : $+ $3-
          else set %i2.bkr : $+ %shitkick
          i2.quote userhost %i2.bk
        }
        else i2.iecho Syntax: /bk <nick> <chan>
      }
      elseif ($1 == /save) {
        if ($left($i2.active,1) == $chr(35)) {
          if (%irc2.names == on) set %i2cloc $window($active).x $window($active).y $pls($window($active).w,126) $window($active).h
          else set %i2cloc $swlc($active)
          i2.iecho Saved irc2 channel window locations.
        }
        elseif ($i2.active == Status:) {
          set %i2loc $swlc(@irc2 Status:)
          i2.iecho Saved irc2 status window location.
        }
        else {
          set %i2qloc $swlc($active)
          i2.iecho Saved irc2 query window location.
        }
      }
      elseif ($1 == /topic) {
        if ($3) i2.quote topic $2 : $+ $3-
        else i2.quote topic $$2
      }
      elseif (($1 == /me) && ($2)) {
        i2.quote privmsg $i2.active :ACTION $2- $+ 
        i2.techo $i2.active $c-c(action,*  [ %i2.me $2- ] )
      }
      elseif ($1 == /quit) { quit $2- }
      elseif ($1 == /exit) { exit $2- }
      elseif ($1 == /server) { if (($2 != %i2.server) && ($2)) i2.changeserver $2 | elseif ($2) i2.iecho Syntax: /server <server> | else halt }
      elseif (($1 == /invite) && ($3 ischan)) { i2.quote invite $$2 #$$3 }
      elseif (($1 == /w) || ($1 == /whois) && ($2)) { i2.quote whois $$2 }
      elseif (($1 == /wi) && ($2)) { i2.quote whois $$2 $$2 }
      elseif (($1 == /who) && ($2)) {
        set %i2.whochan on
        if ($2) i2.quote who $2
        else i2.quote who $i2.active
      }
      elseif ($1 == /t) {
        if ($2) i2.quote topic $i2.active : $+ $2-
        else i2.quote topic $i2.active
      }
      elseif (($1 == /ame) && ($2)) i2.ame $2-
      elseif (($1 == /amsg) && ($2)) i2.amsg $2-
      elseif (($1 == /away) || ($1 == /setaway)) {
        if ($2) {
          set %i2.awaytime $ctime
          i2.quote away : $+ $left($2-,45) (since $left($day,3) $replace($adate,/,-) $atime $+ )
          i2.ame is away: ( $+ $2- $+ )
        }
        else { i2.quote away }
      }
      elseif (($1 == /back) || ($1 == /setback)) {
        if ($2) i2.ame has returned,  $+ $2- $+ . (gone $rsc($duration($sub($ctime,%i2.awaytime))) $+ )
        else i2.ame has returned. (gone $rsc($duration($sub($ctime,%i2.awaytime))) $+ )
        unset %i2.awaytime
        i2.quote away
      }
      elseif ($1 == /sv) {
        i2.msg $i2.active %irc2.ver - [ $+ %ver $+ ] $i2-names
        i2.techo $i2.active < $+ %i2.me $+ > %irc2.ver - [ $+ %ver $+ ] $i2-names
      }
      elseif ($1 == /av) {
        if (%aver) {
          i2.msg $i2.active %irc2.ver - ( $+ %ver $+ ) - [ $+ %aver $+ ] -
          i2.techo $i2.active < $+ $c-c(highlight, [ %i2.me ] ) $+ > %irc2.ver - ( $+ %ver $+ ) - [ $+ %aver $+ ] -
        }
        else i2.iecho No addons were detected.
      }
      elseif ($1 == /tv) {
        if (%theme == on) {
          i2.msg $i2.active %irc2.ver - ( $+ %ver $+ ) - [ $+ $themefn $+ ] -
          i2.techo $i2.active < $+ $c-c(highlight, [ %i2.me ] ) $+ > %irc2.ver - ( $+ %ver $+ ) - [ $+ $themefn $+ ] -
        }
        else i2.iecho No theme loaded.
      }
      elseif ($1 == /relm) {
        if (($2) && ($2 ischan) && ($2 isin %i2.chans)) { i2.msg $2 : $+ %rel.msg | i2.techo $2 < $+ %i2.me $+> %rel.msg }
        elseif ($2) msg $2 %rel.msg
        else { i2.quote privmsg $i2.active : $+ %rel.msg | i2.techo $i2.active < $+ $c-c(highlight, [ %i2.me ] ) $+ > %rel.msg }
      }
      elseif ($1 == /reln) {
        if (($2) && ($2 ischan) && ($2 isin %i2.chans)) { i2.msg $2 : $+ %rel.not | i2.techo $2 < $+ %i2.me $+> %rel.not }
        elseif ($2) msg $2 %rel.not
        else { i2.quote privmsg $i2.active : $+ %rel.not | i2.techo $i2.active < $+ $c-c(highlight, [ %i2.me ] ) $+ > %rel.not }
      }
      elseif ($1 == /relc) {
        if (($2) && ($2 ischan) && ($2 isin %i2.chans)) { i2.msg $2 : $+ %rel.ctcp | i2.techo $2 < $+ %i2.me $+> %rel.ctcp }
        elseif ($2) msg $2 %rel.ctcp
        else { i2.quote privmsg $i2.active : $+ %rel.ctcp | i2.techo $i2.active < $+ $c-c(highlight, [ %i2.me ] ) $+ > %rel.ctcp }
      }
      elseif ($1 == /relsm) {
        if (($2) && ($2 ischan) && ($2 isin %i2.chans)) { i2.msg $2 : $+ %rel.sm | i2.techo $2 < $+ %i2.me $+> %rel.sm }
        elseif ($2) msg $2 %rel.sm
        else { i2.quote privmsg $i2.active : $+ %rel.sm | i2.techo $i2.active < $+ $c-c(highlight, [ %i2.me ] ) $+ > %rel.sm }
      }
      elseif ($1 == /relsn) {
        if (($2) && ($2 ischan) && ($2 isin %i2.chans)) { i2.msg $2 : $+ %rel.sn | i2.techo $2 < $+ %i2.me $+> %rel.sn }
        elseif ($2) msg $2 %rel.sn
        else { i2.quote privmsg $i2.active : $+ %rel.sn | i2.techo $i2.active < $+ $c-c(highlight, [ %i2.me ] ) $+ > %rel.sn }
      }
      elseif ($1 == /relsc) {
        if (($2) && ($2 ischan) && ($2 isin %i2.chans)) { i2.msg $2 : $+ %rel.sc | i2.techo $2 < $+ %i2.me $+> %rel.sc }
        elseif ($2) msg $2 %rel.sc
        else { i2.quote privmsg $i2.active : $+ %rel.sc | i2.techo $i2.active < $+ $c-c(highlight, [ %i2.me ] ) $+ > %rel.sc }
      }
      elseif ($1 == /quote) { i2.quote $2- }
      elseif ($1 == /names) {
        if ($2) i2.names $2
        else i2.names $i2.active
      }
      
      elseif ($1 == /help) help
      elseif ($left($1,2) == /.) $right($1,$sub($len($1),2)) $2-
      elseif ($left($1,3) == //.) $right($1,$sub($len($1),2)) [ [ $2- ] ]
      else i2.quote $right($1,$sub($len($1),1)) $2-
      halt
    }
  }
}
on 1:chatclose {
  if (($nick == %i2.me.n) && (%irc2 == on)) {
    i2.secho $c-c(info,*** Disconnected)
    i2 off
  }
}
#connect on
on 1:chatopen {
  if ($nick == $me) {
    set %i2.con on
    if (%irc2.nick) set %i2.me $left(%irc2.nick,9)
    else set %i2.me $left($me,8) $+ -
    set %i2.me.h $c-c(highlight, [ %i2.me ] )
    set %i2.me.n $nick
    set %i2.con on
    msg =$nick NICK %i2.me
    msg =$nick USER [ $readini mirc.ini ident userid ] $chr(34) $+ $host $+ $chr(34) $chr(34) $+ %i2.server $+ $chr(34) : $+ [ $readini mirc.ini mirc user ]
    if ($window(@irc2 Status:)) titlebar @irc2 Status: %i2.me
    else i2 off
  }
}
on 1:chat:* {
  if ($nick != %i2.me.n) halt
  elseif ($2 == 465) { i2.saecho $c-c(info,*** Possible Kline, please try another server.) | halt }
  elseif ($1 == PING) { i2.quote PONG $2- | halt }
  elseif ($2 == 001) { i2.saecho - $gettext($4-) | halt }
  elseif (($2 == 003) || ($2 == 251) || ($2 == 255) || ($2 == 250)) { i2.secho - $gettext($4-) | halt }
  elseif ($2 == 002) {
    set %i2.tmp $gettok($remove($7,$chr(44)),1,91)
    if (($count(%i2.tmp,$chr(46)) >= 2) && ($len(%i2.tmp) >= 10)) set %i2.servername $gettok($remove($7,$chr(44)),1,91)
    i2.secho - $gettext($4-)
    unset %i2.tmp
    i2.supdate
    halt
  }
  elseif (($2 == 254) || ($2 == 252)) { i2.secho - $4 $gettext($5-) | halt }
  elseif ($2 == 004) { i2.saecho - $4- | halt }
  elseif ($2 == 372) { i2.saecho $gettext($4-) | halt }
  elseif ($2 == 375) { i2.saecho - | i2.secho - $5- | halt }
  elseif ($2 == 433) {
    if ((%irc2.altnick) && (%i2.tried.altnick == $null)) {
      set %i2.me %irc2.altnick
      set %i2.tried.altnick true
    }
    else set %i2.me $left($me,8) $+ $rand(a,z)
    set %i2.me.h $c-c(highlight, [ %i2.me ] )
    msg =$nick NICK %i2.me
    halt
  }
  elseif ($2 == 376) {
    i2.saecho -
    i2.saecho - $gettext($4-)
    unset %i2.tried.altnick
    set %i2.msg ""
    set %i2.away off
    set %i2.awaytime ""
    i2.mode %i2.me %umode
    .disable #connect
    tsound connect
    halt
  }
  else halt
}
#connect end
on 1:chat:* {
  if ($nick != %i2.me.n) halt
  elseif ($2 == PRIVMSG) {
    if ($3 == %i2.me) {
      if ($mid($4,2,1) == ) {
        if (DCC isin $4) {
          if ($5 == SEND) {
            if (($me) && ($server)) {
              if (%irc2.dcc.get == auto) {
                .quote privmsg $me $4- $+ 
                i2.iecho Fowarding $hc(SEND) from $hc($getnick($1)) ( $+ $sc($getadd($1)) $+ ) of $hc($6) $chr(91) $+ $sc($alof($8)) $+ $chr(93) to $hc($me) $+ .
              }
              elseif (%irc2.dcc.get == ask) {
                i2.iecho $hc(SEND) from $hc($getnick($1)) ( $+ $sc($getadd($1)) $+ ) of $hc($6) $chr(91) $+ $sc($alof($8)) $+ $chr(93)
                i2.iecho Press F3 within next 30 secs to accept.
                set %i2.evt .quote privmsg $me $4-
                .timer 1 30 if (%i2.evt == .quote privmsg $me $4-) unset %i2.evt
              }
              elseif (%irc2.dcc.get == off) i2.iecho Ignored $hc(SEND) from $hc($getnick($1)) ( $+ $sc($getadd($1)) $+ )
            }
            else i2.quote privmsg $getnick($1) $4- $+ 
          }
          elseif ($5 == CHAT) {
            if (%irc2.dcc.chat == auto) {
              set %i2.chat.dns on
              dns $gettok($getadd($1),2,64)
              i2.iecho Fowarding $hc(CHAT) from $hc($getnick($1)) ( $+ $sc($getadd($1)) $+ ) to $hc($me) $+ .
            }
            elseif (%irc2.dcc.chat == ask) {
              i2.iecho $hc(CHAT) from $hc($getnick($1)) ( $+ $sc($getadd($1)) $+ )
              i2.iecho Press F3 within next 30 secs to accept.
              set %i2.evt dns $gettok($getadd($1),2,64)
              set %i2.chat.dns on
              .timer 1 30 if (%i2.evt == dns $gettok($getadd($1),2,64)) unset %i2.evt
              .timer 1 40 unset %i2.chat.dns
            }
            elseif (%irc2.dcc.chat == off) i2.iecho Ignored $hc(CHAT) from $hc($getnick($1)) ( $+ $sc($getadd($1)) $+ )
          }
        }
        else {
          if ((PING isin $4) && ($remove($5,) isnum)) { set %i2.rel.ctcp [ $+ $getnick($1) $+ ( $+ $getadd($1) $+ )] PING
            i2.quote notice $getnick($1) :PING $remove($5,) $+ 
            i2.iecho CTCP $sc(PING) request by $hc($getnick($1)) at $sc($atime) $+ .
            halt
          }
          elseif (VER isin $4) i2.quote notice $getnick($1) :VERSION %irc2.ver - ircN for mIRC ... $+ $read $td(quotes.txt) $+ 
          set %i2.rel.ctcp [ $+ $getnick($1) $+ ( $+ $getadd($1) $+ )] $remove($remove($4-,:),)
          if ($5) i2.iecho CTCP $sc($remove($4,:)) request by $ac($getnick($1)) $+ : $sc($5-)
          else i2.iecho CTCP $sc($remove($4,:)) request by $ac($getnick($1)) at $sc($atime) $+ .
        }
        halt
      }
      else {
        if ($getnick($1) !isin %i2.msg) set %i2.msg %i2.msg $getnick($1)
        set %i2.rel.msg $getnick($1) ( $+ $getadd($1) $+ ) $gettext($4-)
        if (%actmsg == on) i2.aecho [ $+ $ac($getnick($1)) $+ : $+ $sc($getadd($1)) $+ ] $gettext($4-)
        i2.techo $getnick($1) < $+ $getnick($1) $+ > $gettext($4-)
        titlebar $i2.win($getnick($1)) ( $+ $getadd($1) $+ )
        tsound msg
        halt
      }
    }
    else {
      if (: isin $4) {
        if ($4 == :ACTION) {
          if (%i2.me isin $4-) { i2.techo $3 $c-c(action,* [ $getnick($1) $remove($replace($5-,%i2.me,%i2.me.h),) ] ) | halt }
          else { i2.techo $3 $c-c(action,* [ $getnick($1) $replace($remove($5-,),$chr(44),$chr(255) $+ $chr(001) $+ $chr(002)) ] ) | halt }
        }
        else {
          set %i2.rel.ctcp [ $+ $getnick($1) $+ ( $+ $getadd($1) $+ )] $remove($remove($4-,:),)
          i2.iecho $sc($getnick($1)) has requested a channel $sc($remove($gettext($4),)) on $sc($3) $+ .
          halt
        }
      }
      elseif (%i2.me isin $4-) i2.techo $3 < $+ $getnick($1) $+ > $replace($gettext($4-),%i2.me,%i2.me.h)
      else i2.techo $3 < $+ $getnick($1) $+ > $gettext($4-)
    }
  }
  elseif ($2 == NOTICE) {
    if ($3 == %i2.me) {
      if ($mid($4,1,2) == :) {
        if ((PING isin $4) && ($remove($5,) isnum)) {
          i2.iecho CTCP $sc(PING) reply by $hc($getnick($1)) $+ : $iduration($round($div($sub($ticks,$remove($5,)),1000),2))
          halt
        }
        if ($5) {
          i2.iecho CTCP $sc($remove($4,:)) reply by $hc($getnick($1)) $+ : $sc($5-)
          else i2.iecho CTCP $sc($gettext($4)) reply by $hc($getnick($1)) at $sc($atime) $+ .
          halt
        }
      }
      else {
        set %i2.rel.not - $+ $getnick($1) $+ ( $+ $getadd($1) $+ )- $gettext($4-)
        if (%irc2.names == on) i2.wecho $getnick($1) $c-c(notice, [ - $+ [ $getnick($1)) ] $+ - [ $gettext($4-) ] ] )
        else i2.aecho - $+ $hc($getnick($1)) $+ : $+ $hc($getadd($1)) $+ - $gettext($4-)
        tsound notice
      }
      halt
    }
  }
  elseif ($2 == JOIN) {
    if ($getnick($1) == %i2.me) {
      if (%irc2.names == on) {
        window -als $i2.nwin($nocolon($3)) $pls($gettok(%i2cloc,1,32),$sub($gettok(%i2cloc,3,32),126)) $gettok(%i2cloc,2,32) 126 $gettok(%i2cloc,4,32) $sys(i2names.pop) Courier New 411
        window -ae $i2.win($nocolon($3)) $gettok(%i2cloc,1,32) $gettok(%i2cloc,2,32) $sub($gettok(%i2cloc,3,32),126) $gettok(%i2cloc,4,32) $sys(i2chan.pop) Courier New 411
      }
      else window -ae $i2.win($nocolon($3)) %i2cloc $sys(i2chan.pop) Courier New 411
      echo $i2.win($remove($3,:)) Join to $hc($nocolon($3)) synched in $hc($rrpt($sub($ticks,%i2.jointime))) seconds.
      if ((%i2.chans == $null) && (%irc2.names == on)) {
        .timer 0 5 i2.updatenameslist
        set %i2.names.timer2 $ltimer
      }
      if ((%i2.chans) && ($nocolon($3) $+ $chr(160) !isin %i2.chans)) set %i2.chans %i2.chans $+ $nocolon($3) $+ $chr(160)
      elseif ($nocolon($3) $+ $chr(160) !isin %i2.chans) set %i2.chans $nocolon($3) $+ $chr(160)
      if (%irc2.names == on) {
 .timer 0 60 i2.quote names $nocolon($3)
      set [ $i2.var($nocolon($3),timer) ] $ltimer
}
    }
    else {
      i2.techo $nocolon($3) $c-c(join,*** Joins: [ $getnick($1) ( $+ [ $getadd($1) ] $+ ) ] )
      if (%irc2.names == on) aline $i2.nwin($nocolon($3)) $getnick($1)
    }
    halt
  }
  elseif ($2 == PART) {
    if ($getnick($1) == %i2.me) {
      if ($window($i2.win($3))) window -c $i2.win($3)
      if (%irc2.names == on) window -c $i2.nwin($3)
      set %i2.chans $remove(%i2.chans, [ [ $3 ] $+ [ $chr(160) ] ] )
      if ($remove(%i2.chans,$chr(160)) == $null) unset %i2.chans
      $timoff( [ [ $i2.var($3,timer) ] ] )
      unset [ $i2.var($nocolon($3),*) ]
      halt
    }
    i2.techo $3 $c-c(part,*** Parts: [ $getnick($1) ( $+ [ $getadd($1) ] $+ ) ] )
    if (%irc2.names == on) dline $i2.nwin($3) $i2.nickpos($3,$getnick($1))
  }
  elseif ($2 == NICK) {
    if ($getnick($1) == %i2.me) {
      set %i2.me $remove($3,:)
      set %i2.me.h $c-c(highlight, [ ( $+ [ %i2.me ] $+ ) ] )
      i2.supdate
      i2.wecho $getnick($1) $c-c(nick,*** [ $ac($getnick($1)) $c-c(nick,is now known as) $ac($nocolon($3)) ] )
    }
    else {
      if (%irc2.names == on) i2.wecho $getnick($1) $c-c(nick,*** [ $getnick($1) is now known as $nocolon($3) ] )
      else i2.aecho $c-c(nick,*** [ $getnick($1) is now known as $nocolon($3) ] )
    }
    halt
  }
  elseif ($2 == KICK) {
    if ($4 == %i2.me) {
      window -c $i2.win($3)
      if (%irc2.names == on) window -c $i2.nwin($3)
      i2.iecho KICK: You were kicked by $sc($getnick($1)) [ $+ $ac($gettext($5-)) $+ ] ( [ $+ [ $getadd($1) ]  $+ ] ) [ [ $+ [ $ac($nocolon($5-)) ] $+ ] ]
      i2.iecho To rejoin $sc($3) press $sc(F3) $+ .
      %i2.evt = i2.join $3
      set %i2.chans $remove(%i2.chans, [ [ $3 ] $+ [ $chr(160) ] ] )
      if ($remove(%i2.chans,$chr(160)) == $null) unset %i2.chans
      $timoff( [ [ $i2.var($3,timer) ] ] )
      unset [ $i2.var($3,*) ]
      halt
    }
    else {
      i2.techo $3 $c-c(kick,*** [ $4 was kicked by $getnick($1) ( $+ [ $gettext($5-) ] $+ ) ] )
      if (%irc2.names == on) dline $i2.nwin($3) $i2.nickpos($3,$4)
      halt
    }
  }
  elseif ($2 == INVITE) {
    i2.iecho INVITE: $sc($getnick($1)) ( $+ $ac($getadd($1)) $+ ) [ $+ $gettext($4-) $+ ]
    set %i2.evt i2.join $gettext($4-)
    i2.iecho To join $ac($gettext($4-)) press $sc(F3) $+ .
    tsound invite
    halt
  }
  elseif ($2 == TOPIC) {
    i2.techo $3 $c-c(topic,*** [ $getnick($1) changes topic to $chr(34) $+ [ $gettext($4-) ] $+ [ $chr(34) ] ] )
    set [ $i2.var($3,topic) ] $chr(34) $+ $gettext($4-) $+ $chr(34)
    i2.update $3
    halt
  }
  elseif ($2 == MODE) {
    if (((o isin $4) || (v isin $4-)) && (%irc2.names == on)) i2.modeupdate $3 $nocolon($4-)
    if (($5) && (k !isin $4)) {
      if ($left($4,1) == :) i2.techo $3 $c-c(mode,*** [ $getnick($1) sets mode: $right($4-,$sub($len($4-),1)) ] )
      else i2.techo $3 $c-c(mode,*** [ $getnick($1) sets mode: $nocolon($4-) ] )
    }
    elseif ($3 == %i2.me) {
      i2.mode %i2.me
      i2.aecho $c-c(mode,*** [ $getnick($1) sets mode: $nocolon($4-) ] )
    }
    else {
      if ($left($4,1) == :) i2.techo $3 $c-c(mode,*** [ $getnick($1) sets mode: $right($4-,$sub($len($4-),1)) ] )
      else i2.techo $3 $c-c(mode,*** [ $getnick($1) sets mode: $4- ] )
      i2.mode $3
    }
    halt
  }
  elseif ($2 == QUIT) {
    if (%irc2.names == on) {
      i2.wecho $getnick($1) $c-c(quit,*** Quits: [ $getnick($1) ( $+ [ $nocolon($3-) ] $+ ) ] )
      i2.updatechan $getnick($1)
    }
    else i2.aecho $c-c(quit,*** Quits: [ $getnick($1) ( $+ [ $nocolon($3-) ] $+ ) ] )
    halt
  }
  elseif ($1 == PING) { i2.quote PONG $2- | halt }
  elseif ($2 == 328) { halt }
  elseif ($2 == 352) {
    if (%i2.whochan == on) {
      inc %i2.who
      if (%i2.who == 1) i2.aecho .who of $hc($4) ----------------------------------------
      i2.aecho $chr(124) $fix(13,$hc($8)) ( $+ $5 $+ @ $+ $6 $+ )
      i2.aecho $chr(124) $str(-,9) is $sc($ca($9)) on $hc($7) ( $+ $sc($nocolon($10)) hops)
    }
  }
  elseif ($2 == 315) {
    i2.aecho `end of $hc($4) /WHO LIST. $str(29,-)
    unset %i2.whochan %i2.who
    halt
  }
  elseif ($2 == 302) {
    if (%i2.banc) {
      if ($4 == :) { unset %i2.ban* | i2.iecho $ac($3) is not on IRC. | halt }
      else { i2.mode %i2.banc +b $mask($replace($replace($gettext($4-),=+,!*),=-,!*),%i2.bann) | unset %i2.ban* | halt }
    }
    elseif (%i2.kb) {
      if ($4 == :) { unset %i2.kb* | i2.iecho $ac($3) is not on IRC. | halt }
      else { i2.quote kick %i2.kbchan %i2.kb %i2.kbr | i2.mode %i2.kbchan +b $mask($replace($replace($gettext($4-),=+,!*),=-,!*),1) | unset %i2.kb* | halt }
    }
    elseif (%i2.bk) {
      if ($4 == :) { unset %i2.bk* | i2.iecho $ac($3) is not on IRC. | halt }
      else { i2.mode %i2.bkchan +b $mask($replace($replace($gettext($4-),=+,!*),=-,!*),1) | i2.quote kick %i2.bkchan %i2.bk %i2.bkr | unset %i2.bk* | halt }
    }
    else halt
  }
  elseif ($2 == 432) { i2.iecho Erroneous nickname, please try again. | halt }
  elseif ($2 == 436) { i2.iecho Nickname Collision! | relay nick %i2.me $+ - | halt }
  elseif ($2 == 443) { i2.iecho $sc($4) is already on $sc($5) $+ . | halt }
  elseif ($2 == 471) { i2.iecho Cannot join channel $sc($4) (Its full) | halt }
  elseif ($2 == 473) { i2.iecho Cannot join channel $sc($4) (Invite only) | halt }
  elseif ($2 == 474) { i2.iecho Cannot join channel $sc($4) (Banned) | halt }
  elseif ($2 == 475) { i2.iecho Cannot join channel $sc($4) (Requires the correct key) | halt }
  elseif ($2 == 305) { i2.iecho You are no longer marked as being away. | set %i2.away off | tsound back | halt }
  elseif ($2 == 306) { i2.iecho You have been marked as being away. | set %i2.away on | tsound away | halt }
  elseif ($2 == 433) { i2.iecho Nickname $hc($4) is already in use. | editbox $active /nick  | halt }
  elseif ($2 == 482) { i2.iecho You're not a channel operator. ( $+ $sc($4) $+ ) | halt }
  elseif ($2 == 324) { set [ $i2.var($4,mode) ] $5- | i2.update $4 }
  elseif ($2 == 421) { i2.iecho $upper($4) is not a known command. }
  elseif (($2 == 221) && ($3 == %i2.me)) { set %i2.umode $4 | i2.supdate }
  elseif ($2 == 401) { i2.iecho $hc($4) is not on IRC. | halt }
  elseif ($2 == 332) {
    i2.techo $4 $chr(160) . $+ $str(-,55) $+ .
    i2.techo $4 $chr(160) $chr(124) $sc(Topic) $+ : $fix(46,$wrap(1,46,$strip($gettext($5-)))) $chr(124)
    set %wrap.topic %wrap.pos
    if (%wrap.topic < $len($strip($gettext($5-)))) {
      :loop
      i2.techo $4 $chr(160) $chr(124) $+ $str($chr(160),4) $+ $fix(51,$wrap($pls(%wrap.topic,1),50,$strip($gettext($5-)))) $+ $chr(124)
      set %wrap.topic $pls(%wrap.topic,%wrap.pos)
      if (%wrap.topic < $len($strip($gettext($5-)))) goto loop
    }
    unset %wrap.*
    set [ $i2.var($4,topic) ] $gettext($5-)
    halt
  }
  elseif ($2 == 333) { i2.techo $4 $chr(160) $chr(124) $hc(SetBy) $+ : $c-c(highlight, [ $fix(10,$5) $fix(35,$asctime($6)) $chr(124) ] ) | i2.mode $4 | halt }
  elseif ($2 == 353) {
    inc %jstat.num
    if (%i2.namechan) {
      if (%jstat.num == 1) {
        i2.techo $5 $chr(160) . $+ $str(-,55) $+ .
        if ($pls(1,$count($6-,$chr(32))) < 10) i2.techo $5 $chr(160) $chr(124) Names [ $+ $hc($5) $+ : $sc($pls(1,$count($6-,$chr(32)))) $+ $chr(93) $fix($sub(41,$len($5)), ) $chr(124)
        else i2.techo $5 $chr(160) $chr(124) Names [ $+ $hc($5) $+ : $+ $sc($pls(1,$count($6-,$chr(32)))) $+ $chr(93) $fix($sub(41,$len($5)), ) $chr(124)
        if (%irc2.names == on) dline $i2.nwin($5) [ 1- $+ [ $i2.numnicks($5) ] ]
        if (%irc2.names == on) i2.addnicks $5 $nocolon($6-)
      }
      else {
        i2.techo $5 $chr(160) . $+ $str(-,55) $+ .
        if ($pls(1,$count($6-,$chr(32))) < 10) i2.techo $5 $chr(160) $chr(124) Next [ $+ $hc($5) $+ : $sc($pls(1,$count($6-,$chr(32)))) $+ $chr(93) $fix($sub(42,$len($5)), ) $chr(124)
        else i2.techo $5 $chr(160) $chr(124) Next [ $+ $hc($5) $+ : $+ $sc($pls(1,$count($6-,$chr(32)))) $+ $chr(93) $fix($sub(42,$len($5)), ) $chr(124)
        if (%irc2.names == on) i2.addnicks $5 $nocolon($6-)
      }
      i2.a.line $5 $remove($6-,:)
      halt
    }
    elseif ((%jstat.num == 1) && (%irc2.names == on) && ($window($i2.nwin($5)))) {
      dline $i2.nwin($5) [ 1- $+ [ $i2.numnicks($5) ] ]
      i2.addnicks $5 $nocolon($6-)
      halt
    }
    elseif ((%irc2.names == on) && ($window($i2.nwin($5)))) { i2.addnicks $5 $nocolon($6-) | halt }
  }
  elseif ($2 == 366) { unset %jstat.num %i2.namechan | halt }
  elseif ($2 == 311) {
    set %i2.whois on
    i2.aecho   $+ $pc(____________) $+ $sc(___________) $+ $sc(______) $+ $sc(__ __ _ _)
    i2.aecho $chr(124)  $+ $hc($4) ( $+ [ [ $5 ] $+ [ $hc($chr(64)) ] $+ [ $6 ] ] $+ )
    i2.aecho $chr(124) $hc(name) $+ : $gettext($8-)
    halt
  }
  elseif ($2 == 319) { i2.aecho $chr(124) $hc(chan) $+ : $gettext($5-) | halt }
  elseif ($2 == 312) { i2.aecho $chr(124) $hc(serv) $+ : $5 | halt }
  elseif ($2 == 301) { i2.aecho $chr(124) $hc(away) $+ : $gettext($5-) | halt }
  elseif ($2 == 317) { i2.aecho $chr(124) $hc(idle) $+ : $duration($5) | halt }
  elseif ($2 == 318) {
    if (%i2.whois) {
      i2.aecho   $+ $pc(¯¯¯¯¯¯¯¯¯¯¯¯) $+ $sc(¯¯¯¯¯¯¯¯¯¯¯) $+ $sc( ¯¯¯¯¯¯) $+ $sc(¯¯ ¯¯ ¯ ¯)
      unset %i2.whois
    }
    halt
  }
  elseif ($2 == 437) { i2.iecho $nocolon($4-) }
  else { halt }
}