I am currently using this alias :

Code:
alias -l _cnick {
  var %j $cnick(0),%i 0,%p $nick($2,$1).pnick
  while (%i < %j) {
    inc %i
    if ($cnick(%i).method == 2) continue
    if (($cnick(%i) != $null) && ($v1 !iswm $1)) continue
    if ($2) {
      if (($cnick(%i).modes != $null) && (!$regex(%p,$+(^[,$_regfix($v1),]+.*$)))) continue
      if (($cnick(%i).anymode) && (!$cnick(%i).nomode) && (%p == $1)) continue
      if (($cnick(%i).nomode) && (!$cnick(%i).anymode) && (%p != $1)) continue
      ;The Idle-Setting seems to be crap since idle=0 when a new message appears
      ;I will have to think about that option again
      if (($cnick(%i).idle) && ($calc($nick($2,$1).idle / 60) < $v1)) continue
    }
    else return $_ddcolor($iif($cnick(%i).color != $color(normal),$+(,$v1,$1,),$1))
    return $_ddcolor($iif($cnick(%i).color != $color(normal),$+(,$v1),))
  }
  if (!$2) return $1
}
  


Usage : $_cnick(Nick,[#Chan])
It is not the perfect Solution but it works on my theme Engine quite well. You may also look at it @ mirc.net