ok ive got a snippet here from my nicklist that just wont work when someone parts yet it works perfectly on any other on join op deop and whatnot i cant seem to figure out why ... i added an echo line into it to status to know infact it is triggering but its not giving me an error

Code:
on *:PART:#: {
  %sn = 1
  if $nick($chan($active),%sn,a) isreg $chan($active) { did -ra _nicklist 1 0 + 1 0 0 $nick($chan($active),%sn,a) }
  if $nick($chan($active),%sn,a) isop $chan($active) { did -ra _nicklist 1 0 + 2 0 0 $nick($chan($active),%sn,a) }
  if $nick($chan($active),%sn,a) ishop $chan($active) { did -ra _nicklist 1 0 + 3 0 0 $nick($chan($active),%sn,a) }
  if $nick($chan($active),%sn,a) isvoice $chan($active) { did -ra _nicklist 1 0 + 4 0 0 $nick($chan($active),%sn,a) }
  if $nick($chan($active),%sn,a) isowner $chan($active) { did -ra _nicklist 1 0 + 5 0 0 $nick($chan($active),%sn,a) }
  %sn = 2
  while ( $nick($chan($active),%sn,a) != $null ) {
    if $nick($chan($active),%sn,a) isreg $chan($active) { did -a _nicklist 1 0 + 1 0 0 $nick($chan($active),%sn,a) }
    if $nick($chan($active),%sn,a) isop $chan($active) { did -a _nicklist 1 0 + 2 0 0 $nick($chan($active),%sn,a) }
    if $nick($chan($active),%sn,a) ishop $chan($active) { did -a _nicklist 1 0 + 3 0 0 $nick($chan($active),%sn,a) }
    if $nick($chan($active),%sn,a) isvoice $chan($active) { did -a _nicklist 1 0 + 4 0 0 $nick($chan($active),%sn,a) }
    if $nick($chan($active),%sn,a) isowner $chan($active) { did -a _nicklist 1 0 + 5 0 0 $nick($chan($active),%sn,a) }
    inc %sn
  }
}


its kinda weird as hell that it just doesnt work on a part yet works perfectly thru join when the help file says its supposed to use the same variables??? anyhow again id appreciate any help in this ..... and ill go thru my scripts to make sure there isnt something else stopping it


D3m0nnet.com