alias acc.num {
  if ($1 ischan) {
    if ($2 ison $1) {
      var %pre = $remove($nick($1,$2).pnick,$2)
      ; 0 = Reg; 1 = Voice; 2 = HOp; 3 = Op; 4 = SOp; 5 = Founder
      if ($prop == pre) return %pre
      if ($prop == p) return $left(%pre,1)
      if (~ isin %pre) || ($1 isowner $2) return 5
      elseif (& isin %pre) return 4
      elseif (@ isin %pre) || ($1 isop $2) return 3
      elseif (% isin %pre) || ($1 ishop $2) return 2
      elseif (+ isin %pre) || ($1 isvo $2) return 1
      else return 0
    }
  }
}
alias op {
  if ($1 ischan) var %c $1,%t = $2
  elseif ($active ischan) var %c $active,%t = $iif($left($1,1) != $chr(35) && !$2,$1)
  if (%c) && (%t) {
    if (%t ison %c) {
      var %m.value = $acc.num(%c,$me),%t.value = $acc.num(%c,%t)
      if (%m.value >= 3) || (o isincs $usermode) {
        if (@ !isin $acc.num(%c,%t).pre) {
          mode %c +o %t
        }
        else return Error, %t is already Op
      }
      else return Error, insufficient status
    }
    else return Error, %t isn't on %c
  }
  else return Error, invalid sytanx; /op [#channel] <nickname>
}
alias deop {
  if ($1 ischan) var %c $1,%t = $2
  elseif ($active ischan) var %c $active,%t = $iif($left($1,1) != $chr(35) && !$2,$1)
  if (%c) && (%t) {
    if (%t ison %c) {
      var %m.value = $acc.num(%c,$me),%t.value = $acc.num(%c,%t)
      if (%m.value >= 3) || (o isincs $usermode) {
        if (@ isin $acc.num(%c,%t).pre) {
          mode %c -o %t
        }
        else return Error, %t is not Op
      }
      else return Error, insufficient status
    }
    else return Error, %t isn't on %c
  }
  else return Error, invalid sytanx; /deop [#channel] <nickname>
}
alias _hop {
  if ($1 ischan) var %c $1,%t = $2
  elseif ($active ischan) var %c $active,%t = $iif($left($1,1) != $chr(35) && !$2,$1)
  if (%c) && (%t) {
    if (%t ison %c) {
      var %m.value = $acc.num(%c,$me),%t.value = $acc.num(%c,%t)
      if (%m.value >= 3) || (o isincs $usermode) {
        if (% !isin $acc.num(%c,%t).pre) {
          mode %c +h %t
        }
        else return Error, %t is already HOp
      }
      else return Error, insufficient status
    }
    else return Error, %t isn't on %c
  }
  else return Error, invalid sytanx; /_hop [#channel] <nickname>
}
alias dehop {
  if ($1 ischan) var %c $1,%t = $2
  elseif ($active ischan) var %c $active,%t = $iif($left($1,1) != $chr(35) && !$2,$1)
  if (%c) && (%t) {
    if (%t ison %c) {
      var %m.value = $acc.num(%c,$me),%t.value = $acc.num(%c,%t)
      if (%m.value >= 3) || (o isincs $usermode) {
        if (% isin $acc.num(%c,%t).pre) {
          mode %c -h %t
        }
        else return Error, %t is not HOp
      }
      else return Error, insufficient status
    }
    else return Error, %t isn't on %c
  }
  else return Error, invalid sytanx; /dehop [#channel] <nickname>
}
alias vop {
  if ($1 ischan) var %c $1,%t = $2
  elseif ($active ischan) var %c $active,%t = $iif($left($1,1) != $chr(35) && !$2,$1)
  if (%c) && (%t) {
    if (%t ison %c) {
      var %m.value = $acc.num(%c,$me),%t.value = $acc.num(%c,%t)
      if (%m.value >= 2) || (o isincs $usermode) {
        if (+ !isin $acc.num(%c,%t).pre) {
          mode %c +v %t
        }
        else return Error, %t is already VOp
      }
      else return Error, insufficient status
    }
    else return Error, %t isn't on %c
  }
  else return Error, invalid sytanx; /vop [#channel] <nickname>
}
alias devop {
  if ($1 ischan) var %c = $1,%t = $2
  elseif ($active ischan) var %c = $active,%t = $iif($left($1,1) != $chr(35) && !$2,$1)
  echo -a %c : %t
  if (%c) && (%t ison %c) {
    var %m.value = $acc.num(%c,$me),%t.value = $acc.num(%c,%t)
    if (%m.value >= 2) || (o isincs $usermode) {
      if (+ isin $acc.num(%c,%t).pre) {
        mode %c -v %t
      }
      else return Error, %t is not VOp
    }
    else return Error, insufficient status
  }
  else return Error, $iif(%t && %c,%t is not on %c,invalid syntax) $+ ; /devop [#channel] <nickname>
}
alias iecho echo $color(info) $1-
alias call {
  if (!%call.isalias) set %call.isalias 1
  if (!%call.delay) set %call.delay 1
  if ($left($1,1) == -) var %s = $right($1,-1)
  if (o isincs %s) {
    if ($2 == isalias) { set %call.isalias $iif($3 == 1,1,0) | iecho -a /call options: set ISALIAS warnings $iif($3,ON,OFF) }
    elseif ($2 == delay) { set %call.delay $iif($3 isnum 0-5,$3,1) | iecho -a /call options: set DELAY to %call.delay $+ s }
    elseif ($2 == view) iecho -a /call options > view: "isalias" Warning system: $iif(%call.isalias,On,Off) $+ $chr(59) Command Delay: $+(%call.delay,s) 
    else iecho -a /call options > info: ISALIAS=1/0,DELAY=0-5; syntax: /call -o <option> <value>

  }
  elseif (h isincs %s) {
    iecho -a /call help: Options: /call -o <info|isalias|delay|view> [value] $+ $chr(59) /call <command>[;<command2>] - Use the semi-colon- $qt($chr(59)) -to separate commands
  }
  else {
    if (!%call.progress) {
      var %t = $iif($numtok($1-,59) <= 5,$numtok($1-,59),5),%n = 1
      set $+(-u,%t) %call.progress $true
      while (%n <= %t) {
        var %string = $gettok($1-,%n,59)
        var %get1 = $remove($gettok(%string,1,32),/,$chr(36))
        if ($isalias(%get1)) var %conf = $true
        if (!%conf) { 
          if (%call.isalias) {
            var %yn = $input(No alias found for $crlf $qt($+(/,%get1)) $+ $chr(44) continue?,yw,/CALL $upper(%get1))
            if (!%yn) return 
          }
        } 
        .timercall. $+ %get1 $+ . $+ $r(10,99) 1 $calc((%n + %call.delay) - 1) %string
        inc %n
      }
      ; .timercall.finish 1 %t iecho -a /call: Finished executing $calc(%n -1) command(s)
    }
    else iecho -a Error, /call already in progress...
  }
  ; else iecho -a Error, invalid parameters. Use /CALL -h for help
}
