Channel limiter

alias _ml {
  unset %m.l.*
  var %n = 0
  while (%n != $chan(0)) {
    inc %n
    if ($me isop $chan(%n)) {
      set %m.l. [ $+ [ $chan(%n) ] ] $calc($nick($chan(%n),0) +10)
      raw -q mode $chan(%n) +l %m.l. [ $+ [ $chan(%n) ] ]
    }
  }
}
on *:join:#: {
  if ($nick(#,0) == %m.l. [ $+ [ # ] ]) && ($me isop #) {
    inc %m.l. [ $+ [ # ] ] 10
    timer 1 10 mode # +l %m.l. [ $+ [ # ] ]
  }
}
on *:part:#: {
  if ($nick(#,0) < $calc(%m.l. [ $+ [ # ] ] -10)) && ($me isop #) {
    dec %m.l. [ $+ [ # ] ] 10
    timer 1 10 mode # +l %m.l. [ $+ [ # ] ]
  }
}
on *:quit: {
  var %c.c = 0
  while (%c.c != $comchan($nick,0)) {
    inc %c.c
    if ($nick($comchan($nick,%c.c),0) < $calc(%m.l. [ $+ [ $comchan($nick,%c.c) ] ] -10)) && ($me isop $comchan($nick,%c.c)) {
      dec %m.l. [ $+ [ $comchan($nick,%c.c) ] ] 10
      timer 1 10 mode $comchan($nick,%c.c) +l %m.l. [ $+ [ $comchan($nick,%c.c) ] ]
    }
  }
}