Here's a relatively simple alias that (hopefully) satisfies all your conditions except (c):
Code:
alias wildcolor {
  var %2 = $2, %c1 = 03, %c2 = 04
  tokenize 64 $1
  var %host = $2, %nick = $gettok($1,1,33), %user = $gettok($1,2,33)
  tokenize 64 $replace(%2,\,\\,^,\^,$,\$,.,\.,[,\[,|,\|,+,\+,$chr(123),\ $+ $chr(123),?,(.),*,(.*?)) 
  var %a = $regex(a,%host,$+(/^,$2,$!/i)), $& 
    %b = $regex(b,%nick,$+(/^,$gettok($1,1,33),$!/i)), $&
    %c = $regex(c,%user,$+(/^,$gettok($1,2,33),$!/i))
  tokenize 64 %2
  if (%a) %host = $+(,%c2,$regsubex($2,/[*?]/g,$+(,%c1,$regml(a,\n),,%c2)),)
  if (%b) %nick = $+(,%c2,$regsubex($gettok($1,1,33),/[*?]/g,$+(,%c1,$regml(b,\n),,%c2)),)
  if (%c) %user = $+(,%c2,$regsubex($gettok($1,2,33),/[*?]/g,$+(,%c1,$regml(c,\n),,%c2)),)
  return $replace($+(%nick,!,%user,@,%host),$+(,%c1,),,$+(,%c2,),)
}
Usage is $wildcolor(full address, wildcard mask). You can change %c1 and %c2 at the top with whatever colour codes you want (just make sure they are zeropadded).

Regarding (c), I'm not sure I get the logic or the exact way it's intended to work, but it looks like it can't be easily incorporated to this alias. If you explain it a little more, I (or others) may be able to help.


/.timerQ 1 0 echo /.timerQ 1 0 $timer(Q).com