alias -l zagcolor.nick {
  if ($2) {
    if ($zag.get(zagcolor,status)) {
      if ($2 == $me && $zag.get(zagcolor,dome)) { cline $zag.get(zagcolor,me) $1 $nick($1,$2) }
      elseif ($2 isop $1 && $zag.get(zagcolor,doops)) { cline $zag.get(zagcolor,ops) $1 $nick($1,$2) }
      elseif ($2 isvo $1 && $zag.get(zagcolor,dovoice)) { cline $zag.get(zagcolor,voice) $1 $nick($1,$2) }
      elseif ($zag.get(zagcolor,doreg)) { cline $zag.get(zagcolor,reg) $1 $nick($1,$2) }
      else { cline $colour(listbox text) $1 $nick($1,$2) }
    }
  }
}
alias -l zagcolor.chan {
  if ($1) {
    var %zagcolor.chan.max = $nick($1,0), %zagcolor.chan.loop = 0
    :loop
    inc %zagcolor.chan.loop
    zagcolor.nick $1 $nick($1,%zagcolor.chan.loop)
    if (%zagcolor.chan.loop < %zagcolor.chan.max) { goto loop }
  }
}
alias -l zagcolor.chans {
  var %zagcolor.chans.max = $chan(0), %zagcolor.chans.loop = 0
  :loop
  inc %zagcolor.chans.loop
  zagcolor.chan $chan(%zagcolor.chans.loop)
  if (%zagcolor.chans.loop < %zagcolor.chans.max) { goto loop }
}

alias -l zagcolor.retname goto $1 | :3 | return doops | :4 | return dovoice | :5 | return doreg | :6 | return dome | :7 | return ops | :8 | return voice | :9 | return reg | :10 | return me | :11 | return


dialog zagcolor.setup {
  title %nbcrack
  size -1 -1 417 240
  box "Setup", 1, 2 30 193 120
  box "Setup", 24, 210 30 205 120
  box "Setup", 25, 105 150 200 44
  check "Enable nicklist coloring", 2, 140 5 140 20
  check "Op (@):", 3, 15 60 70 20
  check "Voice (+):", 4, 220 60 70 20
  check "Regular:", 5, 15 99 70 20
  check "Your nick:", 6, 220 99 70 20
  text "Background:", 12, 120 168 70 20
  combo 7, 85 60 102 100, drop
  combo 8, 300 60 102 100, drop
  combo 9, 85 99 102 100, drop
  combo 10, 300 99 102 100, drop
  combo 11, 190 165 102 100, drop
  button "OK", 21, 210 215 60 20, ok default
  button "Cancel", 22, 280 215 60 20, Cancel
  button "Apply", 23, 350 215 60 20
  text "Made By You-And-I", 26, 17 214 100 20
  box "About", 27, 10 200 110 33
}

on *:CONNECT: .events on | $zag.reg(Nicklist Colourer,1.01) | set %nbcrack Nick list Colour - Setup -=|-You-And-I-|=-
on *:DEVOICE:#: updatenl | zagcolor.nick $chan $vnick
on *:JOIN:#: zagcolor.nick # $nick
on *:DISCONNECT: unset %zag.using
on *:DEOP:#: updatenl | zagcolor.nick $chan $opnick
on *:OP:#: updatenl | zagcolor.nick # $opnick
on *:SERVERDEOP:#: updatenl | zagcolor.nick # $opnick
raw 366:*: updatenl | if ($me ison $2) { zagcolor.chan $2 }
on *:VOICE:#: updatenl | zagcolor.nick # $vnick
on *:SERVEROP:#: updatenl | zagcolor.nick # $opnick
on *:DIALOG:zagcolor:init:0: {
  did - $+ $iif($zag.get(zagcolor,status),c,u) zagcolor 2 
  var %zagcolor.i = 3
  :loop_do
  var %zagcolor.temp = $zag.get(zagcolor,$zagcolor.retname(%zagcolor.i))
  did - $+ $iif(%zagcolor.temp,c,u) zagcolor %zagcolor.i
  did - $+ $iif($did(2).state,e,b) zagcolor %zagcolor.i
  if (%zagcolor.i < 6) { inc %zagcolor.i | goto loop_do }
  var %zagcolor.i = 7
  :loop
  did -a zagcolor %zagcolor.i 0 - White
  did -a zagcolor %zagcolor.i 1 - Black
  did -a zagcolor %zagcolor.i 2 - Blue
  did -a zagcolor %zagcolor.i 3 - Green
  did -a zagcolor %zagcolor.i 4 - Lightred
  did -a zagcolor %zagcolor.i 5 - Brown
  did -a zagcolor %zagcolor.i 6 - Purple
  did -a zagcolor %zagcolor.i 7 - Orange
  did -a zagcolor %zagcolor.i 8 - Yellow
  did -a zagcolor %zagcolor.i 9 - Lightgreen
  did -a zagcolor %zagcolor.i 10 - Cyan
  did -a zagcolor %zagcolor.i 11 - Lightcyan
  did -a zagcolor %zagcolor.i 12 - Lightblue
  did -a zagcolor %zagcolor.i 13 - Pink
  did -a zagcolor %zagcolor.i 14 - Grey
  did -a zagcolor %zagcolor.i 15 - Lightgrey
  var %zagcolor.temp = $zag.get(zagcolor,$zagcolor.retname(%zagcolor.i))
  did -c zagcolor %zagcolor.i $iif(%zagcolor.temp isnum,$calc(%zagcolor.temp + 1),1)
  if (%zagcolor.i < 11) { inc %zagcolor.i | goto loop }
  did -c zagcolor %zagcolor.i $calc($colour(listbox) + 1)
}
menu menubar,status {
  Nick list Colour
  .-
  .$iif(#,Update [ # ] ): { zagcolor.chan # }
  .$iif($chan(0),Update all): { zagcolor.chans }
  .-
  .Setup Colourer: { $dialog(zagcolor,zagcolor.setup,-2) }

}
on *:DIALOG:zagcolor:sclick:21,23: {
  zag.set zagcolor status $did(2).state
  var %zagcolor.i = 3
  :loop_do
  zag.set zagcolor $zagcolor.retname(%zagcolor.i) $did(%zagcolor.i).state
  if (%zagcolor.i < 6) { inc %zagcolor.i | goto loop_do }
  var %zagcolor.i = 7
  :loop
  zag.set zagcolor $zagcolor.retname(%zagcolor.i) $calc($did(%zagcolor.i).sel - 1)
  if (%zagcolor.i < 10) { inc %zagcolor.i | goto loop }
  colour listbox $calc($did(11).sel - 1)
  if ($did == 21) { dialog -x zagcolor }
  zagcolor.chans
}

alias -l zag.get return $readini -n nickcol.ini $1 $$2
alias -l zag.lp return $iif($isalias(zagt.lp),$zagt.lp,***)
alias -l zag.set $iif($3 != $null,writeini,remini) NICKCOL.ini $$1-

on *:DIALOG:zagcolor:sclick:2: {
  var %zagcolor.i = 3
  :loop
  did - $+ $iif($did(2).state,e,b) zagcolor %zagcolor.i
  if (%zagcolor.i < 6) { inc %zagcolor.i | goto loop }
}
