ON $*:TEXT:/^[!@.]\dv\b/i:#:{ if ($2 == $null) && ($address($nick,2) == $address($me,2)) { mode $chan -v $nick } else { if ($2 != $null) && ($nick ishop $chan) || ($nick isop $chan) || ($address($nick,2) == $address($me,2)) { mode $chan -v $2 } } } ON $*:TEXT:/^[!@.]\dh\b/i:#:{ if ($2 == $null) && ($address($nick,2) == $address($me,2)) { mode $chan -h $nick } else { if ($2 != $null) && ($nick isop $chan) || ($address($nick,2) == $address($me,2)) { mode $chan -h $2 } } } ON $*:TEXT:/^[!@.]\do\b/i:#:{ if ($2 == $null) && ($address($nick,2) == $address($me,2)) { mode $chan -o $nick } else { if ($2 != $null) && ($nick isop $chan) || ($address($nick,2) == $address($me,2)) { mode $chan -o $2 } } } ON $*:TEXT:/^[!@.]\v\b/i:#:{ if ($2 == $null) && ($address($nick,2) == $address($me,2)) { mode $chan +v $nick } else { if ($2 != $null) && ($nick ishop $chan) || ($nick isvo $chan) || ($nick isop $chan) || ($address($nick,2) == $address($me,2)) { mode $chan +v $2 } } } ON $*:TEXT:/^[!@.]\h\b/i:#:{ if ($2 == $null) && ($address($nick,2) == $address($me,2)) { mode $chan +h $nick } else { if ($2 != $null) && ($nick ishop $chan) || ($nick isop $chan) || ($address($nick,2) == $address($me,2)) { mode $chan +h $2 } } } ON $*:TEXT:/^[!@.]\o\b/i:#:{ if ($2 == $null) && ($address($nick,2) == $address($me,2)) { mode $chan +o $nick } else { if ($2 != $null) && ($nick isop $chan) || ($address($nick,2) == $address($me,2)) { mode $chan +o $2 } } } the !dv/!dh/!dv does not work for $null or other people