; --------------------------
; BELOW ALIASES CAN BE EDITED
; -
alias save.serv.set return $true

alias update.raw05 return $true

alias log.keys return $true

alias del.bad.keys return $false

alias quit.for.ident return $iif(%quit.for.ident,$v1,$false)
; -
; ABOVE ALIASES CAN BE EDITED 
; --------------------------

; Version information
alias hb.auth return Pass
alias hb.@uth return Klash240@gmail.com
alias hb.ver return 13.3.7 beta
; /Version information

alias whilefix dll dlls\WhileFix.dll WhileFix .

raw 5:*:{ 
  if (!$hget($network)) on.con $network
  if (($hget($network,UPDATE)) || ($update.raw05)) {
    var %cmds = $wildtok($1-,CMD?*,1,32),%cmds = $gettok(%cmds,2,61)
    if ($istok(%cmds,KNOCK,44)) hadd $network CHANNEL_KNOCK $true

    var %mlist = $wildtok($1-,MAXLIST?*,1,32),%mlist = $gettok(%mlist,2,61)
    if ($wildtok(%mlist,b:*,1,44)) hadd $network CHANNEL_BMAX $v1
    if ($wildtok(%mlist,e:*,1,44)) hadd $network CHANNEL_EMAX $v1
    if ($wildtok(%mlist,i:*,1,44)) hadd $network CHANNEL_IMAX $v1
    hadd $network UPDATE_RAW05 $false
  }
}
raw 475:*:{
  if ($hget($network,$+($2,.,keys))) {
    var %keys = $v1
    if ($($+(%,$2,.key),2) == $null) && ($numtok(%keys,32)) set -u20 $+(%,$2,.key) 1   
    var %key = $gettok(%keys,$($+(%,$2,.key),2),32)
    if (%key) {
      join $2 %key
    }
    inc $+(%,$2,.key)
    set -u5 $+(%,$2,.bjc) $true
  }
}
raw 474:*:{
  if ($hget($network,$+($2,.,ban))) {
    var %s = $v1
    if (%s isin 234) {
      if (%s isin 24) identd on $r(a,Z) $+ $r(a,Z) $+ $r(a,Z) $+ $r(1000,9999)
      if ($quit.for.ident) { 
        quit
        server    
      }
      if (%s isin 34) {
        ;
        if ($+(%,$1,.bjc)) { return }
        else { 
          ;
          if ($form.nick) var %nick = $v1
          if (!%nick) var %nick = $r(a,z) $+ $r(1000,9999) 
          nick %nick
          ;
        }   
        ;
      }
      .timer 1 2 join $2
      set -u5 $+(%,$1,.bjc) $true
    }
  }
}
raw 473:*:if ($hget($network,CHANNEL_KNOCK)) knock $2 let me in
on *:connect:{
  on.con $network
  write log.txt A6 $ctime $network
}
on *:disconnect:{
  save.set $network -x
  write log.txt A7 $ctime $network
}
on *:exit:{
  if ($hget(log)) hsave log logs.txt
}
alias on.con {
  if ($hget($1)) save.set $1 -x
  hmake $1
  if ($isfile($+(servers\,$1,.hsh))) hload $1 $+(servers\,$1,.hsh)
  else hadd $1 UPDATE_RAW05 $true
}
alias save.set {
  if ($hget($1)) {
    if ($save.serv.set) {
      if (!$isdir(servers)) mkdir servers
      ; hsave -o $1 $+(servers\,$1,.hsh) 
    }
    if ($2 === -x) hfree $1
  }
}
on *:RAWMODE:#:{
  var %s = $left($1,1),%switches = $right($1,-1)
  if (k isincs %switches) {
    if ($log.keys) {
      var %key = $2
      hadd $network $+($chan,.,keys) $addtok($hget($network,$+($chan,.,keys)),%key,32)
      if (!$read(keys.txt,s,%key)) write keys.txt %key
    }
  }
}
on *:ban:#:{
  update.bl $chan
}
on *:unban:#:{
  update.bl $chan
}
on *:join:#:{
  if ($nick == $me) {
    update.bl $chan
    if ($hget($+(%,$2,.bjc))) write log.txt A2 $ctime $chan
  }
}
alias update.bl {
  if ($1) {
    var %n = 1 
    while (%n <= $ibl($chan,0)) {
      whilefix
      var %banmask = $ibl($1,%n)
      if (%banmask iswm $address($me,5)) {
        if (! isin %banmask) {
          var %bident1 = $gettok(%banmask,2,33),%bident2 = $gettok(%bident1,1,64)
          var %ident1 = $gettok($address($me,5),2,33),%ident2 = $gettok(%ident1,1,64)
          var %bnick = $gettok(%banmask,1,33),%nick = $me
          if (%bident2 isin %ident2) {
            hadd $network $+($1,.,ban) 2
            var %ident = $true
          }
          if (%bnick isin %nick) || (%bnick iswm %nick) {
            if (%ident) hadd $network $+($1,.,ban) 4
            else hadd $network $+($1,.,ban) 3
          }
          else hadd $network $+($1,.,ban) 1
        }
        else hadd $network $+($1,.,ban) 1
        return
      }
      inc %n
    }
    hadd $network $+($1,.,ban) 0

  }
}
alias form.nick {
  ; A = ALPHA, N = NUMBER, S = SYMBOL

  if ($ini(nicknames.ini,nicks,$1)) var %nick = $1
  else {
    var %n = $r(1,$ini(nicknames.ini,nicks,0))
    var %nick = $ini(nicknames.ini,nicks,%n)
  }
  if (%nick) {
    var %symbols = $chr(91) $chr(93) $chr(94) $chr(45) $chr(95) $chr(57) $chr(52) $chr($asc(\))
    var %s = $readini(nicknames.ini,nicks,%nick),%left,%right
    if ($istok(%s,A,44)) var %l = $r(0,1),%r = $r(0,1),%left = %left $+ $iif(%l,$r(A,Z),$r(a,z)),%right = %right $+ $iif(%r,$r(A,Z),$r(a,z))
    if ($istok(%s,N,44)) var %left = %left $+ $r(0,9),%right = %right $+ $r(0,9)  
    if (I isincs %s) var %i = $wildtok(%s,I:*,1,44),%ident = $gettok(%i,2,58)
    if ($istok(%s,S,44)) { 
      var %left = %left $+ $gettok(%symbols,$r(1,$numtok(%symbols,32)),32)
      var %right = %right $+ $gettok(%symbols,$r(1,$numtok(%symbols,32)),32)
    }
    var %nick = %left $+ %nick $+ %right
    return %nick %ident
  }
}
on *:NICK:{
  ;           hadd -m actions on.nick.event MSG $nick $me
  if ($nick == $me) {
    write log.txt A1 $ctime $nick $newnick
    if ($hget(actions,on.nick.event)) {
      var %v = $v1
      if ($gettok(%v,1,32) = MSG) { 
        var %to = $gettok(%v,2,32),%n = $gettok(%v,3,32)
        _msg %to Successfully changed nick from ( $+ %n $+ )
        hdel actions on.nick.event
      }
    }
  }
}

raw 432:*:{
  if ($hget(actions,on.nick.event)) {
    var %v = $v1
    if ($gettok(%v,1,32) = MSG) { 
      var %to = $gettok(%v,2,32),%n = $gettok(%v,3,32)
      _msg %to Error: $2 $+ : $3-
      hdel actions on.nick.event
    }
  }
}

raw 438:*:{
  if ($hget(actions,on.nick.event)) {
    var %v = $v1
    if ($gettok(%v,1,32) = MSG) { 
      var %to = $gettok(%v,2,32),%n = $gettok(%v,3,32)
      if ($9 isnum) { 
        _msg %to Error: Attempting to change nick in $9 seconds
        .timer 1 $9 nick $2
      }
      else _msg %to Error: $2 $+ : $3-
      hdel actions on.nick.event
    }
  }
}
